Moved source files to src directory
This commit is contained in:
parent
2bb8561836
commit
7327695ca3
14 changed files with 3 additions and 6 deletions
52
src/Game.hs
Normal file
52
src/Game.hs
Normal file
|
@ -0,0 +1,52 @@
|
|||
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
||||
|
||||
module Game ( Tank(..)
|
||||
, Shoot(..)
|
||||
, GameState(..)
|
||||
, Game
|
||||
, runGame
|
||||
) where
|
||||
|
||||
import Level
|
||||
import Texture
|
||||
|
||||
import Control.Monad
|
||||
import Control.Monad.State
|
||||
import Data.Fixed
|
||||
import qualified Data.Map as M
|
||||
|
||||
|
||||
data Tank = Tank
|
||||
{ tankX :: !Micro
|
||||
, tankY :: !Micro
|
||||
, tankDir :: !Micro
|
||||
, tankAim :: !Micro
|
||||
, tankSpeed :: !Micro
|
||||
, tankTurnspeed :: !Micro
|
||||
, tankMoving :: !Bool
|
||||
, tankShootSpeed :: !Micro
|
||||
, tankShootBounces :: !Int
|
||||
, tankShootsLeft :: !Int
|
||||
} deriving Show
|
||||
|
||||
data Shoot = Shoot
|
||||
{ shootX :: !Micro
|
||||
, shootY :: !Micro
|
||||
, shootDir :: !Micro
|
||||
, shootSpeed :: !Micro
|
||||
, shootBouncesLeft :: !Int
|
||||
, shootTank :: !Int
|
||||
} deriving Show
|
||||
|
||||
data GameState = GameState
|
||||
{ level :: !Level
|
||||
, tanks :: ![Tank]
|
||||
, shoots :: ![Shoot]
|
||||
, textures :: !(M.Map Texture TextureObject)
|
||||
} deriving (Show)
|
||||
|
||||
newtype Game a = Game (StateT GameState IO a)
|
||||
deriving (Monad, MonadIO, MonadState GameState)
|
||||
|
||||
runGame :: GameState -> Game a -> IO (a, GameState)
|
||||
runGame st (Game a) = runStateT a st
|
Reference in a new issue