5682fc7267d5470f7bd66ec1c445fbc901dd2df6
[L-seed.git] / src / main.hs
1 import Lseed.Data
2 import Lseed.Data.Functions
3 import Lseed.Grammar.Parse
4 import Lseed.Constants
5 import Lseed.Mainloop
6 import Control.Monad
7 import Debug.Trace
8 import System.Environment
9 import System.Time
10 import System.Random
11 import Lseed.Renderer.Cairo
12
13 parseFile filename = do
14         content <- readFile filename
15         let result = parseGrammar filename content
16         return $ either (error.show) id result
17
18 readArgs doit = do
19         args <- getArgs
20         if null args
21           then  do
22                 putStrLn "L-Seed Demo application."
23                 putStrLn "Please pass L-Seed files on the command line."
24           else  do
25                 genomes <- mapM parseFile args
26                 doit (spread genomes)
27   where spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g inititalPlant) gs [0..]
28           where l = fromIntegral (length gs)
29                 
30 main = readArgs $ \garden -> do
31         obs <- cairoObserver
32         lseedMainLoop True obs (constGardenSource garden) 200