diff options
Diffstat (limited to 'src/Sequence/Contact')
-rw-r--r-- | src/Sequence/Contact/Archetypes.hs | 4 | ||||
-rw-r--r-- | src/Sequence/Contact/Types.hs | 15 | ||||
-rw-r--r-- | src/Sequence/Contact/Types/Internal.hs | 8 |
3 files changed, 27 insertions, 0 deletions
diff --git a/src/Sequence/Contact/Archetypes.hs b/src/Sequence/Contact/Archetypes.hs index 1973b97..f8d4c9d 100644 --- a/src/Sequence/Contact/Archetypes.hs +++ b/src/Sequence/Contact/Archetypes.hs | |||
@@ -119,6 +119,7 @@ prop = Prop | |||
119 | , _sFatigueShock = def | 119 | , _sFatigueShock = def |
120 | 120 | ||
121 | , _sSequence = Nothing | 121 | , _sSequence = Nothing |
122 | , _sTimer = Nothing | ||
122 | 123 | ||
123 | , _sExtraSkills = [] | 124 | , _sExtraSkills = [] |
124 | , _sModifiers = [] | 125 | , _sModifiers = [] |
@@ -230,6 +231,7 @@ human = Humanoid | |||
230 | , _sFatigue = 0 | 231 | , _sFatigue = 0 |
231 | 232 | ||
232 | , _sSequence = Nothing | 233 | , _sSequence = Nothing |
234 | , _sTimer = Nothing | ||
233 | 235 | ||
234 | , _sPainShock = def | 236 | , _sPainShock = def |
235 | & set seReBar (vitBar 0.75) | 237 | & set seReBar (vitBar 0.75) |
@@ -351,6 +353,7 @@ dog = Quadruped | |||
351 | , _sFatigue = 0 | 353 | , _sFatigue = 0 |
352 | 354 | ||
353 | , _sSequence = Nothing | 355 | , _sSequence = Nothing |
356 | , _sTimer = Nothing | ||
354 | 357 | ||
355 | , _sPainShock = def | 358 | , _sPainShock = def |
356 | , _sFatigueShock = def | 359 | , _sFatigueShock = def |
@@ -440,6 +443,7 @@ dolphin = Dolphin | |||
440 | , _sFatigue = 0 | 443 | , _sFatigue = 0 |
441 | 444 | ||
442 | , _sSequence = Nothing | 445 | , _sSequence = Nothing |
446 | , _sTimer = Nothing | ||
443 | 447 | ||
444 | , _sPainShock = def | 448 | , _sPainShock = def |
445 | , _sFatigueShock = def | 449 | , _sFatigueShock = def |
diff --git a/src/Sequence/Contact/Types.hs b/src/Sequence/Contact/Types.hs index 5f8808d..c69a698 100644 --- a/src/Sequence/Contact/Types.hs +++ b/src/Sequence/Contact/Types.hs | |||
@@ -123,6 +123,20 @@ instance Default SeqVal where | |||
123 | } | 123 | } |
124 | 124 | ||
125 | makeLenses ''ShockEffect | 125 | makeLenses ''ShockEffect |
126 | |||
127 | absTime :: Lens' Timer Rational | ||
128 | absTime = lens get set | ||
129 | where | ||
130 | get (Constant n) = n | ||
131 | get (Scaled n) = n | ||
132 | set (Constant _) n = Constant n | ||
133 | set (Scaled _) n = Scaled n | ||
134 | |||
135 | instance Eq Timer where | ||
136 | (==) = (==) `on` view absTime | ||
137 | |||
138 | instance Ord Timer where | ||
139 | compare = comparing $ view absTime | ||
126 | 140 | ||
127 | instance Default ShockEffect where | 141 | instance Default ShockEffect where |
128 | def = ShockEffect { _seApplied = False | 142 | def = ShockEffect { _seApplied = False |
@@ -148,6 +162,7 @@ instance Default Stats where | |||
148 | , _sFatigue = 0 | 162 | , _sFatigue = 0 |
149 | 163 | ||
150 | , _sSequence = Nothing | 164 | , _sSequence = Nothing |
165 | , _sTimer = Nothing | ||
151 | 166 | ||
152 | , _sPainShock = def | 167 | , _sPainShock = def |
153 | , _sFatigueShock = def | 168 | , _sFatigueShock = def |
diff --git a/src/Sequence/Contact/Types/Internal.hs b/src/Sequence/Contact/Types/Internal.hs index 7938a06..11116e9 100644 --- a/src/Sequence/Contact/Types/Internal.hs +++ b/src/Sequence/Contact/Types/Internal.hs | |||
@@ -83,6 +83,10 @@ data SeqVal = SeqVal | |||
83 | } | 83 | } |
84 | deriving (Show, Eq, Ord) | 84 | deriving (Show, Eq, Ord) |
85 | 85 | ||
86 | data Timer = Scaled Rational | ||
87 | | Constant Rational | ||
88 | deriving (Show) | ||
89 | |||
86 | data ShockEffect = ShockEffect | 90 | data ShockEffect = ShockEffect |
87 | { _seApplied :: Bool | 91 | { _seApplied :: Bool |
88 | , _seVal | 92 | , _seVal |
@@ -107,6 +111,7 @@ data Stats = Prop | |||
107 | , _sFatigueShock :: ShockEffect | 111 | , _sFatigueShock :: ShockEffect |
108 | 112 | ||
109 | , _sSequence :: Maybe SeqVal | 113 | , _sSequence :: Maybe SeqVal |
114 | , _sTimer :: Maybe Timer | ||
110 | 115 | ||
111 | , _sExtraSkills :: Map (CI String) (FormulaM Stats Test) | 116 | , _sExtraSkills :: Map (CI String) (FormulaM Stats Test) |
112 | , _sModifiers :: Set Modifier | 117 | , _sModifiers :: Set Modifier |
@@ -171,6 +176,7 @@ data Stats = Prop | |||
171 | , _sFatigue :: Int | 176 | , _sFatigue :: Int |
172 | 177 | ||
173 | , _sSequence :: Maybe SeqVal | 178 | , _sSequence :: Maybe SeqVal |
179 | , _sTimer :: Maybe Timer | ||
174 | 180 | ||
175 | , _sPainShock :: ShockEffect | 181 | , _sPainShock :: ShockEffect |
176 | , _sFatigueShock :: ShockEffect | 182 | , _sFatigueShock :: ShockEffect |
@@ -213,6 +219,7 @@ data Stats = Prop | |||
213 | , _sFatigue :: Int | 219 | , _sFatigue :: Int |
214 | 220 | ||
215 | , _sSequence :: Maybe SeqVal | 221 | , _sSequence :: Maybe SeqVal |
222 | , _sTimer :: Maybe Timer | ||
216 | 223 | ||
217 | , _sPainShock :: ShockEffect | 224 | , _sPainShock :: ShockEffect |
218 | , _sFatigueShock :: ShockEffect | 225 | , _sFatigueShock :: ShockEffect |
@@ -255,6 +262,7 @@ data Stats = Prop | |||
255 | , _sFatigue :: Int | 262 | , _sFatigue :: Int |
256 | 263 | ||
257 | , _sSequence :: Maybe SeqVal | 264 | , _sSequence :: Maybe SeqVal |
265 | , _sTimer :: Maybe Timer | ||
258 | 266 | ||
259 | , _sPainShock :: ShockEffect | 267 | , _sPainShock :: ShockEffect |
260 | , _sFatigueShock :: ShockEffect | 268 | , _sFatigueShock :: ShockEffect |