blob: aa31a841d817e663e7a7d3fc0af0ace50ebdff4a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
module Update.Update
( Action(..)
, updates
, update
) where
import Signal
import Dict
import Time (Time)
import Maybe
import Model.Model (..)
import Model.Timer (..)
import Model.Id (..)
import Model.IdGenerator (..)
import Update.UpdateTimer (..)
type Action =
NoOp
| AddNewTimer
| DeltaTime Time
| UpdateTimer Id TimerAction
| RemoveTimer Id
updates : Signal.Channel Action
updates = Signal.channel NoOp
update : Action -> Model -> Model
update action model =
case action of
NoOp -> model
AddNewTimer ->
let (id, newTimerIdGenerator) = getId model.timerIdGenerator
timerName = "Timer " ++ (toString id)
in { model
| timers <- Dict.insert id (initialTimer model.currentTime timerName) model.timers
, timerIdGenerator <- newTimerIdGenerator
}
DeltaTime delta ->
{ model
| currentTime <- model.currentTime + delta
, timers <- substractTimersTime delta model.timers
}
UpdateTimer id action ->
{ model | timers <- Dict.update id (Maybe.map (updateTimer action)) model.timers }
RemoveTimer id ->
{ model | timers <- Dict.remove id model.timers }
|