25ade0abbd2e12ad66d44d668fbc673ca137dfb0
[L-seed.git] / src / Lseed / Constants.hs
1 -- |
2 -- This module contians the main nobs to control the game play.
3 --
4 -- All length data is relative to the screen width.
5 module Lseed.Constants where 
6
7 groundLevel :: Double
8 groundLevel = 0.03
9 budSize :: Double
10 budSize     = 0.01
11 stipeLength :: Double
12 stipeLength = 0.05
13 blossomSize :: Double
14 blossomSize = 0.03
15 stipeWidth :: Double
16 stipeWidth  = 0.01
17
18 -- | Light and growths interpolation frequency
19 ticksPerDay :: Integer
20 ticksPerDay = 9
21
22 -- | Plant length growth per Day and Light
23 --
24 -- 1 means: Can grow one stipeLength during one day, when catching the sunlight
25 -- with one branch of (projected) length screenwidth
26 growthPerDayAndLight :: Double
27 growthPerDayAndLight = 20.0
28
29 -- | Plants up to this size get an boost in growths
30 smallPlantBoostSize :: Double
31 smallPlantBoostSize = 0.5
32
33 -- | Minimum growths for plants of size less then smallPlantBoostSize
34 smallPlantBoostLength :: Double
35 smallPlantBoostLength = 0.2
36
37 -- | Cost (in light units) per (length for maintaining the plant)^2, to limit the growth of the plants
38 costPerLength :: Double
39 costPerLength = 0.0005
40
41 -- | Cost (in length growths equivalent) per seed to be grown
42 seedGrowthCost :: Double
43 seedGrowthCost = 1.0
44
45 -- | Branch translucency. Proportion of light that is let through by a plant
46 lightFalloff :: Double
47 lightFalloff = 0.4
48
49 -- | Length of one day, in seconds
50 dayLength :: Double
51 dayLength = 20
52
53 -- | ε
54 eps = 1e-9
55
56 -- | Minimum radial angular distance between two branches
57 minAngle :: Double
58 minAngle = pi/20
59
60 -- | Derived constants
61 tickLength = dayLength / fromIntegral ticksPerDay