Bombsquad-Ballistica-Modded.../dist/ba_data/python/bauiv1lib/debug.py

388 lines
13 KiB
Python
Raw Normal View History

2021-03-29 03:24:13 +05:30
# Released under the MIT License. See LICENSE for details.
#
"""UIs for debugging purposes."""
from __future__ import annotations
2023-08-13 17:21:49 +05:30
import logging
from typing import cast
2021-03-29 03:24:13 +05:30
2023-08-13 17:21:49 +05:30
import bauiv1 as bui
2021-03-29 03:24:13 +05:30
2023-08-13 17:21:49 +05:30
class DebugWindow(bui.Window):
2021-03-29 03:24:13 +05:30
"""Window for debugging internal values."""
2022-10-01 14:51:35 +05:30
def __init__(self, transition: str | None = 'in_right'):
2021-03-29 03:24:13 +05:30
# pylint: disable=too-many-statements
# pylint: disable=cyclic-import
2023-08-13 17:21:49 +05:30
from bauiv1lib import popup
2021-03-29 03:24:13 +05:30
2023-08-13 17:21:49 +05:30
assert bui.app.classic is not None
bui.app.ui_v1.set_main_menu_location('Benchmarks & Stress Tests')
uiscale = bui.app.ui_v1.uiscale
2021-03-29 03:24:13 +05:30
self._width = width = 580
self._height = height = (
350
2023-08-13 17:21:49 +05:30
if uiscale is bui.UIScale.SMALL
2024-05-19 18:25:43 +05:30
else 420 if uiscale is bui.UIScale.MEDIUM else 520
)
2021-03-29 03:24:13 +05:30
self._scroll_width = self._width - 100
self._scroll_height = self._height - 120
self._sub_width = self._scroll_width * 0.95
self._sub_height = 520
self._stress_test_game_type = 'Random'
self._stress_test_playlist = '__default__'
self._stress_test_player_count = 8
self._stress_test_round_duration = 30
self._r = 'debugWindow'
2023-08-13 17:21:49 +05:30
uiscale = bui.app.ui_v1.uiscale
super().__init__(
2023-08-13 17:21:49 +05:30
root_widget=bui.containerwidget(
size=(width, height),
transition=transition,
scale=(
2.35
2023-08-13 17:21:49 +05:30
if uiscale is bui.UIScale.SMALL
2024-05-19 18:25:43 +05:30
else 1.55 if uiscale is bui.UIScale.MEDIUM else 1.0
),
stack_offset=(
(0, -30) if uiscale is bui.UIScale.SMALL else (0, 0)
),
)
)
2021-03-29 03:24:13 +05:30
2023-08-13 17:21:49 +05:30
self._done_button = btn = bui.buttonwidget(
2021-03-29 03:24:13 +05:30
parent=self._root_widget,
position=(40, height - 67),
size=(120, 60),
scale=0.8,
autoselect=True,
2023-08-13 17:21:49 +05:30
label=bui.Lstr(resource='doneText'),
on_activate_call=self._done,
)
2023-08-13 17:21:49 +05:30
bui.containerwidget(edit=self._root_widget, cancel_button=btn)
bui.textwidget(
parent=self._root_widget,
position=(0, height - 60),
size=(width, 30),
2023-08-13 17:21:49 +05:30
text=bui.Lstr(resource=self._r + '.titleText'),
h_align='center',
2023-08-13 17:21:49 +05:30
color=bui.app.ui_v1.title_color,
v_align='center',
maxwidth=260,
)
2021-03-29 03:24:13 +05:30
2023-08-13 17:21:49 +05:30
self._scrollwidget = bui.scrollwidget(
2021-03-29 03:24:13 +05:30
parent=self._root_widget,
highlight=False,
size=(self._scroll_width, self._scroll_height),
position=((self._width - self._scroll_width) * 0.5, 50),
)
2023-08-13 17:21:49 +05:30
bui.containerwidget(edit=self._scrollwidget, claims_left_right=True)
2021-03-29 03:24:13 +05:30
2023-08-13 17:21:49 +05:30
self._subcontainer = bui.containerwidget(
parent=self._scrollwidget,
size=(self._sub_width, self._sub_height),
background=False,
)
2021-03-29 03:24:13 +05:30
v = self._sub_height - 70
button_width = 300
2023-08-13 17:21:49 +05:30
btn = bui.buttonwidget(
2021-03-29 03:24:13 +05:30
parent=self._subcontainer,
position=((self._sub_width - button_width) * 0.5, v),
size=(button_width, 60),
autoselect=True,
2023-08-13 17:21:49 +05:30
label=bui.Lstr(resource=self._r + '.runCPUBenchmarkText'),
on_activate_call=self._run_cpu_benchmark_pressed,
)
2023-08-13 17:21:49 +05:30
bui.widget(
edit=btn, up_widget=self._done_button, left_widget=self._done_button
)
2021-03-29 03:24:13 +05:30
v -= 60
2023-08-13 17:21:49 +05:30
bui.buttonwidget(
parent=self._subcontainer,
position=((self._sub_width - button_width) * 0.5, v),
size=(button_width, 60),
autoselect=True,
2023-08-13 17:21:49 +05:30
label=bui.Lstr(resource=self._r + '.runGPUBenchmarkText'),
on_activate_call=self._run_gpu_benchmark_pressed,
)
2021-03-29 03:24:13 +05:30
v -= 60
2023-08-13 17:21:49 +05:30
bui.buttonwidget(
2021-03-29 03:24:13 +05:30
parent=self._subcontainer,
position=((self._sub_width - button_width) * 0.5, v),
size=(button_width, 60),
autoselect=True,
2023-08-13 17:21:49 +05:30
label=bui.Lstr(resource=self._r + '.runMediaReloadBenchmarkText'),
on_activate_call=self._run_media_reload_benchmark_pressed,
)
2021-03-29 03:24:13 +05:30
v -= 60
2023-08-13 17:21:49 +05:30
bui.textwidget(
parent=self._subcontainer,
position=(self._sub_width * 0.5, v + 22),
size=(0, 0),
2023-08-13 17:21:49 +05:30
text=bui.Lstr(resource=self._r + '.stressTestTitleText'),
maxwidth=200,
2023-08-13 17:21:49 +05:30
color=bui.app.ui_v1.heading_color,
scale=0.85,
h_align='center',
v_align='center',
)
2021-03-29 03:24:13 +05:30
v -= 45
x_offs = 165
2023-08-13 17:21:49 +05:30
bui.textwidget(
parent=self._subcontainer,
position=(x_offs - 10, v + 22),
size=(0, 0),
2023-08-13 17:21:49 +05:30
text=bui.Lstr(resource=self._r + '.stressTestPlaylistTypeText'),
maxwidth=130,
2023-08-13 17:21:49 +05:30
color=bui.app.ui_v1.heading_color,
scale=0.65,
h_align='right',
v_align='center',
)
2021-03-29 03:24:13 +05:30
popup.PopupMenu(
parent=self._subcontainer,
position=(x_offs, v),
width=150,
choices=['Random', 'Teams', 'Free-For-All'],
choices_display=[
2023-08-13 17:21:49 +05:30
bui.Lstr(resource=a)
for a in [
'randomText',
'playModes.teamsText',
'playModes.freeForAllText',
2021-03-29 03:24:13 +05:30
]
],
current_choice='Auto',
on_value_change_call=self._stress_test_game_type_selected,
)
2021-03-29 03:24:13 +05:30
v -= 46
2023-08-13 17:21:49 +05:30
bui.textwidget(
parent=self._subcontainer,
position=(x_offs - 10, v + 22),
size=(0, 0),
2023-08-13 17:21:49 +05:30
text=bui.Lstr(resource=self._r + '.stressTestPlaylistNameText'),
maxwidth=130,
2023-08-13 17:21:49 +05:30
color=bui.app.ui_v1.heading_color,
scale=0.65,
h_align='right',
v_align='center',
)
2021-03-29 03:24:13 +05:30
2023-08-13 17:21:49 +05:30
self._stress_test_playlist_name_field = bui.textwidget(
2021-03-29 03:24:13 +05:30
parent=self._subcontainer,
position=(x_offs + 5, v - 5),
size=(250, 46),
text=self._stress_test_playlist,
h_align='left',
v_align='center',
autoselect=True,
color=(0.9, 0.9, 0.9, 1.0),
2023-08-13 17:21:49 +05:30
description=bui.Lstr(
resource=self._r + '.stressTestPlaylistDescriptionText'
),
2021-03-29 03:24:13 +05:30
editable=True,
padding=4,
)
2021-03-29 03:24:13 +05:30
v -= 29
x_sub = 60
# Player count.
2023-08-13 17:21:49 +05:30
bui.textwidget(
parent=self._subcontainer,
position=(x_offs - 10, v),
size=(0, 0),
2023-08-13 17:21:49 +05:30
text=bui.Lstr(resource=self._r + '.stressTestPlayerCountText'),
color=(0.8, 0.8, 0.8, 1.0),
h_align='right',
v_align='center',
scale=0.65,
maxwidth=130,
)
2023-08-13 17:21:49 +05:30
self._stress_test_player_count_text = bui.textwidget(
2021-03-29 03:24:13 +05:30
parent=self._subcontainer,
position=(246 - x_sub, v - 14),
size=(60, 28),
editable=False,
color=(0.3, 1.0, 0.3, 1.0),
h_align='right',
v_align='center',
text=str(self._stress_test_player_count),
padding=2,
)
2023-08-13 17:21:49 +05:30
bui.buttonwidget(
parent=self._subcontainer,
position=(330 - x_sub, v - 11),
size=(28, 28),
label='-',
autoselect=True,
2023-08-13 17:21:49 +05:30
on_activate_call=bui.Call(self._stress_test_player_count_decrement),
repeat=True,
enable_sound=True,
)
2023-08-13 17:21:49 +05:30
bui.buttonwidget(
parent=self._subcontainer,
position=(380 - x_sub, v - 11),
size=(28, 28),
label='+',
autoselect=True,
2023-08-13 17:21:49 +05:30
on_activate_call=bui.Call(self._stress_test_player_count_increment),
repeat=True,
enable_sound=True,
)
2021-03-29 03:24:13 +05:30
v -= 42
# Round duration.
2023-08-13 17:21:49 +05:30
bui.textwidget(
parent=self._subcontainer,
position=(x_offs - 10, v),
size=(0, 0),
2023-08-13 17:21:49 +05:30
text=bui.Lstr(resource=self._r + '.stressTestRoundDurationText'),
color=(0.8, 0.8, 0.8, 1.0),
h_align='right',
v_align='center',
scale=0.65,
maxwidth=130,
)
2023-08-13 17:21:49 +05:30
self._stress_test_round_duration_text = bui.textwidget(
2021-03-29 03:24:13 +05:30
parent=self._subcontainer,
position=(246 - x_sub, v - 14),
size=(60, 28),
editable=False,
color=(0.3, 1.0, 0.3, 1.0),
h_align='right',
v_align='center',
text=str(self._stress_test_round_duration),
padding=2,
)
2023-08-13 17:21:49 +05:30
bui.buttonwidget(
parent=self._subcontainer,
position=(330 - x_sub, v - 11),
size=(28, 28),
label='-',
autoselect=True,
2023-08-13 17:21:49 +05:30
on_activate_call=bui.Call(
self._stress_test_round_duration_decrement
),
repeat=True,
enable_sound=True,
)
2023-08-13 17:21:49 +05:30
bui.buttonwidget(
parent=self._subcontainer,
position=(380 - x_sub, v - 11),
size=(28, 28),
label='+',
autoselect=True,
2023-08-13 17:21:49 +05:30
on_activate_call=bui.Call(
self._stress_test_round_duration_increment
),
repeat=True,
enable_sound=True,
)
2021-03-29 03:24:13 +05:30
v -= 82
2023-08-13 17:21:49 +05:30
btn = bui.buttonwidget(
2021-03-29 03:24:13 +05:30
parent=self._subcontainer,
position=((self._sub_width - button_width) * 0.5, v),
size=(button_width, 60),
autoselect=True,
2023-08-13 17:21:49 +05:30
label=bui.Lstr(resource=self._r + '.runStressTestText'),
on_activate_call=self._stress_test_pressed,
)
2023-08-13 17:21:49 +05:30
bui.widget(btn, show_buffer_bottom=50)
2021-03-29 03:24:13 +05:30
def _stress_test_player_count_decrement(self) -> None:
self._stress_test_player_count = max(
1, self._stress_test_player_count - 1
)
2023-08-13 17:21:49 +05:30
bui.textwidget(
edit=self._stress_test_player_count_text,
text=str(self._stress_test_player_count),
)
2021-03-29 03:24:13 +05:30
def _stress_test_player_count_increment(self) -> None:
self._stress_test_player_count = self._stress_test_player_count + 1
2023-08-13 17:21:49 +05:30
bui.textwidget(
edit=self._stress_test_player_count_text,
text=str(self._stress_test_player_count),
)
2021-03-29 03:24:13 +05:30
def _stress_test_round_duration_decrement(self) -> None:
self._stress_test_round_duration = max(
10, self._stress_test_round_duration - 10
)
2023-08-13 17:21:49 +05:30
bui.textwidget(
edit=self._stress_test_round_duration_text,
text=str(self._stress_test_round_duration),
)
2021-03-29 03:24:13 +05:30
def _stress_test_round_duration_increment(self) -> None:
self._stress_test_round_duration = self._stress_test_round_duration + 10
2023-08-13 17:21:49 +05:30
bui.textwidget(
edit=self._stress_test_round_duration_text,
text=str(self._stress_test_round_duration),
)
2021-03-29 03:24:13 +05:30
def _stress_test_game_type_selected(self, game_type: str) -> None:
self._stress_test_game_type = game_type
def _run_cpu_benchmark_pressed(self) -> None:
2023-08-13 17:21:49 +05:30
if bui.app.classic is None:
logging.warning('run-cpu-benchmark requires classic')
return
bui.app.classic.run_cpu_benchmark()
2021-03-29 03:24:13 +05:30
def _run_gpu_benchmark_pressed(self) -> None:
2023-08-13 17:21:49 +05:30
if bui.app.classic is None:
logging.warning('run-gpu-benchmark requires classic')
return
bui.app.classic.run_gpu_benchmark()
2021-03-29 03:24:13 +05:30
def _run_media_reload_benchmark_pressed(self) -> None:
2023-08-13 17:21:49 +05:30
if bui.app.classic is None:
logging.warning('run-media-reload-benchmark requires classic')
return
bui.app.classic.run_media_reload_benchmark()
2021-03-29 03:24:13 +05:30
def _stress_test_pressed(self) -> None:
2023-08-13 17:21:49 +05:30
if bui.app.classic is None:
logging.warning('stress-test requires classic')
return
2023-08-13 17:21:49 +05:30
bui.app.classic.run_stress_test(
2021-03-29 03:24:13 +05:30
playlist_type=self._stress_test_game_type,
playlist_name=cast(
2023-08-13 17:21:49 +05:30
str, bui.textwidget(query=self._stress_test_playlist_name_field)
),
2021-03-29 03:24:13 +05:30
player_count=self._stress_test_player_count,
round_duration=self._stress_test_round_duration,
)
2023-08-13 17:21:49 +05:30
bui.containerwidget(edit=self._root_widget, transition='out_right')
2021-03-29 03:24:13 +05:30
def _done(self) -> None:
# pylint: disable=cyclic-import
2023-08-13 17:21:49 +05:30
from bauiv1lib.settings.advanced import AdvancedSettingsWindow
2023-12-21 15:55:50 +05:30
# no-op if our underlying widget is dead or on its way out.
if not self._root_widget or self._root_widget.transitioning_out:
return
2023-08-13 17:21:49 +05:30
bui.containerwidget(edit=self._root_widget, transition='out_right')
assert bui.app.classic is not None
bui.app.ui_v1.set_main_menu_window(
2023-12-21 15:55:50 +05:30
AdvancedSettingsWindow(transition='in_left').get_root_widget(),
from_window=self._root_widget,
)