module Board
where

import Chessboard
import ChessDefinitions
import Data.Map as Map
import Data.Maybe

data Board = Board {
      toMove :: Color,
      castle :: CastleStatus,
      halfplies :: Int,
      fiftyMove :: Int,
      squares :: Map Square Piece
} deriving Show

instance Chessboard Board where
    toMoveColor = toMove
    castleStatus = castle
    halfPly = halfplies
    reversibleMoves = fiftyMove
    getPiece = (. squares) . Map.lookup
    setPiece s p c = if (isJust p) then c{squares=Map.insert s (fromJust p) (squares c)} else c{squares=Map.delete s (squares c)}
    emptyBoard = Board White (CS False False False False) 0 0 Map.empty
    setCastleStatus cs b = b{castle=cs}
    setToMoveColor c b = b{toMove=c}

