diff --git a/backend/server.py b/backend/server.py index 32271ae..c42dda1 100644 --- a/backend/server.py +++ b/backend/server.py @@ -82,13 +82,17 @@ def bang_handler(func): logging.exception(e) print(traceback.format_exc()) send_to_debug(traceback.format_exc()) - save_lock = False + finally: + save_lock = False return wrapper_func +def count_bots_in_game(game): + return sum(1 for p in game.players if p.is_bot) + def advertise_lobbies(): open_lobbies = [g for g in games.values() if 0 < len(g.players) < 10 and not g.is_hidden][-10:] - sio.emit('lobbies', room='lobby', data=[{'name': g.name, 'players': len(g.players), 'locked': g.password != ''} for g in open_lobbies if not g.started]) - sio.emit('spectate_lobbies', room='lobby', data=[{'name': g.name, 'players': len(g.players), 'locked': g.password != ''} for g in open_lobbies if g.started]) + sio.emit('lobbies', room='lobby', data=[{'name': g.name, 'players': len(g.players), 'bots': count_bots_in_game(g), 'locked': g.password != '', 'expansions': g.expansions} for g in open_lobbies if not g.started]) + sio.emit('spectate_lobbies', room='lobby', data=[{'name': g.name, 'players': len(g.players), 'bots': count_bots_in_game(g), 'locked': g.password != '', 'expansions': g.expansions} for g in open_lobbies if g.started]) Metrics.send_metric('lobbies', points=[sum(not g.is_replay for g in games.values())]) Metrics.send_metric('online_players', points=[online_players]) @@ -268,6 +272,7 @@ def private(sid): def toggle_expansion(sid, expansion_name): g = sio.get_session(sid).game g.toggle_expansion(expansion_name) + advertise_lobbies() @sio.event @bang_handler @@ -476,6 +481,7 @@ def chat_message(sid, msg, pl=None): while any((p for p in ses.game.players if p.name == bot.name)): bot = Player(f'AI_{random.randint(0,10)}', 'bot', bot=True) ses.game.add_player(bot) + advertise_lobbies() sio.start_background_task(bot.bot_spin) return if '/replay' in msg and not '/replayspeed' in msg and not '/replaypov' in msg: @@ -515,6 +521,7 @@ def chat_message(sid, msg, pl=None): 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() + advertise_lobbies() return elif '/togglecomp' in msg and ses.game: ses.game.toggle_competitive() diff --git a/frontend/src/App.vue b/frontend/src/App.vue index ec30545..726665f 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -13,7 +13,7 @@ - +
diff --git a/frontend/src/components/Card.vue b/frontend/src/components/Card.vue index 966cb51..9fd488b 100644 --- a/frontend/src/components/Card.vue +++ b/frontend/src/components/Card.vue @@ -137,6 +137,53 @@ export default { ); border: 2pt solid rgb(50 122 172); } +.card.back.high-noon{ + color:var(--bg-color); + background: repeating-linear-gradient( + 45deg, + rgb(198 78 45), + rgb(198 78 45) 5px, + rgb(178 58 25) 5px, + rgb(178 58 25) 10px + ); + border: 2pt solid rgb(198 78 45); +} +.card.back.the-valley-of-shadows{ + color:var(--bg-color); + background: repeating-linear-gradient( + 45deg, + rgb(98 88 85), + rgb(98 88 85) 5px, + rgb(78 68 65) 5px, + rgb(78 68 65) 10px + ); + box-shadow: + 0 0 0 3pt rgb(98 88 85), + 0 0 0 6pt var(--bg-color), + 0 0 5pt 6pt #aaa; +} +.card.back.cant-play { + transform: scale(0.9); + filter: grayscale(1); + opacity: 0.5; +} +.card.back.cant-play:hover { + transform: scale(0.95); + filter: grayscale(0.6); + opacity: 0.8; +} +.beta::after { + content: "Beta"; + position: absolute; + bottom: -12pt; + right: -12pt; + background: red; + font-size: 10pt; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + font-weight: bold; + padding: 4pt; + border-radius: 12pt; +} .avatar { position: absolute; width: 36pt; @@ -166,6 +213,9 @@ export default { top: -10pt; font-size: 11pt; } +.card.back h4{ + font-size: 12pt; +} .card .emoji { position: absolute; text-align: center; @@ -180,7 +230,7 @@ export default { .card.must-be-used { filter: drop-shadow(0 0 5px red); } -.fistful-of-cards .emoji, .high-noon .emoji{ +.fistful-of-cards .emoji, .high-noon .emoji, .exp-pack .emoji{ top:auto !important; bottom:15% !important; } diff --git a/frontend/src/components/Deck.vue b/frontend/src/components/Deck.vue index bff6622..3aa070d 100644 --- a/frontend/src/components/Deck.vue +++ b/frontend/src/components/Deck.vue @@ -1,11 +1,10 @@