module Types.StateData where

import Data.Matrix
import Data.Map

import NanoVG hiding (V2)

import Linear (V2)

import Types.ReachPoint
import Types.Map
import Types.ImgId
import Types.Animation
import Types.Direction

data StateData
  = None
  | LoadData
    { loadAssetImages :: Map ImgId Image
    , loadAssetAnims  :: Map AnimId Animation
    , loadAssetIcons  :: Map IconId Image
    }
  | MainData
    { mapMat      :: Matrix TileState
    , imgMat      :: Matrix (Maybe ImgId)
    , reachPoints :: [ReachPoint]
    , mmImgMat    :: Matrix (Maybe ImgId)
    }
  | MenuData
    { velocity  :: V2 Double
    , rotation  :: Direction
    , activate  :: Double
    , switchMap :: Double
    }
  deriving (Eq)
