graph-games-proto 0.3.2099__py3-none-any.whl → 0.3.2107__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- graph_games_proto/fns.py +116 -76
- {graph_games_proto-0.3.2099.dist-info → graph_games_proto-0.3.2107.dist-info}/METADATA +1 -1
- {graph_games_proto-0.3.2099.dist-info → graph_games_proto-0.3.2107.dist-info}/RECORD +5 -5
- {graph_games_proto-0.3.2099.dist-info → graph_games_proto-0.3.2107.dist-info}/WHEEL +0 -0
- {graph_games_proto-0.3.2099.dist-info → graph_games_proto-0.3.2107.dist-info}/top_level.txt +0 -0
graph_games_proto/fns.py
CHANGED
@@ -1170,7 +1170,6 @@ class PrivateState(PClass):
|
|
1170
1170
|
class PublicDeck(PClass):
|
1171
1171
|
idx = field(type=int)
|
1172
1172
|
uuid = field(type=str)
|
1173
|
-
units = field(type=list) # List[Card]
|
1174
1173
|
facedown_stack_len = field(type=int)
|
1175
1174
|
discard_len = field(type=int)
|
1176
1175
|
faceup_spots = field(type=list) # List[Card]
|
@@ -1178,7 +1177,6 @@ class PublicDeck(PClass):
|
|
1178
1177
|
return {
|
1179
1178
|
"idx": self.idx,
|
1180
1179
|
"uuid": self.uuid,
|
1181
|
-
"units": [unit.__todict__() for unit in self.units],
|
1182
1180
|
"facedown_stack_len": self.facedown_stack_len,
|
1183
1181
|
"discard_len": self.discard_len,
|
1184
1182
|
"faceup_spots": self.faceup_spots,
|
@@ -1188,7 +1186,6 @@ class PublicDeck(PClass):
|
|
1188
1186
|
return PublicDeck(
|
1189
1187
|
idx=d["idx"],
|
1190
1188
|
uuid=d["uuid"],
|
1191
|
-
units=[Card.__fromdict__(card) for card in d["units"]],
|
1192
1189
|
facedown_stack_len=d["facedown_stack_len"],
|
1193
1190
|
discard_len=d["discard_len"],
|
1194
1191
|
faceup_spots=d["faceup_spots"],
|
@@ -1687,31 +1684,76 @@ class Action2(PClass):
|
|
1687
1684
|
)
|
1688
1685
|
|
1689
1686
|
|
1687
|
+
class CardStack(PClass):
|
1688
|
+
hidden = field(type=bool)
|
1689
|
+
cards = field(type=list) # List[Card]
|
1690
|
+
def __todict__(self):
|
1691
|
+
return {
|
1692
|
+
"hidden": self.hidden,
|
1693
|
+
"cards": self.cards,
|
1694
|
+
}
|
1695
|
+
@staticmethod
|
1696
|
+
def __fromdict__(d):
|
1697
|
+
return CardStack(
|
1698
|
+
hidden=d["hidden"],
|
1699
|
+
cards=d["cards"],
|
1700
|
+
)
|
1701
|
+
|
1702
|
+
|
1703
|
+
class CardSpread(PClass):
|
1704
|
+
hidden = field(type=bool)
|
1705
|
+
spots = field(type=list) # List[Card|None]
|
1706
|
+
def __todict__(self):
|
1707
|
+
return {
|
1708
|
+
"hidden": self.hidden,
|
1709
|
+
"spots": self.spots,
|
1710
|
+
}
|
1711
|
+
@staticmethod
|
1712
|
+
def __fromdict__(d):
|
1713
|
+
return CardSpread(
|
1714
|
+
hidden=d["hidden"],
|
1715
|
+
spots=d["spots"],
|
1716
|
+
)
|
1717
|
+
|
1718
|
+
|
1719
|
+
|
1690
1720
|
class Deck(PClass):
|
1691
1721
|
idx = field(type=int)
|
1692
1722
|
uuid = field(type=str)
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1723
|
+
faceup_stack = field(type=CardStack)
|
1724
|
+
faceup_spread = field(type=CardSpread)
|
1725
|
+
facedown_stack = field(type=CardStack)
|
1726
|
+
facedown_spread = field(type=CardSpread)
|
1727
|
+
discard_faceup_stack = field(type=CardStack)
|
1728
|
+
discard_faceup_spread = field(type=CardSpread)
|
1729
|
+
discard_facedown_stack = field(type=CardStack)
|
1730
|
+
discard_facedown_spread = field(type=CardSpread)
|
1697
1731
|
def __todict__(self):
|
1698
1732
|
return {
|
1699
1733
|
"idx": self.idx,
|
1700
1734
|
"uuid": self.uuid,
|
1701
|
-
"
|
1702
|
-
"
|
1703
|
-
"
|
1704
|
-
"
|
1735
|
+
"faceup_stack": self.faceup_stack.__todict(),
|
1736
|
+
"faceup_spread": self.faceup_spread.__todict(),
|
1737
|
+
"facedown_stack": self.facedown_stack.__todict(),
|
1738
|
+
"facedown_spread": self.facedown_spread.__todict(),
|
1739
|
+
"discard_faceup_stack": self.discard_faceup_stack.__todict(),
|
1740
|
+
"discard_faceup_spread": self.discard_faceup_spread.__todict(),
|
1741
|
+
"discard_facedown_stack": self.discard_facedown_stack.__todict(),
|
1742
|
+
"discard_facedown_spread": self.discard_facedown_spread.__todict(),
|
1705
1743
|
}
|
1706
1744
|
@staticmethod
|
1707
1745
|
def __fromdict__(d):
|
1708
1746
|
return Deck(
|
1709
1747
|
idx=d["idx"],
|
1710
1748
|
uuid=d["uuid"],
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1714
|
-
|
1749
|
+
faceup_stack=CardStack.__fromdict__(d["faceup_stack"]),
|
1750
|
+
faceup_spread=CardSpread.__fromdict__(d["faceup_spread"]),
|
1751
|
+
facedown_stack=CardStack.__fromdict__(d["facedown_stack"]),
|
1752
|
+
facedown_spread=CardSpread.__fromdict__(d["facedown_spread"]),
|
1753
|
+
discard_faceup_stack=CardStack.__fromdict__(d["discard_faceup_stack"]),
|
1754
|
+
discard_faceup_spread=CardSpread.__fromdict__(d["discard_faceup_spread"]),
|
1755
|
+
discard_facedown_stack=CardStack.__fromdict__(d["discard_facedown_stack"]),
|
1756
|
+
discard_facedown_spread=CardSpread.__fromdict__(d["discard_facedown_spread"]),
|
1715
1757
|
)
|
1716
1758
|
|
1717
1759
|
|
@@ -2237,10 +2279,9 @@ def init_state_kernel(game_config, **kwargs):
|
|
2237
2279
|
deck_obj = Deck(
|
2238
2280
|
uuid=dek.uuid,
|
2239
2281
|
idx=dek.idx,
|
2240
|
-
|
2241
|
-
|
2242
|
-
|
2243
|
-
facedown_stack=[card.uuid for card in cards],
|
2282
|
+
facedown_stack=CardStack(hidden=True, cards=[c.uuid for c in cards]),
|
2283
|
+
faceup_spread=CardSpread(hidden=False, spots=[]),
|
2284
|
+
discard_facedown_stack=CardStack(hidden=True, cards=[]),
|
2244
2285
|
)
|
2245
2286
|
starting_decks.append(deck_obj)
|
2246
2287
|
|
@@ -3205,13 +3246,13 @@ def replenish_decks_if_needed(kernel):
|
|
3205
3246
|
def replenish_faceup_spot_if_needed(kernel, deck_idx, spot_idx):
|
3206
3247
|
deck = kernel.decks[deck_idx]
|
3207
3248
|
|
3208
|
-
if deck.
|
3249
|
+
if deck.faceup_spread.spots[spot_idx] is not None:
|
3209
3250
|
return kernel
|
3210
3251
|
|
3211
|
-
if len(deck.facedown_stack) == 0:
|
3252
|
+
if len(deck.facedown_stack.cards) == 0:
|
3212
3253
|
return kernel
|
3213
|
-
|
3214
|
-
deck.
|
3254
|
+
|
3255
|
+
deck.faceup_spread.spots[spot_idx] = deck.facedown_stack.cards.pop()
|
3215
3256
|
|
3216
3257
|
kernel = ensure_faceup_spots_valid(kernel)
|
3217
3258
|
|
@@ -3223,7 +3264,7 @@ def replenish_faceup_spot_if_needed(kernel, deck_idx, spot_idx):
|
|
3223
3264
|
@dispatch(StateKernel, int)
|
3224
3265
|
def replenish_faceup_if_needed(kernel, deck_idx):
|
3225
3266
|
deck = kernel.decks[deck_idx]
|
3226
|
-
for spot_idx in range(len(deck.
|
3267
|
+
for spot_idx in range(len(deck.faceup_spread.spots)):
|
3227
3268
|
kernel = replenish_faceup_spot_if_needed(kernel, deck_idx, spot_idx)
|
3228
3269
|
return kernel
|
3229
3270
|
|
@@ -3231,12 +3272,12 @@ def replenish_faceup_if_needed(kernel, deck_idx):
|
|
3231
3272
|
@dispatch(StateKernel, int)
|
3232
3273
|
def recycle_if_needed(kernel, deck_idx):
|
3233
3274
|
deck = kernel.decks[deck_idx]
|
3234
|
-
if len(deck.facedown_stack) == 0:
|
3235
|
-
shuffled_discards = list(deck.
|
3275
|
+
if len(deck.facedown_stack.cards) == 0:
|
3276
|
+
shuffled_discards = list(deck.discard_facedown_stack.cards)
|
3236
3277
|
kernel.rng.shuffle(shuffled_discards)
|
3237
3278
|
deck = deck.set(
|
3238
|
-
facedown_stack =
|
3239
|
-
|
3279
|
+
facedown_stack=CardStack(hidden=True, cards=shuffled_discards),
|
3280
|
+
discard_facedown_stack=CardStack(hidden=True, cards=[])
|
3240
3281
|
)
|
3241
3282
|
kernel = set_deck(kernel, deck.idx, deck)
|
3242
3283
|
return kernel
|
@@ -3251,11 +3292,11 @@ def handle_draw_action(kernel, action):
|
|
3251
3292
|
player = kernel.players[legal_action.player_idx]
|
3252
3293
|
deck = kernel.decks[draw.deck_idx]
|
3253
3294
|
|
3254
|
-
if len(deck.facedown_stack) == 0:
|
3295
|
+
if len(deck.facedown_stack.cards) == 0:
|
3255
3296
|
return kernel # No cards to draw
|
3256
3297
|
|
3257
3298
|
for _ in range(draw.quantity):
|
3258
|
-
drawn_card = deck.facedown_stack.pop()
|
3299
|
+
drawn_card = deck.facedown_stack.cards.pop()
|
3259
3300
|
player.cards.append(drawn_card)
|
3260
3301
|
kernel = recycle_if_needed(kernel, draw.deck_idx)
|
3261
3302
|
|
@@ -3279,11 +3320,11 @@ def handle_draw_discard_action(kernel, action):
|
|
3279
3320
|
player = kernel.players[legal_action.player_idx]
|
3280
3321
|
deck = kernel.decks[draw_discard.deck_idx]
|
3281
3322
|
|
3282
|
-
if len(deck.facedown_stack) == 0:
|
3323
|
+
if len(deck.facedown_stack.cards) == 0:
|
3283
3324
|
return kernel # No cards to draw
|
3284
3325
|
|
3285
3326
|
for _ in range(draw_discard.quantity):
|
3286
|
-
drawn_card = deck.facedown_stack.pop()
|
3327
|
+
drawn_card = deck.facedown_stack.cards.pop()
|
3287
3328
|
player.discard_tray.append(drawn_card)
|
3288
3329
|
|
3289
3330
|
return kernel.set(
|
@@ -3299,8 +3340,8 @@ def get_follow_up_draw_legal_actions(kernel, action):
|
|
3299
3340
|
if len(kernel.history) >= 2:
|
3300
3341
|
last_action = kernel.history[-2]
|
3301
3342
|
if (last_action.legal_action.player_idx != legal_action.player_idx) or last_action.legal_action.name == "INITIAL-GOAL-KEEP":
|
3302
|
-
|
3303
|
-
if len(kernel.decks[0].facedown_stack) >= 1:
|
3343
|
+
|
3344
|
+
if len(kernel.decks[0].facedown_stack.cards) >= 1:
|
3304
3345
|
to_return.append(
|
3305
3346
|
LegalAction(
|
3306
3347
|
auto_preferred=True,
|
@@ -3315,8 +3356,8 @@ def get_follow_up_draw_legal_actions(kernel, action):
|
|
3315
3356
|
)
|
3316
3357
|
)
|
3317
3358
|
)
|
3318
|
-
|
3319
|
-
for card_uuid in kernel.decks[0].
|
3359
|
+
|
3360
|
+
for card_uuid in kernel.decks[0].faceup_spread.spots:
|
3320
3361
|
if card_uuid:
|
3321
3362
|
if not kernel.carduuid2card[card_uuid].is_wild:
|
3322
3363
|
to_return.append(
|
@@ -3339,7 +3380,7 @@ def get_follow_up_draw_legal_actions(kernel, action):
|
|
3339
3380
|
@dispatch(StateKernel, int)
|
3340
3381
|
def get_num_faceup_wilds(kernel, deck_idx):
|
3341
3382
|
deck = kernel.decks[deck_idx]
|
3342
|
-
non_empty_spots = [spot for spot in deck.
|
3383
|
+
non_empty_spots = [spot for spot in deck.faceup_spread.spots if spot]
|
3343
3384
|
if not non_empty_spots:
|
3344
3385
|
return 0
|
3345
3386
|
return sum(1 for card_uuid in non_empty_spots if kernel.carduuid2card[card_uuid].is_wild)
|
@@ -3359,14 +3400,14 @@ def ensure_faceup_spots_valid(kernel):
|
|
3359
3400
|
@dispatch(StateKernel, int)
|
3360
3401
|
def discardfaceup_shuffle_flip(kernel, deck_idx):
|
3361
3402
|
deck = kernel.decks[deck_idx]
|
3362
|
-
num_faceup_spots = len(deck.
|
3363
|
-
for faceup_spot in deck.
|
3403
|
+
num_faceup_spots = len(deck.faceup_spread.spots)
|
3404
|
+
for faceup_spot in deck.faceup_spread.spots:
|
3364
3405
|
if faceup_spot:
|
3365
|
-
deck.
|
3366
|
-
deck = deck.set(
|
3367
|
-
while len(deck.
|
3368
|
-
card = deck.
|
3369
|
-
deck.facedown_stack.append(card)
|
3406
|
+
deck.discard_facedown_stack.cards.append(faceup_spot)
|
3407
|
+
deck = deck.set(faceup_spread=CardStack(hidden=False, cards=[]))
|
3408
|
+
while len(deck.discard_facedown_stack.cards) > 0:
|
3409
|
+
card = deck.discard_facedown_stack.cards.pop()
|
3410
|
+
deck.facedown_stack.cards.append(card)
|
3370
3411
|
deck = shuffle(kernel.rng, deck)
|
3371
3412
|
kernel = set_deck(kernel, deck.idx, deck)
|
3372
3413
|
kernel = flip_cards(kernel, deck.idx, num_faceup_spots)
|
@@ -3382,11 +3423,11 @@ def handle_faceup_draw_action(kernel, action):
|
|
3382
3423
|
player = kernel.players[legal_action.player_idx]
|
3383
3424
|
deck = kernel.decks[faceup_draw.deck_idx]
|
3384
3425
|
# find the faceup spot idx with uuid "faceup_draw.card_uuid"
|
3385
|
-
spot_idx = next((i for i, card_uuid in enumerate(deck.
|
3386
|
-
drawn_card = deck.
|
3426
|
+
spot_idx = next((i for i, card_uuid in enumerate(deck.faceup_spread.spots) if card_uuid == faceup_draw.card_uuid), None)
|
3427
|
+
drawn_card = deck.faceup_spread.spots[spot_idx] if spot_idx is not None else None
|
3387
3428
|
player.cards.append(drawn_card)
|
3388
|
-
|
3389
|
-
deck.
|
3429
|
+
|
3430
|
+
deck.faceup_spread.spots[spot_idx] = None
|
3390
3431
|
kernel = kernel.set(decks=kernel.decks)
|
3391
3432
|
kernel = replenish_faceup_spot_if_needed(kernel, faceup_draw.deck_idx, spot_idx)
|
3392
3433
|
|
@@ -3603,9 +3644,9 @@ def handle_move_longest_path_card(kernel, action):
|
|
3603
3644
|
|
3604
3645
|
if len(kernel.decks) > 2:
|
3605
3646
|
longest_path_deck = kernel.decks[2]
|
3606
|
-
if longest_path_deck.facedown_stack:
|
3647
|
+
if longest_path_deck.facedown_stack.cards:
|
3607
3648
|
# Move the longest path card to the player's hand
|
3608
|
-
longest_path_card = longest_path_deck.facedown_stack.pop()
|
3649
|
+
longest_path_card = longest_path_deck.facedown_stack.cards.pop()
|
3609
3650
|
else:
|
3610
3651
|
# Search for the longest path card in each player's cards
|
3611
3652
|
player_with_card = find_player_with_longest_path_card(kernel)
|
@@ -3671,7 +3712,7 @@ def handle_move_pieces_to_path_action(kernel, action):
|
|
3671
3712
|
# Remove the card from player's cards
|
3672
3713
|
card_uuid = player.cards.pop(card_idx)
|
3673
3714
|
# add to discard
|
3674
|
-
kernel.decks[kernel.carduuid2card[card_uuid].deck_idx].
|
3715
|
+
kernel.decks[kernel.carduuid2card[card_uuid].deck_idx].discard_facedown_stack.cards.append(card_uuid)
|
3675
3716
|
|
3676
3717
|
kernel = recycle_decks_if_needed(kernel)
|
3677
3718
|
kernel = replenish_decks_if_needed(kernel)
|
@@ -3763,7 +3804,7 @@ def handle_keep_action(kernel, action):
|
|
3763
3804
|
|
3764
3805
|
|
3765
3806
|
# Discard the non-kept cards to the deck's discard pile
|
3766
|
-
deck.
|
3807
|
+
deck.discard_facedown_stack.cards.extend(non_kept_cards)
|
3767
3808
|
|
3768
3809
|
# Clear the discard tray and add the kept cards back
|
3769
3810
|
player.cards.extend([c for c in kept_cards if c is not None])
|
@@ -3805,7 +3846,7 @@ def handle_discard_action(kernel, action):
|
|
3805
3846
|
print("****************************** handle_discard_action 6", non_kept_cards)
|
3806
3847
|
|
3807
3848
|
# Discard the non-kept cards to the deck's discard pile
|
3808
|
-
deck.
|
3849
|
+
deck.discard_facedown_stack.cards.extend(non_kept_cards)
|
3809
3850
|
|
3810
3851
|
# Clear the discard tray and add the kept cards back
|
3811
3852
|
player.cards.extend([c for c in kept_cards if c is not None])
|
@@ -3834,9 +3875,9 @@ def set_deck(kernel, deck_idx, deck):
|
|
3834
3875
|
|
3835
3876
|
|
3836
3877
|
def shuffle(rng, deck):
|
3837
|
-
shuffled_cards = list(deck.facedown_stack)
|
3878
|
+
shuffled_cards = list(deck.facedown_stack.cards)
|
3838
3879
|
rng.shuffle(shuffled_cards)
|
3839
|
-
return deck.set(facedown_stack=shuffled_cards)
|
3880
|
+
return deck.set(facedown_stack=CardStack(hidden=True, cards=shuffled_cards))
|
3840
3881
|
|
3841
3882
|
|
3842
3883
|
@dispatch(StateKernel, int)
|
@@ -3845,7 +3886,7 @@ def shuffle_deck(kernel, deck_idx):
|
|
3845
3886
|
return kernel
|
3846
3887
|
|
3847
3888
|
deck = kernel.decks[deck_idx]
|
3848
|
-
if not deck or not deck.facedown_stack:
|
3889
|
+
if not deck or not deck.facedown_stack.cards:
|
3849
3890
|
return kernel
|
3850
3891
|
|
3851
3892
|
shuffled_deck = shuffle(kernel.rng, deck)
|
@@ -3871,14 +3912,14 @@ def flip_cards(kernel, deck_idx, num_cards):
|
|
3871
3912
|
return kernel
|
3872
3913
|
|
3873
3914
|
deck = kernel.decks[deck_idx]
|
3874
|
-
if not deck or not deck.facedown_stack:
|
3915
|
+
if not deck or not deck.facedown_stack.cards:
|
3875
3916
|
return kernel
|
3876
3917
|
|
3877
|
-
# Flip the top num_cards from the facedown_stack to the
|
3918
|
+
# Flip the top num_cards from the facedown_stack to the faceup_spread
|
3878
3919
|
for _ in range(num_cards):
|
3879
|
-
if deck.facedown_stack:
|
3880
|
-
card = deck.facedown_stack.pop()
|
3881
|
-
deck.
|
3920
|
+
if deck.facedown_stack.cards:
|
3921
|
+
card = deck.facedown_stack.cards.pop()
|
3922
|
+
deck.faceup_spread.spots.append(card)
|
3882
3923
|
|
3883
3924
|
return kernel.set(decks=kernel.decks)
|
3884
3925
|
|
@@ -3906,14 +3947,14 @@ def deal_cards_to_each_player_discard_tray(kernel, deck_idx, num_cards):
|
|
3906
3947
|
return kernel
|
3907
3948
|
|
3908
3949
|
deck = kernel.decks[deck_idx]
|
3909
|
-
if not deck or not deck.facedown_stack:
|
3950
|
+
if not deck or not deck.facedown_stack.cards:
|
3910
3951
|
return kernel
|
3911
3952
|
|
3912
3953
|
for player in kernel.players:
|
3913
3954
|
# Deal cards to the player's discard tray
|
3914
3955
|
for _ in range(num_cards):
|
3915
|
-
if deck.facedown_stack:
|
3916
|
-
card = deck.facedown_stack.pop()
|
3956
|
+
if deck.facedown_stack.cards:
|
3957
|
+
card = deck.facedown_stack.cards.pop()
|
3917
3958
|
player.discard_tray.append(card)
|
3918
3959
|
|
3919
3960
|
return kernel.set(players=kernel.players, decks=kernel.decks)
|
@@ -3925,15 +3966,15 @@ def deal_cards_to_each_player(kernel, deck_idx, num_cards):
|
|
3925
3966
|
return kernel
|
3926
3967
|
|
3927
3968
|
deck = kernel.decks[deck_idx]
|
3928
|
-
if not deck or not deck.facedown_stack:
|
3969
|
+
if not deck or not deck.facedown_stack.cards:
|
3929
3970
|
return kernel
|
3930
3971
|
|
3931
3972
|
for player in kernel.players:
|
3932
3973
|
player_hand = player.cards
|
3933
3974
|
# Deal cards to the player's hand
|
3934
3975
|
for _ in range(num_cards):
|
3935
|
-
if deck.facedown_stack:
|
3936
|
-
card = deck.facedown_stack.pop()
|
3976
|
+
if deck.facedown_stack.cards:
|
3977
|
+
card = deck.facedown_stack.cards.pop()
|
3937
3978
|
player_hand.append(card)
|
3938
3979
|
|
3939
3980
|
return kernel.set(players=kernel.players, decks=kernel.decks)
|
@@ -4758,10 +4799,9 @@ def getpublicdeck(s, d):
|
|
4758
4799
|
return PublicDeck(
|
4759
4800
|
idx=d.idx,
|
4760
4801
|
uuid=d.uuid,
|
4761
|
-
|
4762
|
-
|
4763
|
-
|
4764
|
-
faceup_spots=d.faceup_spots,
|
4802
|
+
facedown_stack_len=len(d.facedown_stack.cards),
|
4803
|
+
discard_len=len(d.discard_facedown_stack.cards),
|
4804
|
+
faceup_spots=d.faceup_spread.spots,
|
4765
4805
|
)
|
4766
4806
|
|
4767
4807
|
|
@@ -5361,7 +5401,7 @@ def getscorecodes(f):
|
|
5361
5401
|
# filter(n -> !isnothing(s.faceup_spots[n]), 1:length(s.faceup_spots))
|
5362
5402
|
# end
|
5363
5403
|
def getvalidspotnums(s):
|
5364
|
-
return [n for n in range(1, len(s.
|
5404
|
+
return [n for n in range(1, len(s.faceup_spread.spots) + 1) if s.faceup_spread.spots[n-1] is not None]
|
5365
5405
|
|
5366
5406
|
|
5367
5407
|
def json_serializer(obj):
|
@@ -5797,7 +5837,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5797
5837
|
allotted_since_action_idx = len(state_kernel.history) - 1
|
5798
5838
|
legal_actions = []
|
5799
5839
|
|
5800
|
-
if len(state_kernel.decks[1].facedown_stack) >= 1:
|
5840
|
+
if len(state_kernel.decks[1].facedown_stack.cards) >= 1:
|
5801
5841
|
legal_actions.append(
|
5802
5842
|
LegalAction(
|
5803
5843
|
player_idx=player_idx,
|
@@ -5813,7 +5853,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5813
5853
|
)
|
5814
5854
|
)
|
5815
5855
|
|
5816
|
-
if len(state_kernel.decks[0].facedown_stack) >= 1:
|
5856
|
+
if len(state_kernel.decks[0].facedown_stack.cards) >= 1:
|
5817
5857
|
legal_actions.append(
|
5818
5858
|
LegalAction(
|
5819
5859
|
auto_preferred=True,
|
@@ -5829,7 +5869,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5829
5869
|
)
|
5830
5870
|
)
|
5831
5871
|
|
5832
|
-
if len(state_kernel.decks[0].facedown_stack) >= 2:
|
5872
|
+
if len(state_kernel.decks[0].facedown_stack.cards) >= 2:
|
5833
5873
|
legal_actions.append(
|
5834
5874
|
LegalAction(
|
5835
5875
|
player_idx=player_idx,
|
@@ -5844,7 +5884,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5844
5884
|
)
|
5845
5885
|
)
|
5846
5886
|
|
5847
|
-
for card_uuid in state_kernel.decks[0].
|
5887
|
+
for card_uuid in state_kernel.decks[0].faceup_spread.spots:
|
5848
5888
|
if card_uuid:
|
5849
5889
|
legal_actions.append(
|
5850
5890
|
LegalAction(
|
@@ -1,9 +1,9 @@
|
|
1
1
|
graph_games_proto/__init__.py,sha256=_EVQR-51XehfH45XZlba1WPdx3omS3Gm1nTwrgGyn2Q,667
|
2
2
|
graph_games_proto/all_types.py,sha256=IpbwftEcHS5Ewz-saFNk0lO9FvcbuHG36odRTayCXUk,54911
|
3
|
-
graph_games_proto/fns.py,sha256=
|
3
|
+
graph_games_proto/fns.py,sha256=hjbhH7cyvxpZncYg2LTGqlBt_mrDAjKG56VuvCiO54Y,202019
|
4
4
|
graph_games_proto/main.py,sha256=fj2U7KcwrpZtuUhjOX5yVxY18LZvvsxDFYZ_S5mxe04,145
|
5
5
|
graph_games_proto/state.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
graph_games_proto-0.3.
|
7
|
-
graph_games_proto-0.3.
|
8
|
-
graph_games_proto-0.3.
|
9
|
-
graph_games_proto-0.3.
|
6
|
+
graph_games_proto-0.3.2107.dist-info/METADATA,sha256=dutsrkox9vObZA9gR7Cqk0htBKvxmDQKB6erQi69UyQ,188
|
7
|
+
graph_games_proto-0.3.2107.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
8
|
+
graph_games_proto-0.3.2107.dist-info/top_level.txt,sha256=-4QSrBMf_MM4BGsr2QXBpqDx8c8k_OPnzGyFjqjakes,18
|
9
|
+
graph_games_proto-0.3.2107.dist-info/RECORD,,
|
File without changes
|
File without changes
|