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
|
choose table mayOuvert hand' = do
|
||||||
gm <- game
|
gm <- game
|
||||||
let hand = sortRender (getTrump gm) $ map toCard hand'
|
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
|
r <- response
|
||||||
case decode (BS.pack r) of
|
case decode (BS.pack r) of
|
||||||
Just (ChosenResponse card) -> do
|
Just (ChosenResponse card) -> do
|
||||||
|
|||||||
+4
-1
@@ -177,7 +177,7 @@ compareRender trump c1@(Card tp1 col1) c2@(Card tp2 col2) =
|
|||||||
EQ -> compare col1 col2
|
EQ -> compare col1 col2
|
||||||
v -> v
|
v -> v
|
||||||
(False, False) -> case compare col1 col2 of
|
(False, False) -> case compare col1 col2 of
|
||||||
EQ -> compare tp1 tp2
|
EQ -> compareTypes trump tp1 tp2
|
||||||
v -> v
|
v -> v
|
||||||
_ -> compare trp1 trp2
|
_ -> compare trp1 trp2
|
||||||
where trp1 = isTrump trump c1
|
where trp1 = isTrump trump c1
|
||||||
@@ -198,12 +198,15 @@ compareTypes None tp1 tp2 = compare (toNullType tp1) (toNullType tp2)
|
|||||||
toNullType Ace = NAce
|
toNullType Ace = NAce
|
||||||
compareTypes _ tp1 tp2 = compare tp1 tp2
|
compareTypes _ tp1 tp2 = compare tp1 tp2
|
||||||
|
|
||||||
|
-- | ascending sort of cards, depending on turn colour
|
||||||
sortCards :: HasCard c => Trump -> Maybe TurnColour -> [c] -> [c]
|
sortCards :: HasCard c => Trump -> Maybe TurnColour -> [c] -> [c]
|
||||||
sortCards trump turnCol cs = sortBy f cs
|
sortCards trump turnCol cs = sortBy f cs
|
||||||
where f c1 c2 = compareCards trump turnCol (toCard c1) (toCard c2)
|
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 :: HasCard c => Trump -> [c] -> [c]
|
||||||
sortRender trump cs = sortBy f cs
|
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)
|
where f c1 c2 = compareRender trump (toCard c2) (toCard c1)
|
||||||
|
|
||||||
highestCard :: HasCard c => Trump -> Maybe TurnColour -> [c] -> c
|
highestCard :: HasCard c => Trump -> Maybe TurnColour -> [c] -> c
|
||||||
|
|||||||
Reference in New Issue
Block a user