Get correct duals in Rogue Duel

This commit is contained in:
henriquenakashima 2021-02-22 23:01:58 -05:00
parent 6b91cbb1b9
commit fd201b7fa7
3 changed files with 21 additions and 4 deletions

View file

@ -14,6 +14,7 @@ import cubecobra_csv
class Card:
name: str
color_category: str
colors: List[str]
tags: List[str]
def __post_init__(self):
@ -54,6 +55,9 @@ class CubePool:
self.remove_cards([card_taken], color_category)
return card_taken
def get_category(self, color_category: str) -> List[Card]:
return self._categories[color_category]
def load_pools(csv_path: str, pool_tags: Set[str]) -> Dict[str, CubePool]:
pools = defaultdict(CubePool)
@ -75,7 +79,9 @@ def load_pools(csv_path: str, pool_tags: Set[str]) -> Dict[str, CubePool]:
(pool_tag,) = pool_tags_for_card
color_category = cubecobra_csv.get_color_category(line)
# print(f'{card_name} {color_category}')
card = Card(card_name, color_category, tags)
colors = cubecobra_csv.get_colors(line)
print(f'{card_name} {colors}')
card = Card(card_name, color_category, colors, tags)
pools[pool_tag].add_card(card)
return pools

View file

@ -64,3 +64,9 @@ def get_color_category(line: List) -> str:
color_category = line[COLUMNS['Color Category']]
assert color_category in _COLOR_CATEGORIES, f'color_category "{color_category}" unknown'
return _COLOR_CATEGORIES[color_category]
def get_colors(line: List) -> str:
colors = line[COLUMNS['Color']]
#assert color_category in _COLOR_CATEGORIES, f'color_category "{color_category}" unknown'
return sorted(colors.lower())

View file

@ -105,18 +105,23 @@ def _fill_with_lands(state: RogueDuelState):
player_state.deck.append(rainbow_land)
# Add two duals
duals = _fetch_duals(state, player_state.colors)
#assert len(duals) == 2, f'Found duals {duals} for colors {player_state.colors}'
assert len(duals) == 2, f'Found duals {duals} for colors {player_state.colors}'
player_state.deck.extend(duals)
def _basic_for_color(color: str) -> str:
name = {'w': 'Plains', 'u': 'Island', 'b': 'Swamp', 'r': 'Mountain', 'g': 'Forest'}[color]
return cube_pool.Card(name, '0', color)
return cube_pool.Card(name, '0', color, [])
def _fetch_duals(state: RogueDuelState, colors: List[str]) -> List[str]:
def _fetch_duals(state: RogueDuelState, colors: List[str]) -> List[cube_pool.Card]:
colors = sorted(colors)
duals = []
# Get duals
core_lands: List[cube_pool.Card] = state.pools['core'].get_category('l')
for land in core_lands:
if land.colors == colors:
duals.append(land)
state.pools['core'].remove_cards(duals, 'l')
return duals