{-# OPTIONS_GHC -fno-warn-orphans #-}
module Game.Data(
BulletMap
, PlayerMap
, Game(..)
) where
import Control.DeepSeq
import Game.Shared
import GHC.Generics
import qualified Data.HashMap.Strict as H
import Game.Bullet.Data
import Game.Camera
import Game.Player.Data
import Game.GoreAndAsh.Actor
import Game.GoreAndAsh.Sync
type BulletMap = H.HashMap BulletId Bullet
type PlayerMap = H.HashMap PlayerId Player
data Game = Game {
gameId :: !GameId
, gamePlayer :: !(Maybe Player)
, gameCamera :: !Camera
, gamePlayers :: !PlayerMap
, gameBullets :: !BulletMap
, gameExit :: !Bool
} deriving (Generic)
instance NFData Game
data GameMessage
instance ActorMessage GameId where
type ActorMessageType GameId = GameMessage
toCounter = unGameId
fromCounter = GameId
instance NetworkMessage GameId where
type NetworkMessageType GameId = GameNetMessage