/
Messages.elm
51 lines (38 loc) · 1.18 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
49
50
51
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 Noise.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)
| NoiseEffect (Effect Noise.Model.Model ())
type Modifier
= CloudMod CloudModifier
| LightningMod LightningModifier
| NoiseMod ()
type CloudModifier
= Extremity
| Speed
type LightningModifier
= Fremulation
| Chaos
| Dilation
| Zoom
type Message
= AnimationFrameTriggered Posix
| ModifierChanged Modifier Float
| MidiInputReceived Json.Value
| UserSelectedEffect MetaEffect