def build_request(pid: int, is_auto: bool, is_skip: bool): if not is_skip: ps: PlayerState = db_connector.get_player_state_pid(pid) ps.build_fabric(is_auto) if db_connector.get_game_pid(pid).update_progress(): define_bankrupts(db_connector.get_game_pid(pid)) emit('wait_upgrade_request', room=(db_connector.get_game_id(pid)))
def next_turn(pid: int): ps: PlayerState = db_connector.get_player_state_pid(pid) ps.pay_taxes() game: Game = db_connector.get_game_pid(pid) if game.update_progress(): define_bankrupts(db_connector.get_game_pid(pid)) socket.emit('new_market_lvl', game.get_new_market_lvl(), room=game.id)
def upgrade_fabric(self, doIt: bool): if db_connector.check_upgrade( self.player_id, db_connector.get_game_pid(self.player_id).turn_num): db_connector.set_fabrics1(self.player_id, self.fabrics_1 - 1) db_connector.set_money(self.player_id, self.money - 3500) if (doIt): if self.money > 3500: db_connector.set_money(self.player_id, self.money - 3500) month = db_connector.get_game_pid(self.player_id).turn_num + 9 db_connector.upgrade_fabric(self.player_id, month)
def build_fabric(self, is_auto: bool): if db_connector.check_month( self.player_id, db_connector.get_game_pid(self.player_id).turn_num + 1)[0]: db_connector.set_money( self.player_id, self.money - 5000 if db_connector.check_month( self.player_id, db_connector.get_game_pid(self.player_id).turn_num + 1)[1] else 2500) if self.money > 5000 if is_auto else 2500: db_connector.set_money(self.player_id, self.money - (5000 if is_auto else 2500)) month = db_connector.get_game_pid( self.player_id).turn_num + 7 if is_auto else 5 db_connector.build_fabric(self.player_id, is_auto, month)
def create_game(pid, sesid, name, esm, egp, money, fabrics_1, fabrics_2, max_players): game.create_game(pid, esm, egp, money, fabrics_1, fabrics_2, max_players, name) join_room(db_connector.get_game_id(pid), sid=sesid) db_connector.inc_game_progress(db_connector.get_game_id(pid)) return db_connector.get_game_pid(pid).get_json()
def take_credit(pid: int, amount: int): if amount > 0: ps: PlayerState = db_connector.get_player_state_pid(pid) taken: int = ps.take_credit(amount) emit("taken_credit", taken) if db_connector.get_game_pid(pid).update_progress(): emit('wait_build_request', room=db_connector.get_game_id(pid))
def credit_payoff(pid: int): print(str(pid)) player: Player = db_connector.get_player_pid(pid) emit('paid_credit_sum', player.check_credit_payoff()) game: Game = db_connector.get_game_pid(pid) if game.update_progress(): emit('wait_take_credit', room=db_connector.get_game_id(pid))
def check_credit_payoff(self) -> int: current_month = db_connector.get_game_pid(self.id).turn_num result = 0 for credit in db_connector.get_credits(self.id): if credit[3] == current_month - 12: self.pay_credit(credit[0], credit[3]) result += credit[3]
def leave_game(pid: int, sid: int): game_instance: Game = db_connector.get_game_pid(pid) is_senior: bool = db_connector.get_player_state_pid( pid).rang == game_instance.turn_num % game_instance.max_players if is_senior: senior_leave(game_instance.id) leave_room(game_instance.id, sid) game_instance.player_leave(pid)
def bankrupt_leave(pid: int): db_connector.dec_max_players(db_connector.get_game_id(pid)) if db_connector.get_game_pid(pid).max_players < 2: define_winner(db_connector.get_game_id(pid)) else: emit('bankrupt_left') leave_room(db_connector.get_game_id(pid)) db_connector.del_player_state(pid)
def produce(pid: int, quantity: int, fabrics_1: int, fabrics_2: int): player_state = db_connector.get_player_state_pid(pid) result = player_state.get_egp(quantity, fabrics_1, fabrics_2) if isinstance(result, int) and result == 0: emit('production_error') return emit('produced', (result[0], result[1])) game: Game = db_connector.get_game_pid(pid) if game.update_progress(): emit('wait_egp_request', room=game.id)
def take_credit(self, amount: int) -> int: db_connector.set_money(self.player_id, self.money + amount) max_amount: int = self.fabrics_1 * 2500 + self.fabrics_2 * 5000 already_taken: int = 0 for credit in db_connector.get_credits(self.player_id): already_taken += credit[2] if already_taken < max_amount: max_amount -= already_taken if amount > max_amount: amount = max_amount db_connector.get_credits(self.player_id) db_connector.take_credit( self.player_id, amount, db_connector.get_game_pid(self.player_id).turn_num) return amount return 0
def egp_request(pid: int, price: int, qty: int): game: Game = db_connector.get_game_pid(pid) is_senior: bool = db_connector.get_player_state_pid( pid).rang == game.turn_num % game.max_players egp_orders.append(Order(game.id, pid, price, qty, is_senior)) if game.update_progress(): game_orders: list = [] i: int = 0 while i < len(egp_orders): order: Order = egp_orders[i] if order.game_id == game.id: print('game_id ' + str(order.game_id) + ' ' + str(game.id)) game_orders.append(order) egp_orders.remove(order) else: i += 1 send_egp_approved(game.start_egp_auction(game_orders), game.id) pay_bank_percent(game, game.id)
def upgrade_request(pid: int, do: bool): ps: PlayerState = db_connector.get_player_state_pid(pid) ps.upgrade_fabric(do) if db_connector.get_game_pid(pid).update_progress(): define_bankrupts(db_connector.get_game_pid(pid)) emit('wait_next_turn', room=db_connector.get_game_id(pid))