Populate team rosters from a LIVESTATS team token and tag the damage list

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <[email protected]>
This commit is contained in:
Debian
2026-09-18 14:26:06 +02:00
co-authored by Sisyphus
parent cbeab1ae45
commit c1b5f6d86a
3 changed files with 38 additions and 15 deletions
+16 -8
View File
@@ -18,9 +18,10 @@ import time
from collections import deque
from .constants import (INFO_WINDOW_HEIGHT, INFO_WINDOW_Y, OUTPUT_WINDOW_Y, INPUT_WINDOW_HEIGHT,
MIN_ROWS, MIN_COLS, OUTPUT_SCROLLBACK_LINES, TEAM_MODES, MAX_COMMAND_HISTORY)
MIN_ROWS, MIN_COLS, OUTPUT_SCROLLBACK_LINES, TEAM_MODES, MAX_COMMAND_HISTORY,
TEAM_COLORS)
from .cvars import autocomplete, COMMAND_SIGNATURES, get_signature_with_highlight, get_argument_suggestions, COMMAND_ARGUMENTS
from .formatter import strip_color_codes
from .formatter import get_team_prefix, strip_color_codes
logger = logging.getLogger('ui')
@@ -431,9 +432,11 @@ def _draw_server_menu(screen, servers, names, selected):
screen.refresh()
def format_damage_summary(server_info):
"""One-line damage summary (top 3 by damage dealt) from LIVESTATS counters;
None when no damage data exists yet. Dealt/taken are stored as strings."""
def format_damage_summary(server_info, player_tracker=None):
"""One-line damage summary (top 3 by damage dealt) from LIVESTATS counters,
tagged with the tracked team of each player (data-driven, so tags work
during warmup too); None when no damage data exists yet. Dealt/taken are
stored as strings."""
entries = []
for player_name, player_data in server_info.players.items():
try:
@@ -447,8 +450,13 @@ def format_damage_summary(server_info):
if not entries:
return None
entries.sort(key=lambda x: x[1], reverse=True)
summary = ' '.join(f"{name} {dealt}/{taken}" for name, dealt, taken in entries[:3])
return f"^8^3DMG^7 {summary}\n"
parts = []
for name, dealt, taken in entries[:3]:
prefix = ''
if player_tracker is not None:
prefix = TEAM_COLORS.get(player_tracker.get_team(name), '')
parts.append(f"{prefix}{name} {dealt}/{taken}")
return f"^8^3DMG^7 {' '.join(parts)}\n"
class UIManager:
@@ -893,7 +901,7 @@ class UIManager:
print_colored(self.info_window, line, 0)
# Damage summary from LIVESTATS counters (top 3 by damage dealt)
damage_line = format_damage_summary(server_info)
damage_line = format_damage_summary(server_info, game_state.player_tracker)
if damage_line:
print_colored(self.info_window, damage_line, 0)