able to play through a game without issues using the base set
This commit is contained in:
90
game_models.py
Normal file
90
game_models.py
Normal file
@@ -0,0 +1,90 @@
|
||||
from cards import Citizen, Domain, Duke, Monster, Starter
|
||||
|
||||
|
||||
class Player:
|
||||
def __init__(self, player_id, name):
|
||||
self.player_id = player_id
|
||||
self.name = name
|
||||
self.owned_starters = []
|
||||
self.owned_citizens = []
|
||||
self.owned_domains = []
|
||||
self.owned_dukes = []
|
||||
self.owned_monsters = []
|
||||
self.gold_score = 2
|
||||
self.strength_score = 0
|
||||
self.magic_score = 1
|
||||
self.victory_score = 0
|
||||
self.is_first = False
|
||||
self.shadow_count = 0
|
||||
self.holy_count = 0
|
||||
self.soldier_count = 0
|
||||
self.worker_count = 0
|
||||
self.effects = {
|
||||
"roll_phase": [],
|
||||
"harvest_phase": [],
|
||||
"action_phase": [],
|
||||
}
|
||||
self.harvest_delta = {"gold": 0, "strength": 0, "magic": 0, "victory": 0}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data):
|
||||
player_id = data["player_id"]
|
||||
name = data["name"]
|
||||
player = cls(player_id, name)
|
||||
player.owned_starters = [Starter.from_dict(s) for s in data["owned_starters"]]
|
||||
player.owned_citizens = [Citizen.from_dict(c) for c in data["owned_citizens"]]
|
||||
player.owned_domains = [Domain.from_dict(d) for d in data["owned_domains"]]
|
||||
player.owned_dukes = [Duke.from_dict(d) for d in data["owned_dukes"]]
|
||||
player.owned_monsters = [Monster.from_dict(m) for m in data["owned_monsters"]]
|
||||
player.gold_score = data["gold_score"]
|
||||
player.strength_score = data["strength_score"]
|
||||
player.magic_score = data["magic_score"]
|
||||
player.victory_score = data["victory_score"]
|
||||
player.is_first = data["is_first"]
|
||||
player.effects = data["effects"]
|
||||
player.harvest_delta = data.get("harvest_delta", {"gold": 0, "strength": 0, "magic": 0, "victory": 0})
|
||||
roles = player.calc_roles()
|
||||
player.shadow_count = roles["shadow_count"]
|
||||
player.holy_count = roles["holy_count"]
|
||||
player.soldier_count = roles["soldier_count"]
|
||||
player.worker_count = roles["worker_count"]
|
||||
return player
|
||||
|
||||
def calc_roles(self):
|
||||
shadow_count = 0
|
||||
holy_count = 0
|
||||
soldier_count = 0
|
||||
worker_count = 0
|
||||
for citizen in self.owned_citizens:
|
||||
shadow_count = shadow_count + citizen.shadow_count
|
||||
holy_count = holy_count + citizen.holy_count
|
||||
soldier_count = soldier_count + citizen.soldier_count
|
||||
worker_count = worker_count + citizen.worker_count
|
||||
for domain in self.owned_domains:
|
||||
shadow_count = shadow_count + domain.shadow_count
|
||||
holy_count = holy_count + domain.holy_count
|
||||
soldier_count = soldier_count + domain.soldier_count
|
||||
worker_count = worker_count + domain.worker_count
|
||||
roles_dict = {
|
||||
"shadow_count": shadow_count,
|
||||
"holy_count": holy_count,
|
||||
"soldier_count": soldier_count,
|
||||
"worker_count": worker_count,
|
||||
}
|
||||
return roles_dict
|
||||
|
||||
|
||||
class LobbyMember:
|
||||
def __init__(self, player_name, player_id):
|
||||
self.name = player_name
|
||||
self.player_id = player_id
|
||||
self.is_ready = False
|
||||
self.debug_starting_resources = False
|
||||
self.last_active_time = 0
|
||||
|
||||
|
||||
class GameMember:
|
||||
def __init__(self, player_id, player_name, game_id):
|
||||
self.name = player_name
|
||||
self.player_id = player_id
|
||||
self.game_id = game_id
|
||||
Reference in New Issue
Block a user