packages feed

macbeth-lib-0.0.12: src/Macbeth/Fics/Api/Api.hs

module Macbeth.Fics.Api.Api (
  PColor (..),
  Piece (..),
  PType (..),
  Square (..),
  Row (..),
  Column (..),
  Position,
  MoveDetailed (..),
  Username,
  pColor,
  invert
) where

import Data.Char

data Column = A | B | C | D | E | F | G | H deriving (Show, Enum, Bounded, Eq)

data Row = One | Two | Three | Four | Five | Six | Seven | Eight deriving (Show, Eq, Enum, Bounded)

data Square = Square Column Row deriving (Eq)

instance Show Square where
  show (Square s y) = fmap toLower (show s) ++ show (fromEnum y + 1)

data PType = Pawn | Rook | Knight | Bishop | Queen | King deriving (Ord, Eq)

instance Show PType where
  show Pawn = "P"
  show Rook = "R"
  show Knight = "N"
  show Bishop = "B"
  show Queen = "Q"
  show King = "K"

data PColor = Black | White deriving (Show, Eq, Read)

data Piece = Piece PType PColor deriving (Show, Eq)

type Position = [(Square, Piece)]

data MoveDetailed = Simple Square Square | Drop Square | CastleLong | CastleShort deriving (Show, Eq)

type Username = String

pColor :: Piece -> PColor
pColor (Piece _ color) = color

invert :: PColor -> PColor
invert White = Black
invert Black = White