From e2019e2d3b71394f853cc1ae92b37abff2e9c24f Mon Sep 17 00:00:00 2001 From: Tissevert Date: Sat, 25 Jan 2020 11:13:56 +0100 Subject: [PATCH] Implement a partial ordering on game coordinates to allow implementing re-synchronization easily --- src/Hanafuda/Message.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Hanafuda/Message.hs b/src/Hanafuda/Message.hs index 4506a7f..ce33786 100644 --- a/src/Hanafuda/Message.hs +++ b/src/Hanafuda/Message.hs @@ -13,6 +13,7 @@ module Hanafuda.Message ( , PublicPlayer(..) , PublicState(..) , Room + , orderCoordinates ) where import Data.Char (toLower) @@ -153,6 +154,13 @@ instance FromJSON Coordinates instance ToJSON Coordinates where toEncoding = genericToEncoding defaultOptions +orderCoordinates :: Coordinates -> Coordinates -> Maybe Ordering +orderCoordinates coordinatesA coordinatesB + | gameID coordinatesA == gameID coordinatesB = Just $ compare + (month coordinatesA, turn coordinatesA) + (month coordinatesB, turn coordinatesB) + | otherwise = Nothing + data PrivateState = PrivateState { link :: Coordinates , hands :: Map PlayerID Hanafuda.Pack