module Data where
import Data.Complex
import Data.Time
type Player = String
type Edge = (Player, Player)
type Result = (Integer, Integer)
type Game = (Edge, Result)
type GameSum = (Edge, (Integer,Integer,Integer))
type GameName = String
data GameState = GameState
{ gsPlayer :: [Player]
, gsGames :: [(GameName,[Game])]
}
deriving (Show, Read)
-- | Coordinate system in use: (0,0) lower left, (1,0) lower right corner
type Coord = Complex Double
data UIState = UIState
{ uisPositions :: [(Player, Coord)]
, uisCurrentGame :: GameName
, uisBBoxes :: [(Player, (Double, Double, Double, Double))]
, uisMousePos :: (Double, Double)
, uisHover :: Maybe Player
, uisDragStart :: Maybe Player
, uisShowGameCount :: Bool
, uisLastFrameTime :: UTCTime
}
deriving (Show)