From c356917ec2242bdca210ca5b624efde4f3ceb7b1 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Sun, 6 Dec 2020 19:29:40 +0100 Subject: [PATCH] fix bot wait and add commands --- backend/__init__.py | 35 +++++++++++++++++++++++------------ backend/bang/game.py | 2 ++ backend/bang/players.py | 2 +- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/backend/__init__.py b/backend/__init__.py index dd38d44..c25285c 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -119,19 +119,30 @@ def join_room(sid, room): @sio.event def chat_message(sid, msg): ses: Player = sio.get_session(sid) - sio.emit('chat_message', room=ses.game.name, data=f'[{ses.name}]: {msg}') - if '/addbot' in msg and not ses.game.started: - if len(msg.split()) > 1: - for _ in range(int(msg.split()[1])): - ses.game.add_player(Player(f'AI_{random.randint(0,100)}', 'bot', sio, bot=True)) + if len(msg) > 0: + if msg[0] == '/': + if '/addbot' in msg and not ses.game.started: + if len(msg.split()) > 1: + for _ in range(int(msg.split()[1])): + ses.game.add_player(Player(f'AI_{random.randint(0,100)}', 'bot', sio, bot=True)) + else: + ses.game.add_player(Player(f'AI_{random.randint(0,100)}', 'bot', sio, bot=True)) + elif '/removebot' in msg and not ses.game.started: + if any([p.is_bot for p in ses.game.players]): + [p for p in ses.game.players if p.is_bot][-1].disconnect() + elif '/suicide' in msg and ses.game.started: + ses.lives = 0 + ses.notify_self() + elif '/cancelgame' in msg and ses.game.started: + ses.game.reset() + elif '/gameinfo' in msg: + sio.emit('chat_message', room=sid, data=f'info: {ses.game.__dict__}') + elif '/meinfo' in msg: + sio.emit('chat_message', room=sid, data=f'info: {ses.__dict__}') + else: + sio.emit('chat_message', room=sid, data=f'{msg} COMMAND NOT FOUND') else: - ses.game.add_player(Player(f'AI_{random.randint(0,100)}', 'bot', sio, bot=True)) - elif '/removebot' in msg and not ses.game.started: - if any([p.is_bot for p in ses.game.players]): - [p for p in ses.game.players if p.is_bot][-1].disconnect() - elif '/suicide' in msg and ses.game.started: - ses.lives = 0 - ses.notify_self() + sio.emit('chat_message', room=ses.game.name, data=f'[{ses.name}]: {msg}') @sio.event def start_game(sid): diff --git a/backend/bang/game.py b/backend/bang/game.py index ee5daf8..c9df987 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -45,6 +45,8 @@ class Game: self.notify_room() def add_player(self, player: players.Player): + if player.is_bot and len(self.players) >= 8: + return if player in self.players or len(self.players) >= 10: return if len(self.players) > 7: diff --git a/backend/bang/players.py b/backend/bang/players.py index 4c976bb..6c33e36 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -174,7 +174,7 @@ class Player: def bot_logic(self): if self.game.shutting_down: return - if self.pending_action != PendingAction.WAIT: + if self.pending_action != None and self.pending_action != PendingAction.WAIT: eventlet.sleep(uniform(0.6, 1.5)) else: return