From d2918c525612ca856d81e4bb88b57287cb59b36e Mon Sep 17 00:00:00 2001 From: Tissevert Date: Thu, 17 Oct 2019 12:05:34 +0200 Subject: [PATCH] Finally export the useful Player type instanciated for KoiKoi games since that the only ones we support so far --- src/Hanafuda/KoiKoi.hs | 7 +++++-- src/Hanafuda/KoiKoi/Game.hs | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/Hanafuda/KoiKoi.hs b/src/Hanafuda/KoiKoi.hs index c6d3d3e..c852085 100644 --- a/src/Hanafuda/KoiKoi.hs +++ b/src/Hanafuda/KoiKoi.hs @@ -8,8 +8,11 @@ module Hanafuda.KoiKoi ( , GameID , Mode(..) , Move(..) + , Player , PlayerID + , Players , Score + , Scores , Source(..) , Step(..) , Yaku(..) @@ -21,8 +24,8 @@ import Hanafuda (Card(..), Flower(Pine), contains, flower, match, remove) import qualified Hanafuda.Player as Player (players, random, scores) import Hanafuda.KoiKoi.Yaku (Yaku(..), Score) import Hanafuda.KoiKoi.Game ( - Action(..), Environment, Game(..), GameID, Mode(..), Move(..), PlayerID - , Source(..), Step(..) + Action(..), Environment, Game(..), GameID, Mode(..), Move(..), Player + , PlayerID, Players, Scores, Source(..), Step(..) ) import qualified Hanafuda.KoiKoi.Round as Round (deal, next) import qualified Hanafuda.KoiKoi.Turn as Turn (catch, end, next) diff --git a/src/Hanafuda/KoiKoi/Game.hs b/src/Hanafuda/KoiKoi/Game.hs index f1c2233..f429859 100644 --- a/src/Hanafuda/KoiKoi/Game.hs +++ b/src/Hanafuda/KoiKoi/Game.hs @@ -9,7 +9,10 @@ module Hanafuda.KoiKoi.Game ( , ID , Mode(..) , Move(..) + , Player , PlayerID + , Players + , Scores , Source(..) , Step(..) , end @@ -22,8 +25,7 @@ import Control.Monad.Writer (MonadWriter) import Hanafuda (Card, Flower, Pack) import Hanafuda.ID (ID) import qualified Hanafuda.KoiKoi.Yaku as KoiKoi (Score) -import Hanafuda.Player (Players, Player, Scores, set) -import qualified Hanafuda.Player as Player (ID) +import qualified Hanafuda.Player as Player (ID, Players, Player, Scores, set) data Mode = FirstAt Int | WholeYear deriving (Show) data Move = Play Card | Capture (Card, Card) | Choose Card | KoiKoi Bool @@ -36,14 +38,17 @@ data Action = Action { } deriving (Show) type Environment m = (MonadIO m, MonadError String m, MonadWriter [Action] m) +type Player = Player.Player KoiKoi.Score type PlayerID = Player.ID KoiKoi.Score +type Players = Player.Players KoiKoi.Score +type Scores = Player.Scores KoiKoi.Score type GameID = ID Game data Game = Game { mode :: Mode - , scores :: Scores KoiKoi.Score + , scores :: Scores , month :: Flower - , players :: Players KoiKoi.Score + , players :: Players , playing :: PlayerID , winning :: PlayerID , oyake :: PlayerID @@ -54,8 +59,10 @@ data Game = Game { , rounds :: [(PlayerID, KoiKoi.Score)] } deriving (Show) -setPlayer :: Game -> Player KoiKoi.Score -> Game -setPlayer game@(Game {players, playing}) player = game {players = set playing player players} +setPlayer :: Game -> Player -> Game +setPlayer game@(Game {players, playing}) player = game { + players = Player.set playing player players + } end :: Monad m => Game -> m Game end game = return $ game {step = Over}