module Model exposing ( Model , init ) import Random.Pcg as Random exposing (Seed) import Char exposing (KeyCode) import Time exposing (Time) import Set import Set exposing (Set) import Platform.Cmd import Keyboard.Extra as Keyboard import Msg exposing (Msg) import Model.Player exposing (..) import Model.Cloud exposing (..) import Model.Vec2 exposing (Vec2) import Model.Config exposing (..) import Model.Round exposing (Round) import Model.Board exposing (initBoardSize) type alias Model = { time : Time , elapsedTime : Float , boardSize : Vec2 , currentScore : Int , player : Player , cloud : Cloud , rounds : List Round , seed : Seed , keyboard : Keyboard.Model , transform : Bool } init : Time -> (Model, Cmd Msg) init time = let (keyboard, keyboardCmd) = Keyboard.init in ( { time = time , elapsedTime = 0 , boardSize = initBoardSize , currentScore = 0 , player = initPlayer , cloud = initCloud , rounds = [] , seed = Random.initialSeed (round time) , keyboard = keyboard , transform = False } , Cmd.map Msg.Keyboard keyboardCmd )