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