From 02e2519f6a56211436a8c7151602bb5107c13f82 Mon Sep 17 00:00:00 2001 From: Eric Froemling Date: Mon, 27 Jan 2025 11:09:17 -0800 Subject: [PATCH] net-testing window is now screen-size-responsive --- .efrocachemap | 54 ++++++------- CHANGELOG.md | 2 +- src/assets/ba_data/python/baenv.py | 2 +- .../python/bauiv1lib/settings/advanced.py | 4 +- .../python/bauiv1lib/settings/nettesting.py | 81 ++++++++++++------- .../python/bauiv1lib/settings/testing.py | 12 +-- src/ballistica/shared/ballistica.cc | 2 +- 7 files changed, 88 insertions(+), 69 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index 74499d98..fbdf3c42 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -432,10 +432,10 @@ "build/assets/ba_data/audio/zoeOw.ogg": "b2d705c31c9dcc1efdc71394764c3beb", "build/assets/ba_data/audio/zoePickup01.ogg": "e9366dc2d2b8ab8b0c4e2c14c02d0789", "build/assets/ba_data/audio/zoeScream01.ogg": "903e0e45ee9b3373e9d9ce20c814374e", - "build/assets/ba_data/data/langdata.json": "2e943cae780ddba2b1ca27ec3c1a6b2a", + "build/assets/ba_data/data/langdata.json": "2d45fb57151526c2b175ae4eb3e5e6be", "build/assets/ba_data/data/languages/arabic.json": "d95c590f7db91a9e8b7df4b9b58c8529", "build/assets/ba_data/data/languages/belarussian.json": "009b452aa308bf2b2f7e92d9b78ba5ff", - "build/assets/ba_data/data/languages/chinese.json": "5363a79f843e6be7ef47a840f47cc17d", + "build/assets/ba_data/data/languages/chinese.json": "7ff14b51d741bb3c8e7c902d85eb8dcd", "build/assets/ba_data/data/languages/chinesetraditional.json": "bea0f9c17324591b8261015cbd80a265", "build/assets/ba_data/data/languages/croatian.json": "f36e1c6f20f2ce0d1fa8adb9c3cbf509", "build/assets/ba_data/data/languages/czech.json": "3418bee44e69be13b7f72996abe96921", @@ -467,7 +467,7 @@ "build/assets/ba_data/data/languages/tamil.json": "ead39b864228696a9b0d19344bc4b5ec", "build/assets/ba_data/data/languages/thai.json": "383540a1e9c7c131ac579f51afc87471", "build/assets/ba_data/data/languages/turkish.json": "457b05da532950390e19e7e5ce7f1d3f", - "build/assets/ba_data/data/languages/ukrainian.json": "0db55824759119aca74d2ee8ffe6daae", + "build/assets/ba_data/data/languages/ukrainian.json": "2e6877453e200d91ed5df5bfe6289020", "build/assets/ba_data/data/languages/venetian.json": "acea003316bef657925d776dd460e713", "build/assets/ba_data/data/languages/vietnamese.json": "cc578c670bfb9855f93bbdc51922d267", "build/assets/ba_data/data/maps/big_g.json": "1dd301d490643088a435ce75df971054", @@ -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": "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/full/linux_arm64_gui/debug/ballisticakit": "25a987a498d65d0f5ab2c8c9067e86f6", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "2059b78a747f80ee86388133b0e9c592", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "96b3a761ebabc1e000322220e656afd8", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "78363822c8934bf3d7a331ba3fa00416", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "49e5535ea3dbd652a1a5a77d2a57f9a2", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "d062c0b7211747c1c3257c887d3c7692", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "c6db9b6eb6577cb5b601fe4161973c81", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "e78f28148d12dafb3299874d8aa30d24", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "88f308a74316d5501527c1dd59656fc9", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "7f3bb93bc72f78deaa46a2d55242715b", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "035a6eb518b861b0cc5610210430f580", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "916c9df38d54451efb784b391bbbed8e", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "5beb3d60e0208d808eb4bcc2cccf83ba", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "e72f9e84f4671eee445ef83404664673", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "c0c655aa391070d44ccb3c15fd1c9d19", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "1201690dddae30dc112941f260cb37ef", "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": "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", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "300c12423b206062bfce1b5fcf6c2e64", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "5595169d9d757cc1c42548efd3874bdf", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "6975dcc3655b7201df6f2226fc49d085", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "49f142b145c2284bb7c5bd2d2c8e0f8a", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "92916a5d6548c8b9f9f27a2243669fe8", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "b530d8de1a0bf4a8171e8941ecb6debf", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "c6f51447573050163104f546d31f5e05", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "114ff9455657ce2d7a4360f489079360", "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 22299ce7..19de314c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.37 (build 22256, api 9, 2025-01-26) +### 1.7.37 (build 22257, 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 68cc0158..c333819f 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 = 22256 +TARGET_BALLISTICA_BUILD = 22257 TARGET_BALLISTICA_VERSION = '1.7.37' diff --git a/src/assets/ba_data/python/bauiv1lib/settings/advanced.py b/src/assets/ba_data/python/bauiv1lib/settings/advanced.py index 9986472e..a497a836 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/advanced.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/advanced.py @@ -42,7 +42,7 @@ class AdvancedSettingsWindow(bui.MainWindow): self._height = ( 490.0 if uiscale is bui.UIScale.SMALL - else 450.0 if uiscale is bui.UIScale.MEDIUM else 550.0 + else 450.0 if uiscale is bui.UIScale.MEDIUM else 600.0 ) self._lang_status_text: bui.Widget | None = None @@ -56,7 +56,7 @@ class AdvancedSettingsWindow(bui.MainWindow): scale = ( 2.2 if uiscale is bui.UIScale.SMALL - else 1.3 if uiscale is bui.UIScale.MEDIUM else 1.0 + else 1.3 if uiscale is bui.UIScale.MEDIUM else 0.9 ) # Calc screen size in our local container space and clamp to a diff --git a/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py b/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py index b8e25808..4d36f5e7 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py @@ -31,21 +31,43 @@ class NetTestingWindow(bui.MainWindow): origin_widget: bui.Widget | None = None, ): uiscale = bui.app.ui_v1.uiscale - self._width = 820 - self._height = 500 if uiscale is bui.UIScale.SMALL else 500 - yoffs = -50 if uiscale is bui.UIScale.SMALL else 0 + self._width = 1200 if uiscale is bui.UIScale.SMALL else 820 + self._height = ( + 800 + if uiscale is bui.UIScale.SMALL + else 550 if uiscale is bui.UIScale.MEDIUM else 650 + ) self._printed_lines: list[str] = [] assert bui.app.classic is not None + + # 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 = ( + 1.75 + if uiscale is bui.UIScale.SMALL + else 1.0 if uiscale is bui.UIScale.MEDIUM else 0.75 + ) + + # Calc screen size in our local container space and clamp to a + # bit smaller than our container size. + target_width = min(self._width - 90, screensize[0] / scale) + target_height = min(self._height - 90, 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 + + scroll_width = target_width + scroll_height = target_height - 52 + scroll_bottom = yoffs - 82 - scroll_height + super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), - scale=( - 1.75 - if uiscale is bui.UIScale.SMALL - else 1.2 if uiscale is bui.UIScale.MEDIUM else 0.8 - ), - stack_offset=(0, -4 if uiscale is bui.UIScale.SMALL else 0.0), + scale=scale, toolbar_visibility=( 'menu_minimal' if uiscale is bui.UIScale.SMALL @@ -54,17 +76,19 @@ class NetTestingWindow(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, ) - self._done_button: bui.Widget | None + self._back_button: bui.Widget | None if uiscale is bui.UIScale.SMALL: bui.containerwidget( edit=self._root_widget, on_cancel_call=self.main_window_back ) - self._done_button = None + self._back_button = None else: - self._done_button = bui.buttonwidget( + self._back_button = bui.buttonwidget( parent=self._root_widget, - position=(46, self._height - 77 + yoffs), + position=(46, yoffs - 77), size=(60, 60), scale=0.9, label=bui.charstr(bui.SpecialChar.BACK), @@ -73,15 +97,19 @@ class NetTestingWindow(bui.MainWindow): on_activate_call=self.main_window_back, ) bui.containerwidget( - edit=self._root_widget, cancel_button=self._done_button + edit=self._root_widget, cancel_button=self._back_button ) # Avoid squads button on small mode. - xinset = -50 if uiscale is bui.UIScale.SMALL else 0 + # xinset = -50 if uiscale is bui.UIScale.SMALL else 0 + xextra = -80 if uiscale is bui.UIScale.SMALL else 0 self._copy_button = bui.buttonwidget( parent=self._root_widget, - position=(self._width - 200 + xinset, self._height - 77 + yoffs), + position=( + self._width * 0.5 + scroll_width * 0.5 - 210 + 80 + xextra, + yoffs - 79, + ), size=(100, 60), scale=0.8, autoselect=True, @@ -91,7 +119,10 @@ class NetTestingWindow(bui.MainWindow): self._settings_button = bui.buttonwidget( parent=self._root_widget, - position=(self._width - 100 + xinset, self._height - 77 + yoffs), + position=( + self._width * 0.5 + scroll_width * 0.5 - 110 + 80 + xextra, + yoffs - 77, + ), size=(60, 60), scale=0.8, autoselect=True, @@ -99,30 +130,24 @@ class NetTestingWindow(bui.MainWindow): on_activate_call=self._show_val_testing, ) - twidth = self._width - 540 bui.textwidget( parent=self._root_widget, - position=(self._width * 0.5, self._height - 55 + yoffs), + position=(self._width * 0.5, yoffs - 55), size=(0, 0), text=bui.Lstr(resource='settingsWindowAdvanced.netTestingText'), color=(0.8, 0.8, 0.8, 1.0), h_align='center', v_align='center', - maxwidth=twidth, + maxwidth=250, ) self._scroll = bui.scrollwidget( parent=self._root_widget, - position=( - 50, - (140 if uiscale is bui.UIScale.SMALL else 50) + yoffs, - ), - size=( - self._width - 100, - self._height - (220 if uiscale is bui.UIScale.SMALL else 140), - ), + size=(scroll_width, scroll_height), + position=(self._width * 0.5 - scroll_width * 0.5, scroll_bottom), capture_arrows=True, autoselect=True, + border_opacity=0.4, ) self._rows = bui.columnwidget(parent=self._scroll) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/testing.py b/src/assets/ba_data/python/bauiv1lib/settings/testing.py index e3ea1ea4..712ce931 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/testing.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/testing.py @@ -79,18 +79,12 @@ class TestingWindow(bui.MainWindow): parent=self._root_widget, autoselect=True, position=(35, yoffs - 59), - size=(130, 60), + size=(60, 60), scale=0.8, text_scale=1.2, - label=bui.Lstr(resource='backText'), - button_type='back', - on_activate_call=self.main_window_back, - ) - bui.buttonwidget( - edit=self._back_button, - button_type='backSmall', - size=(60, 60), 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) diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 4c0a6931..87c7aa24 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 = 22256; +const int kEngineBuildNumber = 22257; const char* kEngineVersion = "1.7.37"; const int kEngineApiVersion = 9;