/
Messages.elm
48 lines (35 loc) · 1.1 KB
/
Messages.elm
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 Messages exposing (CloudModifier(..), Effect(..), LightningModifier(..), Message(..), MetaEffect(..), Modifier(..))
import Clouds.Model
import Html exposing (Html)
import Json.Decode as Json
import Lightning.Model
import Time exposing (Posix)
type Effect model mod
= Effect
{ draw : model -> Html Message
, mods : List ( mod, String, model -> Float )
, model : model
, tick : Posix -> model -> model
, modConstructor : mod -> Modifier
, applyModifier : Effect model mod -> mod -> Float -> Effect model mod
, name : String
}
type MetaEffect
= CloudEffect (Effect Clouds.Model.Model CloudModifier)
| LightningEffect (Effect Lightning.Model.Model LightningModifier)
type Modifier
= CloudMod CloudModifier
| LightningMod LightningModifier
type CloudModifier
= Extremity
| Speed
type LightningModifier
= Fremulation
| Chaos
| Dilation
| Zoom
type Message
= AnimationFrameTriggered Posix
| ModifierChanged Modifier Float
| MidiInputReceived Json.Value
| UserSelectedEffect MetaEffect