From 96edc77efe8f7fefe06e83294cc1c48d6cc5e32e Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Fri, 6 Jan 2023 18:38:57 +0000 Subject: [PATCH] fix found bugs --- backend/bang/game.py | 2 +- backend/bang/players.py | 9 +++++---- backend/server.py | 12 +++++++++++- frontend/src/components/Chooser.vue | 23 ++++++++++++++++++++++- frontend/src/components/Menu.vue | 1 + frontend/src/components/Player.vue | 6 +++--- 6 files changed, 43 insertions(+), 10 deletions(-) diff --git a/backend/bang/game.py b/backend/bang/game.py index ce12c68..5076096 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -353,7 +353,7 @@ class Game: def can_card_reach(self, card: cs.Card, player: pl.Player, target:str): if card and card.range != 0 and card.range < 99: - return not any((True for p in self.get_visible_players(player) if p['name'] == target and p['dist'] >= card.range)) + return not any((True for p in self.get_visible_players(player) if p['name'] == target and p['dist'] > card.range)) return True def attack(self, attacker: pl.Player, target_username:str, double:bool=False, card_name:str=None): diff --git a/backend/bang/players.py b/backend/bang/players.py index 4eec5fa..1c54347 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -609,7 +609,7 @@ class Player: self.game.next_player().equipment.append(self.equipment.pop(i)) self.game.next_player().notify_self() break - if any((isinstance(c, cs.Dinamite) or isinstance(c, cs.Prigione) for c in self.equipment)): + if any((isinstance(c, cs.Dinamite) or isinstance(c, cs.Prigione) or isinstance(self.equipment[i], tvosc.SerpenteASonagli) for c in self.equipment)): self.notify_self() return for i in range(len(self.equipment)): @@ -638,11 +638,12 @@ class Player: print(f'Did pick {picked}') self.sio.emit('chat_message', room=self.game.name, data=f'_flipped|{self.name}|{picked.name}|{picked.num_suit()}') - if picked.check_suit(self.game, [cs.Suit.SPADES]) and pickable_cards == 0: + if not picked.check_suit(self.game, [cs.Suit.SPADES]): + break + elif pickable_cards == 0: self.lives -= 1 self.sio.emit('chat_message', room=self.game.name, data=f'_snake_bit|{self.name}') - self.end_turn(forced=True) - return + break if any((isinstance(c, cs.Prigione) for c in self.equipment)): self.notify_self() return diff --git a/backend/server.py b/backend/server.py index 1190157..e443d00 100644 --- a/backend/server.py +++ b/backend/server.py @@ -73,7 +73,7 @@ def report(sid, text): data = "\n".join(ses.game.rpc_log[:-1]).strip() data = data +"\n@@@\n" +text #print(data) - response = requests.post("https://hastebin.com/documents", data) + response = requests.post("https://hastebin.com/documents", data.encode('utf-8')) key = json.loads(response.text).get('key') if "DISCORD_WEBHOOK" in os.environ and len(os.environ['DISCORD_WEBHOOK']) > 0: webhook = DiscordWebhook(url=os.environ['DISCORD_WEBHOOK'], content=f'New bug report, replay at https://bang.xamin.it/game?replay={key}') @@ -546,6 +546,16 @@ def chat_message(sid, msg, pl=None): for cn in card_names: ses.hand.append([c for c in cards if c.name.lower() == cn.lower() or c.name[0:-1].lower() == cn.lower()][0]) ses.notify_self() + elif '/equipcard' in msg: + sio.emit('chat_message', room=ses.game.name, data={'color': f'red','text':f'🚨 {ses.name} is in debug mode and got a card'}) + import bang.cards as cs + cmd = msg.split() + if len(cmd) >= 2: + cards = cs.get_starting_deck(ses.game.expansions) + card_names = ' '.join(cmd[1:]).split(',') + for cn in card_names: + ses.equipment.append([c for c in cards if c.name.lower() == cn.lower() or c.name[0:-1].lower() == cn.lower()][0]) + ses.notify_self() elif '/getset' in msg: sio.emit('chat_message', room=ses.game.name, data={'color': f'red','text':f'🚨 {ses.name} is in debug mode and got a card'}) cmd = msg.split() diff --git a/frontend/src/components/Chooser.vue b/frontend/src/components/Chooser.vue index adfef5e..22fe758 100644 --- a/frontend/src/components/Chooser.vue +++ b/frontend/src/components/Chooser.vue @@ -6,6 +6,7 @@ +

{{remainingTime}}

{{hintText}}

{{realCancelText}}

{{desc}}

@@ -29,13 +30,19 @@ export default { type: String, default: '', }, + timer: { + type: Number, + default: 0, + }, text: String, hintText: String, playAudio: Boolean, }, data: () => ({ desc: '', - realCancelText: '' + realCancelText: '', + remainingTime: 0, + intervalID: '', }), computed: { showCancelBtn() { @@ -57,6 +64,14 @@ export default { this.desc = (this.$i18n.locale=='it'?card.desc:card.desc_eng) else this.desc = this.$t(`cards.${card.name}.desc`) + }, + countDown() { + if (this.remainingTime > 0) { + this.remainingTime--; + } else { + this.select(this.cards[0]); + window.clearInterval(this.intervalID); + } } }, mounted() { @@ -70,6 +85,12 @@ export default { if (this.playAudio) { (new Audio(show_sfx)).play(); } + if (this.timer > 0) { + this.remainingTime = this.timer; + this.intervalID = window.setInterval(() => { + this.countDown(); + }, 1000); + } }, } diff --git a/frontend/src/components/Menu.vue b/frontend/src/components/Menu.vue index 7fa622d..0285674 100644 --- a/frontend/src/components/Menu.vue +++ b/frontend/src/components/Menu.vue @@ -169,6 +169,7 @@ export default { this.username = data.username this.didSetUsername = true this.discordPic = `https://cdn.discordapp.com/avatars/${data.id}/${data.avatar}.png` + localStorage.setItem('username', this.username) this.$socket.emit('set_username', {name: this.username, discord_token: localStorage.getItem('discord_token')}) }).catch(err => { console.error(err) diff --git a/frontend/src/components/Player.vue b/frontend/src/components/Player.vue index 00aa91d..a986c20 100644 --- a/frontend/src/components/Player.vue +++ b/frontend/src/components/Player.vue @@ -49,15 +49,15 @@ - - + + - +