From b45d04bf30dbf376d56a5052013db43ffccd0e5e Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Tue, 29 Oct 2024 16:37:04 +0000 Subject: [PATCH] allow keeping owner --- backend/bang/game.py | 6 ++++++ frontend/src/components/Lobby.vue | 8 +++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/backend/bang/game.py b/backend/bang/game.py index 630e3a5..67f8118 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -122,6 +122,7 @@ class Game: self.rpc_log = [] self.is_replay = False self.replay_speed = 1 + self.owner: str | None = None def shuffle_players(self): if not self.started: @@ -254,6 +255,7 @@ class Game: "available_expansions": self.available_expansions, "is_replay": self.is_replay, "characters_to_distribute": self.characters_to_distribute, + "owner": self.owner, }, ) G.sio.emit("debug", room=self.name, data=self.debug) @@ -308,6 +310,8 @@ class Game: if player.is_admin(): self.feature_flags() self.players.append(player) + if len(self.players) == 1: + self.owner = player.name if len(self.players) > 7: if "dodge_city" not in self.expansions: self.expansions.append("dodge_city") @@ -989,6 +993,8 @@ class Game: self.deck = None return True else: + self.owner = next((p.name for p in self.players if not p.is_bot), None) + self.notify_room() return False def player_death(self, player: pl.Player, disconnected=False): diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index 60e0833..03b224c 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -483,6 +483,7 @@ export default { fullScreenEffects: [], showPopup: false, selectedExpansionInfo: {}, + owner: undefined, }), sockets: { expansion_info(data) { @@ -503,6 +504,7 @@ export default { this.togglable_expansions = data.available_expansions; this.expansions = data.expansions; this.is_replay = data.is_replay; + this.owner = data.owner; this.characters_to_distribute = data.characters_to_distribute; this.players = data.players.map((x) => { return { @@ -729,11 +731,7 @@ export default { return ""; }, isRoomOwner() { - if (this.players.length > 0) { - let pls = this.players.filter((x) => !x.is_bot); - return pls.length > 0 && pls[0].name == this.username; - } - return false; + return this.owner === this.username; }, startGameCard() { if (!this.started && this.players.length > 2 && this.isRoomOwner) {