module PlayTak.Types where

import Control.Concurrent

import Text.Parsec

import Tak

data PlayTakClient = PlayTakClient {
    clientChanCmd :: Chan String
}

type Username = String
type Password = String

type Size = Int
type GameNumber = Int
type Time = Int

data PlayTakMsg = Welcome | PleaseLogin | LoggedIn Username
    | SeekNew GameNumber Username Size Time
    | SeekRemove GameNumber Username Size Time
    | Online Username
    | Shout Username String
    | GameStart GameNumber Size Username Username Colour
    | PlayMsg GameNumber Play
    | Time GameNumber Time Time
    | Over GameNumber Score Score
    | OfferDraw GameNumber
    | RemoveDraw GameNumber
    | Resign GameNumber
    | RequestUndo GameNumber
    | RemoveUndo GameNumber
    | Undo GameNumber
    | Abandon GameNumber
    | Message String
    | ErrorMsg String
    | NOK
    | OK
    | GameListAdd GameNumber Username Username Size Time Int Int Username
    | GameListRemove GameNumber Username Username Size Time Int Int Username
    | ParseFailed String ParseError deriving Show

data Score = RoadScore | FlatScore | DrawScore | ZeroScore | AbandonScore deriving Show