haskelloids/src/Types.hs

70 lines
1.2 KiB
Haskell
Raw Normal View History

2017-01-02 15:22:23 +00:00
{-# LANGUAGE MultiParamTypeClasses #-}
2016-12-31 16:01:24 +00:00
module Types where
import Affection
2017-01-02 23:25:34 +00:00
import qualified SDL
2016-12-31 16:01:24 +00:00
import GEGL
import qualified Data.Map as M
data UserData = UserData
{ nodeGraph :: M.Map NodeKey GeglNode
, ship :: Ship
, buffer :: GeglBuffer
, haskelloids :: [Haskelloid]
, shots :: ParticleSystem
-- , debris :: ParticleSystem
, wonlost :: Bool
, pixelSize :: Int
2017-01-02 15:22:23 +00:00
, state :: State
2017-01-01 21:58:54 +00:00
, fade :: MenuFade
2016-12-31 16:01:24 +00:00
}
data Ship = Ship
{ sPos :: (Double, Double)
, sVel :: (Double, Double)
, sRot :: Double
, sFlange :: GeglNode
}
data Haskelloid = Haskelloid
{ hPos :: (Double, Double)
, hVel :: (Double, Double)
, hRot :: Double
, hPitch :: Double
, hDiv :: Int
, hFlange :: GeglNode
, hNodeGraph :: M.Map String GeglNode
} deriving (Eq)
data NodeKey
= KeyRoot
| KeyTranslate
| KeyRotate
| KeyShip
| KeyPNop
| KeyHNop
| KeyCrop
| KeyShipOver
| KeySink
| KeyWon
| KeyLost
| KeyPixelize
| KeyFGOver
| KeyFGNop
2017-01-01 21:58:54 +00:00
| KeyMenuHeading
| KeyMenuText
| KeyMenuStart
| KeyMenuHighscore
| KeyMenuOver
2016-12-31 16:01:24 +00:00
deriving (Ord, Eq)
2017-01-02 15:22:23 +00:00
data State
2016-12-31 16:01:24 +00:00
= Menu
| HighScore
| InGame
2017-01-01 21:58:54 +00:00
data MenuFade
= FadeIn Double
| FadeOut Double