diff --git a/src/Cogs/Puts.hs b/src/Cogs/Puts.hs new file mode 100644 index 0000000..aa54d8a --- /dev/null +++ b/src/Cogs/Puts.hs @@ -0,0 +1,10 @@ +module Cogs.Puts where + +-- == Cogs - Puts == +-- Get info about put cards +-- ==== + +import ComBoard.Types +import Cogs.Cards + + diff --git a/src/ComBoard/Init.hs b/src/ComBoard/Init.hs index 2162f9a..04ed3a1 100644 --- a/src/ComBoard/Init.hs +++ b/src/ComBoard/Init.hs @@ -38,3 +38,14 @@ initBS = BoardState , bsCardLib = gCardLib , bsGameLog = [] } + +mcCardSym :: MainCharacter -> CardSym +mcCardSym Shinji = S01_Shinji +mcCardSym Asuka = S02_Asuka +mcCardSym Rei = S03_Rei +mcCardSym Misato = S04_Misato +mcCardSym Ritsuko = S05_Ritsuko +mcCardSym Gendo = S06_Gendo + +-- meCardSym :: MainEva -> CardSym +-- meCardSym UnitOne = diff --git a/src/ComBoard/Types.hs b/src/ComBoard/Types.hs index d344d61..1cff496 100644 --- a/src/ComBoard/Types.hs +++ b/src/ComBoard/Types.hs @@ -24,6 +24,7 @@ type Traits = [Trait] data Mark = Circle | Triangle deriving (Show) type LineMark = (Mark, Faction) type LineMarks = [LineMark] +type Speaker = Either data CardInfo = CardInfo { ciName :: String , ciFaction :: Faction @@ -63,7 +64,8 @@ type Group = [MainCharacter] type Groups = [Group] type Angels = [Angel] type Downed = [MainCharacter] -type PutCards = [(Either MainCharacter MainEva, CardSym)] +type PutEva = [(MainEva, [CardSym])] +type PutMainCharacter = [(MainCharacter, [CardSym]) -- Game types type ActivePlayers = [PlayerId] diff --git a/src/Leads/Lines.hs b/src/Leads/Lines.hs index 2d2709a..2f57b2c 100644 --- a/src/Leads/Lines.hs +++ b/src/Leads/Lines.hs @@ -8,4 +8,15 @@ module Leads.Lines where import ComBoard.Types import Toolbox.Utils - +-- PlayerId announces a line and target +announceLine :: PlayerId -> CardSym -> Maybe CardSym -> MainCharacter -> BoardState -> BoardState +announceLine p l c t bs + | not $ isInHand p c bs = addGameError (playerName p bs ++ " doesnt have " ++ getCardLine c bs) bs + | isJust c && inPutCards c bs = + | isDowned mc bs = addGameError (show mc ++ " is downed, cannot speak") bs + | + where + mc = defCharsFaction (ciFaction . getCardInfo c) + f Nothing = mcCardSym mc + f Just cs = cs + speaker = f c