module Drasil.GamePhysics.Goals (goals, linearGS, angularGS) where

import Language.Drasil

import Data.Drasil.Concepts.Documentation (goalStmtDom)
import Data.Drasil.Concepts.Physics (time)

import Drasil.GamePhysics.Unitals (inputSymbols, outputSymbols)

goals :: [ConceptInstance]
goals :: [ConceptInstance]
goals = [ConceptInstance
linearGS, ConceptInstance
angularGS]

linearGS :: ConceptInstance
linearGS :: ConceptInstance
linearGS = String -> Sentence -> String -> ConceptChunk -> ConceptInstance
forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic "linearGS" ([QuantityDict] -> Sentence -> Sentence -> Sentence
forall a. NamedIdea a => [a] -> Sentence -> Sentence -> Sentence
goalStatementStruct (Int -> [QuantityDict] -> [QuantityDict]
forall a. Int -> [a] -> [a]
take 2 [QuantityDict]
outputSymbols)
  (String -> Sentence
S "their new") Sentence
EmptyS) "Determine-Linear-Properties" ConceptChunk
goalStmtDom

angularGS :: ConceptInstance
angularGS :: ConceptInstance
angularGS = String -> Sentence -> String -> ConceptChunk -> ConceptInstance
forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic "angularGS" ([QuantityDict] -> Sentence -> Sentence -> Sentence
forall a. NamedIdea a => [a] -> Sentence -> Sentence -> Sentence
goalStatementStruct (Int -> [QuantityDict] -> [QuantityDict]
forall a. Int -> [a] -> [a]
drop 3 ([QuantityDict] -> [QuantityDict])
-> [QuantityDict] -> [QuantityDict]
forall a b. (a -> b) -> a -> b
$ Int -> [QuantityDict] -> [QuantityDict]
forall a. Int -> [a] -> [a]
take 5 [QuantityDict]
inputSymbols)
  (String -> Sentence
S "their new") Sentence
EmptyS) "Determine-Angular-Properties" ConceptChunk
goalStmtDom

goalStatementStruct :: (NamedIdea a) => [a] -> Sentence -> Sentence -> Sentence
goalStatementStruct :: [a] -> Sentence -> Sentence -> Sentence
goalStatementStruct outputs :: [a]
outputs condition1 :: Sentence
condition1 condition2 :: Sentence
condition2 = [Sentence] -> Sentence
foldlSent
  [ String -> Sentence
S "Determine", Sentence
condition1, Sentence
listOfOutputs, String -> Sentence
S "over a period of",
  ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
time, Sentence
condition2]
  where listOfOutputs :: Sentence
listOfOutputs       = SepType -> FoldType -> [Sentence] -> Sentence
foldlList SepType
Comma FoldType
List ([Sentence] -> Sentence) -> [Sentence] -> Sentence
forall a b. (a -> b) -> a -> b
$ (a -> Sentence) -> [a] -> [Sentence]
forall a b. (a -> b) -> [a] -> [b]
map a -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
plural [a]
outputs