tidying and lint fixes

This commit is contained in:
Eric Froemling 2024-09-28 16:18:05 -07:00
parent 59717449ae
commit 6ff6f5e6d9
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
3 changed files with 61 additions and 46 deletions

View File

@ -4,12 +4,15 @@
from __future__ import annotations from __future__ import annotations
from typing import override from typing import override, TYPE_CHECKING
import bascenev1 as bs import bascenev1 as bs
from bascenev1lib.activity.multiteamscore import MultiTeamScoreScreenActivity from bascenev1lib.activity.multiteamscore import MultiTeamScoreScreenActivity
if TYPE_CHECKING:
from typing import Any
class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity): class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
"""Final score screen for a team series.""" """Final score screen for a team series."""
@ -24,7 +27,8 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
self._allow_server_transition = True self._allow_server_transition = True
self._tips_text = None self._tips_text = None
self._default_show_tips = False self._default_show_tips = False
self._topscored_player: list[object] | None = None self._ffa_top_player_info: list[Any] | None = None
self._ffa_top_player_rec: bs.PlayerRecord | None = None
@override @override
def on_begin(self) -> None: def on_begin(self) -> None:
@ -72,9 +76,15 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
) )
player_entries.sort(reverse=True, key=lambda x: x[0]) player_entries.sort(reverse=True, key=lambda x: x[0])
if len(player_entries) > 0: if len(player_entries) > 0:
self._topscored_player = list(player_entries[0]) # Store some info for the top ffa player so we can
self._topscored_player[1] = self._topscored_player[2].getname() # show winner info even if they leave.
self._topscored_player[2] = self._topscored_player[2].get_icon() self._ffa_top_player_info = list(player_entries[0])
self._ffa_top_player_info[1] = self._ffa_top_player_info[
2
].getname()
self._ffa_top_player_info[2] = self._ffa_top_player_info[
2
].get_icon()
else: else:
for _pkey, prec in self.stats.get_records().items(): for _pkey, prec in self.stats.get_records().items():
player_entries.append((prec.score, prec.name_full, prec)) player_entries.append((prec.score, prec.name_full, prec))
@ -377,40 +387,41 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
v_offs = 0.0 v_offs = 0.0
tdelay += len(player_entries) * 8 * t_incr tdelay += len(player_entries) * 8 * t_incr
for _score, name, prec in player_entries: for _score, name, prec in player_entries:
if prec.player.in_game: if not prec.player.in_game:
tdelay -= 4 * t_incr continue
v_offs -= 40 tdelay -= 4 * t_incr
Text( v_offs -= 40
( Text(
str(prec.team.customdata['score']) (
if self._is_ffa str(prec.team.customdata['score'])
else str(prec.score) if self._is_ffa
), else str(prec.score)
color=(0.5, 0.5, 0.5, 1.0), ),
position=(ts_h_offs + 230, ts_height / 2 + v_offs), color=(0.5, 0.5, 0.5, 1.0),
h_align=Text.HAlign.RIGHT, position=(ts_h_offs + 230, ts_height / 2 + v_offs),
transition=Text.Transition.IN_RIGHT, h_align=Text.HAlign.RIGHT,
transition_delay=tdelay, transition=Text.Transition.IN_RIGHT,
).autoretain() transition_delay=tdelay,
tdelay -= 4 * t_incr ).autoretain()
tdelay -= 4 * t_incr
Image( Image(
prec.get_icon(), prec.get_icon(),
position=(ts_h_offs - 72, ts_height / 2 + v_offs + 15), position=(ts_h_offs - 72, ts_height / 2 + v_offs + 15),
scale=(30, 30), scale=(30, 30),
transition=Image.Transition.IN_LEFT, transition=Image.Transition.IN_LEFT,
transition_delay=tdelay, transition_delay=tdelay,
).autoretain() ).autoretain()
Text( Text(
bs.Lstr(value=name), bs.Lstr(value=name),
position=(ts_h_offs - 50, ts_height / 2 + v_offs + 15), position=(ts_h_offs - 50, ts_height / 2 + v_offs + 15),
h_align=Text.HAlign.LEFT, h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER, v_align=Text.VAlign.CENTER,
maxwidth=180, maxwidth=180,
color=bs.safecolor(prec.team.color + (1,)), color=bs.safecolor(prec.team.color + (1,)),
transition=Text.Transition.IN_RIGHT, transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay, transition_delay=tdelay,
).autoretain() ).autoretain()
bs.timer(15.0, bs.WeakCall(self._show_tips)) bs.timer(15.0, bs.WeakCall(self._show_tips))
@ -440,16 +451,20 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
).autoretain() ).autoretain()
else: else:
offs_v = -80 offs_v = -80
assert isinstance(self.session, bs.MultiTeamSession)
series_length = self.session.get_ffa_series_length() series_length = self.session.get_ffa_series_length()
icon: dict | None
# Pull live player info if they're still around.
if len(team.players) == 1: if len(team.players) == 1:
icon = team.players[0].get_icon() icon = team.players[0].get_icon()
player_name = team.players[0].getname(full=True, icon=False) player_name = team.players[0].getname(full=True, icon=False)
# Otherwise use the special info we stored when we came in.
elif ( elif (
self._topscored_player is not None and self._ffa_top_player_info is not None
self._topscored_player[0] >= series_length and self._ffa_top_player_info[0] >= series_length
): ):
icon = self._topscored_player[2] icon = self._ffa_top_player_info[2]
player_name = self._topscored_player[1] player_name = self._ffa_top_player_info[1]
else: else:
icon = None icon = None
player_name = 'Player Not Found' player_name = 'Player Not Found'

View File

@ -379,7 +379,7 @@ class Scoreboard:
score_split: float = 0.7, score_split: float = 0.7,
pos: Sequence[float] | None = None, pos: Sequence[float] | None = None,
width: float | None = None, width: float | None = None,
height: float | None = None height: float | None = None,
): ):
"""Instantiate a scoreboard. """Instantiate a scoreboard.

View File

@ -10,6 +10,7 @@ from typing import cast, override
import bauiv1 as bui import bauiv1 as bui
import bascenev1 as bs import bascenev1 as bs
class BenchmarksAndStressTestsWindow(bui.MainWindow): class BenchmarksAndStressTestsWindow(bui.MainWindow):
"""Window for launching benchmarks or stress tests.""" """Window for launching benchmarks or stress tests."""
@ -383,9 +384,8 @@ class BenchmarksAndStressTestsWindow(bui.MainWindow):
bui.app.classic.run_stress_test( bui.app.classic.run_stress_test(
playlist_type=self._stress_test_game_type, playlist_type=self._stress_test_game_type,
playlist_name=cast( playlist_name=cast(
str, bui.textwidget( str,
query=self._stress_test_playlist_name_field bui.textwidget(query=self._stress_test_playlist_name_field),
)
), ),
player_count=self._stress_test_player_count, player_count=self._stress_test_player_count,
round_duration=self._stress_test_round_duration, round_duration=self._stress_test_round_duration,