From ebbee0b4293c99582ec9627f111a6d5984a90f7a Mon Sep 17 00:00:00 2001 From: Eric Froemling Date: Sun, 26 Jan 2025 22:25:27 -0800 Subject: [PATCH] benchmarks window is now screen-size-responsive --- .efrocachemap | 48 +++++------ CHANGELOG.md | 2 +- src/assets/ba_data/python/baenv.py | 2 +- .../python/bauiv1lib/settings/benchmarks.py | 81 ++++++++++++------- src/ballistica/shared/ballistica.cc | 2 +- 5 files changed, 77 insertions(+), 58 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index 453fb578..74499d98 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4174,22 +4174,22 @@ "build/assets/windows/Win32/ucrtbased.dll": "bfd1180c269d3950b76f35a63655e9e1", "build/assets/windows/Win32/vc_redist.x86.exe": "15a5f1f876503885adbdf5b3989b3718", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "722e924999f96723422c4c51ccc4301e", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "e1d195dde44deb8504bb07079e2e01c5", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "7ec7c9ba69a3711ab8491212feb57967", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "ec6b2b506d5724dad82b65066f6ac1d9", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "b2115191844630e8521cbaac8073aead", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "1bfe173f33cf77fa3d981974e5c4f7a3", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "66f0835ba780aa1b5c32ef283ffd2cff", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "4b43abb7429c00579b7ee3790efc7a5b", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "4b9a8dbcc1a6bbb03fc36b0028fe7868", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "d20aa0c6d35d5cc8af5f9ae7a9d11cfe", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "6588113ddee0dd658238048f3a5ae3fc", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "3b7e9f20b7c12f881e77069437c17964", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "4eafd8d6c03dd4f384088ee4cfb53ab1", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "4989042f5c08f1f3c8906cd470c907fc", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "42eede22654e3aeca5c8a45165892e6e", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "0e61494f5be147aad419577a3f61c397", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "361a2a072cd9783816ec073b9d54f576", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "d318e35eff35b758f125dfab317f4573", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "45220e04a0db2fec434fe52c907079f4", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "0b1dca00b854aee3ebab2ab2b0e53476", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "1a1c5116969fbfdcfff3bb12fbf0bac1", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "df3aaa767747f59376821e58a9e1c84f", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "84ba732a0f8782ac1c058de7c83923b3", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "b06d290cf6440334fb2f9009956fadce", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "0b1e8820b31f988350d33c23253a516c", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "17d57a302bb261b744bd39aece04e6bb", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "dbdea9264fd2c4aa78bf2147fede4ceb", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "df86bfc9a1d5a49e18d88682c48db5b2", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "80e4c921ddfa5b683cb5cd37873e0778", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "f16aaf99696639ff5347f02f8983ca0e", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "ae97c523b56caf8cb262528e7013ec2a", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "427543084f3948f85c18dfc99ee0d8bd", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "2ee184af9b80d60afea7f97aba29cb16", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "37c5f795ccbaeffeb5d6ede4fe9f3c19", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "2ee184af9b80d60afea7f97aba29cb16", @@ -4202,14 +4202,14 @@ "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "d258789fd7bdc5092aab87ccb4601921", "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "314516411d5ac8e991a6f742f399d4de", "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "d258789fd7bdc5092aab87ccb4601921", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "87cfba45006c71fbabbf14ed9bd18be1", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "5a7ff141644a21ecf7c80caf5f854301", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "ae4a8e4c787da6936f721142b62aee5e", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "7c3e81103f2d5639c3457d55c984cb04", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "61fbdcc344575d6ebef55d74174fd8fe", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "971810c64b64a8c399bcd2ea57bf23b0", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "a10155f887a3d8d116a97ed9517ef0c8", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "ce5b7c177301bd05f671b43610748299", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "e921a853645f35ddea3c346e4a08191b", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "dbe77550cafe948486d0c47bae7f1103", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "a156a0dad723eefc972bdc8686be352a", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "d79da22f29268cc0bca185ff73ff2313", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "7de0f6794c804b3ac2deee09b7c73178", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "6ab2bde7ae061ada40fbd4f41bc6ae3a", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "3a2ad0a173eb85ff96bc6c27c379c47e", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "9d4ebc74437edade46380227aa770324", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "794d258d59fd17a61752843a9a0551ad", "src/ballistica/base/mgen/pyembed/binding_base.inc": "06042d31df0ff9af96b99477162e2a91", diff --git a/CHANGELOG.md b/CHANGELOG.md index 896b545d..22299ce7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.37 (build 22255, api 9, 2025-01-26) +### 1.7.37 (build 22256, api 9, 2025-01-26) - Bumping api version to 9. As you'll see below, there's some UI changes that will require a bit of work for any UI mods to adapt to. If your mods don't touch UI stuff at all you can simply bump your api version and call it a day. diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 078023fe..68cc0158 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -53,7 +53,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 22255 +TARGET_BALLISTICA_BUILD = 22256 TARGET_BALLISTICA_VERSION = '1.7.37' diff --git a/src/assets/ba_data/python/bauiv1lib/settings/benchmarks.py b/src/assets/ba_data/python/bauiv1lib/settings/benchmarks.py index 668bc9b3..23996013 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/benchmarks.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/benchmarks.py @@ -19,45 +19,55 @@ class BenchmarksAndStressTestsWindow(bui.MainWindow): transition: str | None = 'in_right', origin_widget: bui.Widget | None = None, ): + # pylint: disable=too-many-locals # pylint: disable=too-many-statements # pylint: disable=cyclic-import from bauiv1lib import popup uiscale = bui.app.ui_v1.uiscale - self._width = width = 650 if uiscale is bui.UIScale.SMALL else 580 + self._width = width = 1200 if uiscale is bui.UIScale.SMALL else 580 self._height = height = ( - 400 + 900 if uiscale is bui.UIScale.SMALL else 420 if uiscale is bui.UIScale.MEDIUM else 520 ) - yoffs = -30 if uiscale is bui.UIScale.SMALL else 0 - - self._scroll_width = self._width - 100 - self._scroll_height = self._height - ( - 180 if uiscale is bui.UIScale.SMALL else 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 + # Do some fancy math to fill all available screen area up to the + # size of our backing container. This lets us fit to the exact + # screen shape at small ui scale. + screensize = bui.get_virtual_screen_size() + scale = ( + 2.32 + if uiscale is bui.UIScale.SMALL + else 1.4 if uiscale is bui.UIScale.MEDIUM else 1.0 + ) + # Calc screen size in our local container space and clamp to a + # bit smaller than our container size. + target_width = min(self._width - 70, screensize[0] / scale) + target_height = min(self._height - 70, screensize[1] / scale) + + # To get top/left coords, go to the center of our window and + # offset by half the width/height of our target area. + yoffs = 0.5 * self._height + 0.5 * target_height + 30.0 + + self._scroll_width = target_width + self._scroll_height = target_height - 31 + self._scroll_bottom = yoffs - 60 - self._scroll_height + + self._sub_width = min(510.0, self._scroll_width) + self._sub_height = 520 + self._r = 'debugWindow' uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(width, height), - scale=( - 2.32 - if uiscale is bui.UIScale.SMALL - 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) - ), + scale=scale, toolbar_visibility=( 'menu_minimal' if uiscale is bui.UIScale.SMALL @@ -66,34 +76,41 @@ class BenchmarksAndStressTestsWindow(bui.MainWindow): ), transition=transition, origin_widget=origin_widget, + # We're affected by screen size only at small ui-scale. + refresh_on_screen_size_changes=uiscale is bui.UIScale.SMALL, ) if bui.app.ui_v1.uiscale is bui.UIScale.SMALL: bui.containerwidget( edit=self._root_widget, on_cancel_call=self.main_window_back ) - self._done_button = bui.get_special_widget('back_button') + self._back_button = bui.get_special_widget('back_button') else: - self._done_button = btn = bui.buttonwidget( + self._back_button = btn = bui.buttonwidget( parent=self._root_widget, - position=(40, height - 67 + yoffs), - size=(120, 60), + position=(40, yoffs - 53), + size=(60, 60), scale=0.8, autoselect=True, - label=bui.Lstr(resource='doneText'), + label=bui.charstr(bui.SpecialChar.BACK), + button_type='backSmall', on_activate_call=self.main_window_back, ) bui.containerwidget(edit=self._root_widget, cancel_button=btn) bui.textwidget( parent=self._root_widget, - position=(0, height - 60 + yoffs), - size=(width, 30), + position=( + self._width * 0.5, + yoffs - (45 if uiscale is bui.UIScale.SMALL else 30), + ), + size=(0, 0), + maxwidth=360, + scale=0.8 if uiscale is bui.UIScale.SMALL else 1.0, text=bui.Lstr(resource=f'{self._r}.titleText'), h_align='center', - color=bui.app.ui_v1.title_color, v_align='center', - maxwidth=260, + color=bui.app.ui_v1.title_color, ) self._scrollwidget = bui.scrollwidget( @@ -101,9 +118,11 @@ class BenchmarksAndStressTestsWindow(bui.MainWindow): highlight=False, size=(self._scroll_width, self._scroll_height), position=( - (self._width - self._scroll_width) * 0.5, - (115 if uiscale is bui.UIScale.SMALL else 50) + yoffs, + self._width * 0.5 - self._scroll_width * 0.5, + self._scroll_bottom, ), + border_opacity=0.4, + center_small_content_horizontally=True, ) bui.containerwidget(edit=self._scrollwidget, claims_left_right=True) @@ -124,7 +143,7 @@ class BenchmarksAndStressTestsWindow(bui.MainWindow): on_activate_call=self._run_cpu_benchmark_pressed, ) bui.widget( - edit=btn, up_widget=self._done_button, left_widget=self._done_button + edit=btn, up_widget=self._back_button, left_widget=self._back_button ) v -= 60 diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 71436695..4c0a6931 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 22255; +const int kEngineBuildNumber = 22256; const char* kEngineVersion = "1.7.37"; const int kEngineApiVersion = 9;