add distribute_market_cards

This commit is contained in:
2024-03-28 11:24:28 +01:00
parent c386f38dcf
commit 3e99ce4357
3 changed files with 24 additions and 6 deletions
+4 -1
View File
@@ -24,7 +24,10 @@ playerServer.message_callbacks.append(handler)
async def game_init():
for _ in range(10):
await hero_game.create_card()
card = await hero_game.create_card()
hero_game.market_stack.append(card)
await hero_game.distribute_market_cards()
async def main():
+15 -5
View File
@@ -18,14 +18,14 @@ class Game(Serializable):
started: bool
default_health = 80
default_health = 50
listeners: List[Callable[[str, dict], Awaitable[Any]]]
def __init__(self):
super().__init__()
self.market_stack = []
self.market = []
self.market = [None for _ in range(5)]
self.gem_stack = []
self.players = []
self.cards = []
@@ -55,7 +55,7 @@ class Game(Serializable):
sprite="testsprite",
)
self.cards.append(card)
await self.notify_controller("create", card.serialize())
await self.notify_controller("create", card.serialize_guest())
return card
@@ -72,7 +72,7 @@ class Game(Serializable):
async def create_team(self) -> Team:
team = Team(health=self.default_health)
self.teams.append(team)
await self.notify_controller("create", team.serialize())
await self.notify_controller("create", team.serialize_guest())
return team
@@ -82,12 +82,22 @@ class Game(Serializable):
return players[0]
return None
async def distribute_market_cards(self):
"""Tries to fill holes in the market with cards from the market stack"""
try:
while None in self.market:
self.market[self.market.index(None)] = self.market_stack.pop()
except IndexError:
print("no more cards in market_stack!")
finally:
await self.notify_controller("update", self.serialize_guest())
def serialize_guest(self) -> dict:
return self.__dict__ | {
"listeners": None,
"cards": [card.uuid for card in self.cards],
"market_stack": [None for card in self.market_stack],
"market": [card.uuid for card in self.market],
"market": [None if card is None else card.uuid for card in self.market],
"gem_stack": [card.uuid for card in self.gem_stack],
"players": [player.uuid for player in self.players],
"teams": [team.uuid for team in self.teams],
+5
View File
@@ -11,4 +11,9 @@ class Serializable:
self.object_type = self.__class__.object_type
def serialize(self):
"""Returns a dict to be saved on the database"""
return self.__dict__
def serialize_guest(self):
"""Returns a dict with some elements masked for the players"""
return self.serialize()