sort ouvert cards and properly compare types in sort render
This commit is contained in:
@@ -119,7 +119,8 @@ choose :: (HasCard b, HasCard a) => (Communicator c, MonadPlayer m) => [CardS Pl
|
||||
choose table mayOuvert hand' = do
|
||||
gm <- game
|
||||
let hand = sortRender (getTrump gm) $ map toCard hand'
|
||||
query (BS.unpack $ encode $ ChooseQuery hand table $ fmap (map toCard) mayOuvert)
|
||||
ouvertCards = fmap (sortRender (getTrump gm) . map toCard) mayOuvert
|
||||
query (BS.unpack $ encode $ ChooseQuery hand table ouvertCards)
|
||||
r <- response
|
||||
case decode (BS.pack r) of
|
||||
Just (ChosenResponse card) -> do
|
||||
|
||||
+4
-1
@@ -177,7 +177,7 @@ compareRender trump c1@(Card tp1 col1) c2@(Card tp2 col2) =
|
||||
EQ -> compare col1 col2
|
||||
v -> v
|
||||
(False, False) -> case compare col1 col2 of
|
||||
EQ -> compare tp1 tp2
|
||||
EQ -> compareTypes trump tp1 tp2
|
||||
v -> v
|
||||
_ -> compare trp1 trp2
|
||||
where trp1 = isTrump trump c1
|
||||
@@ -198,12 +198,15 @@ compareTypes None tp1 tp2 = compare (toNullType tp1) (toNullType tp2)
|
||||
toNullType Ace = NAce
|
||||
compareTypes _ tp1 tp2 = compare tp1 tp2
|
||||
|
||||
-- | ascending sort of cards, depending on turn colour
|
||||
sortCards :: HasCard c => Trump -> Maybe TurnColour -> [c] -> [c]
|
||||
sortCards trump turnCol cs = sortBy f cs
|
||||
where f c1 c2 = compareCards trump turnCol (toCard c1) (toCard c2)
|
||||
|
||||
-- | descending sort of cards, independent of turn colour
|
||||
sortRender :: HasCard c => Trump -> [c] -> [c]
|
||||
sortRender trump cs = sortBy f cs
|
||||
-- note: reversed order of c1 and c2 to get a descending sort
|
||||
where f c1 c2 = compareRender trump (toCard c2) (toCard c1)
|
||||
|
||||
highestCard :: HasCard c => Trump -> Maybe TurnColour -> [c] -> c
|
||||
|
||||
Reference in New Issue
Block a user