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:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user