aboutsummaryrefslogtreecommitdiff
path: root/src/Main.elm
blob: c2a327b894bcaa7dc50889a25bcb1f68af6e497a (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
module Main
  ( main
  ) where

import Signal
import Html (Html)
import Time (..)
import Mouse
import Debug
import Json.Encode (Value)

import Model.Model (..)
import Model.Position (..)
import Update.Update (..)
import View.View (view)

main : Signal Html
main = Signal.map view model

model : Signal Model
model = Signal.foldp update (initialModel initialTime) input

input : Signal Action
input =
  Signal.mergeMany
    [ Signal.subscribe updates
    , Signal.map DeltaTime (fps 30)
    , Signal.map (\_ -> ReadOnly) clickAway
    ]

port clickPosition : Signal Value
port clickPosition =
  Signal.sampleOn
    Mouse.clicks
    (Signal.map positionEncoder Mouse.position)

port clickAway : Signal ()

port initialTime : Time