From 996b4608cadc1581f6e28d92a25bc440a52a6c11 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Wed, 16 Dec 2020 21:10:53 +0100 Subject: [PATCH] modular expansion adding --- backend/__init__.py | 8 ++++++++ backend/bang/expansions/__init__.py | 9 +++++++-- backend/bang/game.py | 2 ++ frontend/src/components/Lobby.vue | 17 ++++++++++++++--- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/backend/__init__.py b/backend/__init__.py index 4d1ad8b..3dc02c4 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -201,6 +201,14 @@ def chat_message(sid, msg): ses.game.reset() elif '/startgame' in msg and not ses.game.started: ses.game.start_game() + elif '/addex' in msg and not ses.game.started: + cmd = msg.split() + if len(cmd) == 2: + if cmd[1] not in ses.game.available_expansions: + ses.game.available_expansions.append(cmd[1]) + ses.game.notify_room() + else: + sio.emit('chat_message', room=sid, data={'color': f'','text':f'{msg} bad format'}) elif '/gameinfo' in msg: sio.emit('chat_message', room=sid, data={'color': f'','text':f'info: {ses.game.__dict__}'}) elif '/meinfo' in msg: diff --git a/backend/bang/expansions/__init__.py b/backend/bang/expansions/__init__.py index 4409025..ab28b35 100644 --- a/backend/bang/expansions/__init__.py +++ b/backend/bang/expansions/__init__.py @@ -1,7 +1,12 @@ -from bang.expansions.dodge_city import cards, characters class DodgeCity(): def get_characters(): + from bang.expansions.dodge_city import characters return characters.all_characters() + def get_cards(): - return cards.get_starting_deck() \ No newline at end of file + from bang.expansions.dodge_city import cards + return cards.get_starting_deck() + +class HighNoon(): + pass \ No newline at end of file diff --git a/backend/bang/game.py b/backend/bang/game.py index 0a1877e..49057b9 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -23,6 +23,7 @@ class Game: self.initial_players = 0 self.password = '' self.expansions = [] + self.available_expansions = ['dodge_city'] self.shutting_down = False self.is_competitive = False self.disconnect_bot = True @@ -37,6 +38,7 @@ class Game: 'is_competitive': self.is_competitive, 'disconnect_bot': self.disconnect_bot, 'expansions': self.expansions, + 'available_expansions': self.available_expansions }) def toggle_expansion(self, expansion_name): diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index f548abb..4b8c426 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -33,7 +33,10 @@

{{$t("expansions")}}

- Dodge City +
+ {{get_expansion_name(ex)}} +
+

{{$t('mods')}}

{{$t('mod_comp')}}
@@ -90,7 +93,8 @@ export default { selectedInfo: null, privateRoom: false, password: '', - useDodgeCity: false, + togglable_expansions: [], + expansions: [], hasToSetUsername: false, is_competitive: false, disconnect_bot: false, @@ -103,7 +107,8 @@ export default { this.privateRoom = data.password !== '' this.is_competitive = data.is_competitive this.disconnect_bot = data.disconnect_bot - this.useDodgeCity = data.expansions.indexOf('dodge_city') !== -1 + this.togglable_expansions = data.available_expansions + this.expansions = data.expansions this.players = data.players.map(x => { return { name: x.name, @@ -168,6 +173,12 @@ export default { } }, methods: { + is_toggled_expansion(ex) { + return this.expansions.indexOf(ex) !== -1 + }, + get_expansion_name(ex) { + return ex.replace('_', ' ').replace(/\w\S*/g, m => m.charAt(0).toUpperCase()+m.substr(1).toLowerCase()) + }, leaveRoom() { window.location.replace(window.location.origin) },