From 716125922251929627783605bf66176cf7590f62 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 10 May 2024 18:02:42 -0700 Subject: [PATCH] more 1.7.35 work in progress --- .efrocachemap | 106 +++++++++--------- CHANGELOG.md | 17 ++- config/requirements.txt | 4 +- src/assets/ba_data/python/babase/_apputils.py | 4 +- src/assets/ba_data/python/babase/_hooks.py | 3 +- src/assets/ba_data/python/babase/modutils.py | 4 +- .../ba_data/python/baclassic/_servermode.py | 7 +- src/assets/ba_data/python/baenv.py | 2 +- .../ba_data/python/bascenev1lib/mainmenu.py | 12 +- .../python/bauiv1lib/account/settings.py | 4 +- .../python/bauiv1lib/account/viewer.py | 2 +- .../python/bauiv1lib/gather/manualtab.py | 2 +- .../python/bauiv1lib/gather/publictab.py | 2 +- .../ba_data/python/bauiv1lib/getcurrency.py | 4 +- .../python/bauiv1lib/profile/upgrade.py | 2 +- .../python/bauiv1lib/settings/advanced.py | 2 +- .../python/bauiv1lib/settings/gamepad.py | 2 +- .../python/bauiv1lib/settings/keyboard.py | 2 +- .../ba_data/python/bauiv1lib/store/browser.py | 4 +- src/ballistica/base/platform/base_platform.cc | 43 +++++-- src/ballistica/base/platform/base_platform.h | 35 +++++- .../base/python/class/python_class_env.cc | 4 +- src/ballistica/base/ui/ui.cc | 13 ++- src/ballistica/shared/ballistica.cc | 2 +- tools/bacommon/app.py | 5 +- 25 files changed, 176 insertions(+), 111 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index b8727fe6..0dbbf889 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -421,7 +421,7 @@ "build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26", "build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8", "build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55", - "build/assets/ba_data/data/langdata.json": "0c2ec8664b0b0898af12b2e0f6f612c7", + "build/assets/ba_data/data/langdata.json": "4fd17a2a848bce15a45feafb1bb16643", "build/assets/ba_data/data/languages/arabic.json": "5c27239be3d4f8daefd9f3bd7e99ff8d", "build/assets/ba_data/data/languages/belarussian.json": "0a2b0ae82298cec42764558b5b49e4dd", "build/assets/ba_data/data/languages/chinese.json": "fcd59e90c12e8106ce418b65b97b3db6", @@ -432,7 +432,7 @@ "build/assets/ba_data/data/languages/dutch.json": "b0900d572c9141897d53d6574c471343", "build/assets/ba_data/data/languages/english.json": "14e00f19f17c647d0a994666d5fe2991", "build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880", - "build/assets/ba_data/data/languages/filipino.json": "5d28e03d97a3626e790481401ee894a4", + "build/assets/ba_data/data/languages/filipino.json": "31a31ec3aff1464e46ce047bc2dd6e45", "build/assets/ba_data/data/languages/french.json": "ee2a81129519d7030a617308da8c9195", "build/assets/ba_data/data/languages/german.json": "eaf3f1bf633566de133c61f4f5377e62", "build/assets/ba_data/data/languages/gibberish.json": "9c35571f89e6cf3bd6d40be4c5026f29", @@ -443,21 +443,21 @@ "build/assets/ba_data/data/languages/italian.json": "abac9bc027257fdb757c5c1dc4686a47", "build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597", "build/assets/ba_data/data/languages/malay.json": "f6ce0426d03a62612e3e436ed5d1be1f", - "build/assets/ba_data/data/languages/persian.json": "fbf51bb87c6f5fe63c6a3aee38713f31", - "build/assets/ba_data/data/languages/polish.json": "e850b757f3c34d1f77f89e8bb07ba94e", - "build/assets/ba_data/data/languages/portuguese.json": "ab295421a4449ae01aeed3633426ba2f", + "build/assets/ba_data/data/languages/persian.json": "540e411ec780153a046b5aae8581d155", + "build/assets/ba_data/data/languages/polish.json": "2795e44a1b19c814b6541989a13d4bb9", + "build/assets/ba_data/data/languages/portuguese.json": "3fac849a4e9e790b64727cd26f73fe6d", "build/assets/ba_data/data/languages/romanian.json": "b3e46efd6f869dbd78014570e037c290", - "build/assets/ba_data/data/languages/russian.json": "cba5f250a272a4a4eea28ceece9fd549", + "build/assets/ba_data/data/languages/russian.json": "5463543e108c4fa9be924f23adef6028", "build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69", "build/assets/ba_data/data/languages/slovak.json": "3c08c748c96c71bd9e1d7291fb8817b6", - "build/assets/ba_data/data/languages/spanish.json": "af4c3890520e6d574a6ccbb11427f8cb", + "build/assets/ba_data/data/languages/spanish.json": "09c410abc893c0e12e3403c109fa8a14", "build/assets/ba_data/data/languages/swedish.json": "5142a96597d17d8344be96a603da64ac", "build/assets/ba_data/data/languages/tamil.json": "b9fcc523639f55e05c7f4e7914f3321a", "build/assets/ba_data/data/languages/thai.json": "1d665629361f302693dead39de8fa945", - "build/assets/ba_data/data/languages/turkish.json": "270c07e826bf799246906ac919d78545", + "build/assets/ba_data/data/languages/turkish.json": "1e8b29e1d161ec0d86f421a3d0c6f5d1", "build/assets/ba_data/data/languages/ukrainian.json": "76ad64cb4911c8d5a3e4815b865ce5bd", "build/assets/ba_data/data/languages/venetian.json": "96e7607b0aa79b7eb48cac8df77e8e65", - "build/assets/ba_data/data/languages/vietnamese.json": "7e40fcd270b34c1e836ba51a2c6cbce7", + "build/assets/ba_data/data/languages/vietnamese.json": "b175cd0f01d0433355f144aeaa333409", "build/assets/ba_data/data/maps/big_g.json": "1dd301d490643088a435ce75df971054", "build/assets/ba_data/data/maps/bridgit.json": "6aea74805f4880cc11237c5734a24422", "build/assets/ba_data/data/maps/courtyard.json": "4b836554c8949bcd2ae382f5e3c1a9cc", @@ -4038,50 +4038,50 @@ "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "1e01a48ea73c61114540a327d36cd7a2", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "ec571b29d0135d663af0cadefb16a500", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "159d55cbae70c3eacd42cca935c1a586", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "a18694dc2bbb3120d2a7f4687bbe8fd6", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "63bb298945f95b04909cec06499113a9", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "43637522bf8727004851a69fbff4efb8", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "8fa9bc2af99fb88a39f70e55a4551cda", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "7409872c1c1930c18d08995314cb9348", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "aeb9b3d2af28cb666c30ee67eed88c4c", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "3d603cbde1ee7da072371bfb241af984", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "6e73ab056973cf2cda7ae73291de0139", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "8f358dcc42666726e2781f6afcb55624", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "d143e64d68afed9b7ddc4aefb063e1ec", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "a7de7b1db0cb1e959544d4ab87aa5afc", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "11fc44591493afb6558e439f0a6468fa", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "ff36664d18f25783928d175684a09751", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "a54abb3622ac5c6dbc76550a3bf9fb55", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "dca30c659dfaeab394780a49d368d987", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "450a861140f90ee75994001b58f13764", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "44a64c787c438902c50b9f475994b696", - "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "24c1641a1bef7c56d8b3805fbd01ac30", - "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "3da37afad8903a3c24c38fb698a19ce1", - "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "24c1641a1bef7c56d8b3805fbd01ac30", - "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "3da37afad8903a3c24c38fb698a19ce1", - "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "d8b9d06d24d68ea28f271630fe7927d8", - "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "20e6bd566fa26ab469f18ee07301b2a5", - "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "d8b9d06d24d68ea28f271630fe7927d8", - "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "20e6bd566fa26ab469f18ee07301b2a5", - "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "2cae1591b40b3e514dc8bfa53c381ca0", - "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "9cb9babbe43f393f286c596c572f3687", - "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "2cae1591b40b3e514dc8bfa53c381ca0", - "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "9cb9babbe43f393f286c596c572f3687", - "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "e991ed53b63acb73579097a38ba63731", - "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "2ff4914fca4dbd5ad144b32b9d89c3fb", - "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "a53b90db9b3d05d8048dcd63e56debd3", - "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "2ff4914fca4dbd5ad144b32b9d89c3fb", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "c86657aaf33d885d4dbf9b88e6168012", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "ae4e9ad706f71ca3566fa6440c49ae5e", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "d1188f99c618449e49555c5d50326e6e", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "c2b3f66f80934e4ad07212a83bc5889b", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "5249d461409c214ea0a91bc9baf10599", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "e2d37edade6cd5868e342b782ceda44d", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "af49482fc819b4df01c78996110c5a80", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "2997322e5ec3233d230ab6b1d581cabb", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "e28ff1caeb376f2a234b9f51c733bef7", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "a67a6b81606bccc00b971ebc04222f3b", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "1de6275e914452db924313823aac146b", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "ff1bdc7548cd5b849aebaa5c8b436094", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "53feb25cf6dfa161297f2acc9712e730", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "06690b5a58948a08d77f6f1f453689d5", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "a0e81c01bfe89ea84b46b5d3e837b66c", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "264f040b65175d60d60c422c38eb3fe3", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "8ecf39b3b7d0213502c2ac3b3ef0a3aa", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "cc3700d575490ebca46554a28e2b5b9e", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "d832c76ab6134aacf310860a77c368b6", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "1981d6e2fa2bd92a958ab428aa9c8168", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "5fa23b42c258f2de7b56bfc33d28eea0", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "c0ad0287a567fae78d38e1493237bd60", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "d6a19b286723659b90a8127de2997470", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "a1380b1583ec65483549d1fa7272fc8b", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "8e5c3b61bdd8a4c327b968e33af6a669", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "3496262d1e007002ca2f3c9910813cc0", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "cc145432211fab7fc3ae4e810bedcb9e", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "953423de186d95b7c2da25e34339180d", + "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "4a1fae6644ebb001502731a0c60a326c", + "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "49db614d5053363664be583968e9a550", + "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "4a1fae6644ebb001502731a0c60a326c", + "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "49db614d5053363664be583968e9a550", + "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "3b1aa4ec403810628292cc65165c802f", + "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "86c800db31a55152d8830b764a9adaf1", + "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "3b1aa4ec403810628292cc65165c802f", + "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "86c800db31a55152d8830b764a9adaf1", + "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "c875fe377f351cc17d40c796455ed103", + "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "ffda098d44a350f269052acc2c64ad48", + "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "c875fe377f351cc17d40c796455ed103", + "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "ffda098d44a350f269052acc2c64ad48", + "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "249d18cf8428a1c9972c3cb475de022d", + "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "451c4ed44338c1efe77a847a7f427d59", + "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "ee7d72a8c6db14dd609381faa4d7136a", + "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "451c4ed44338c1efe77a847a7f427d59", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "1f85da8cd779b81a27ce9b84f9bc564f", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "3e1e2019dc31bbcac37834dbb1cef671", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "d7cf6b99fc1063ef10ab5e1e79f190b0", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "0d9abc6d5022e3900aa2fcfa488713dd", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "289d3f90ac4c8854cf2ca3dc9c5aa3f5", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "dc50468550b03d7550c9c895dceeb3df", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "434c5315ae3423b0c02ab47c5ca4bb03", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "fe772014f43efe58f3182419643b5e88", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "b611c090513a21e2fe90e56582724e9d", "src/ballistica/base/mgen/pyembed/binding_base.inc": "72bfed2cce8ff19741989dec28302f3f", diff --git a/CHANGELOG.md b/CHANGELOG.md index 99c9392c..05cc8925 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.35 (build 21851, api 8, 2024-05-08) +### 1.7.35 (build 21852, api 8, 2024-05-10) - Fixed an issue where the engine would block at exit on some version of Linux until Ctrl-D was pressed in the calling terminal. - V2 accounts have been around for a while now, so the old V1 device login @@ -6,10 +6,17 @@ bring it back by checking 'Show Deprecated Login Types' in advanced settings, but please consider this a warning to upgrade/migrate your account to V2 if you have not done so yet. -- The 'Sign in with a BombSquad account' option is now simply 'Sign In' on many - builds cases since it is the one and only option. So tidy! When other options - such as Google Play or Game Center are available it is instead called 'Sign in - with an email address'. +- The 'Sign in with a BombSquad account' option is now simply 'Sign In' when + that is the only option. So nice and tidy! When other options such as Google + Play or Game Center are available it is now called 'Sign in with an email + address'. +- The `ba*.app.env.version` `and ba*.app.env.build_number` values are now + `ba*.app.env.engine_version` and `ba*.app.env.engine_build_number`. At this + point any functionality that cares about versions should be looking at engine + version anyway. In the future we can add separate `app_version` and + `app_build_number` values for spinoff apps, but in the case of `BombSquad` the + app version/build is currently the same as the engine's so we don't need that + just yet. - Reworked the 'Enter Code' dialog into a 'Send Info' dialog. The `sendinfo` command is 99% of the reason for 'Enter Code' existing, so this simplifies things for that use case and hopefully clarifies its purpose so I can spend diff --git a/config/requirements.txt b/config/requirements.txt index 6338fe45..9494b3d7 100644 --- a/config/requirements.txt +++ b/config/requirements.txt @@ -1,7 +1,7 @@ cpplint==1.6.1 dmgbuild==1.6.1 filelock==3.14.0 -furo==2024.4.27 +furo==2024.5.6 mypy==1.10.0 pbxproj==4.1.0 pdoc==14.4.0 @@ -14,7 +14,7 @@ python-lsp-black==2.0.0 python-lsp-server==1.11.0 requests==2.31.0 Sphinx==7.3.7 -tomlkit==0.12.4 +tomlkit==0.12.5 types-certifi==2021.10.8.3 types-filelock==3.2.7 types-requests==2.31.0.20240406 diff --git a/src/assets/ba_data/python/babase/_apputils.py b/src/assets/ba_data/python/babase/_apputils.py index 84a27b70..55507553 100644 --- a/src/assets/ba_data/python/babase/_apputils.py +++ b/src/assets/ba_data/python/babase/_apputils.py @@ -106,8 +106,8 @@ def handle_v1_cloud_log() -> None: info = { 'log': _babase.get_v1_cloud_log(), - 'version': app.env.version, - 'build': app.env.build_number, + 'version': app.env.engine_version, + 'build': app.env.engine_build_number, 'userAgentString': classic.legacy_user_agent_string, 'session': sessionname, 'activity': activityname, diff --git a/src/assets/ba_data/python/babase/_hooks.py b/src/assets/ba_data/python/babase/_hooks.py index 535d3084..c344d269 100644 --- a/src/assets/ba_data/python/babase/_hooks.py +++ b/src/assets/ba_data/python/babase/_hooks.py @@ -85,6 +85,7 @@ def open_url_with_webbrowser_module(url: str) -> None: import webbrowser from babase._language import Lstr + assert _babase.in_logic_thread() try: webbrowser.open(url) except Exception: @@ -384,7 +385,7 @@ def show_client_too_old_error() -> None: # a newer build. if ( _babase.app.config.get('SuppressClientTooOldErrorForBuild') - == _babase.app.env.build_number + == _babase.app.env.engine_build_number ): return diff --git a/src/assets/ba_data/python/babase/modutils.py b/src/assets/ba_data/python/babase/modutils.py index 6cfd9ae3..716a2d22 100644 --- a/src/assets/ba_data/python/babase/modutils.py +++ b/src/assets/ba_data/python/babase/modutils.py @@ -133,7 +133,7 @@ def create_user_system_scripts() -> None: if env.python_directory_app is None: raise RuntimeError('app python dir unset') - path = f'{env.python_directory_user}/sys/{env.version}' + path = f'{env.python_directory_user}/sys/{env.engine_version}' pathtmp = path + '_tmp' if os.path.exists(path): print('Delete Existing User Scripts first!') @@ -181,7 +181,7 @@ def delete_user_system_scripts() -> None: if env.python_directory_user is None: raise RuntimeError('user python dir unset') - path = f'{env.python_directory_user}/sys/{env.version}' + path = f'{env.python_directory_user}/sys/{env.engine_version}' if os.path.exists(path): shutil.rmtree(path) print('User system scripts deleted.') diff --git a/src/assets/ba_data/python/baclassic/_servermode.py b/src/assets/ba_data/python/baclassic/_servermode.py index 7fa97d54..41eae557 100644 --- a/src/assets/ba_data/python/baclassic/_servermode.py +++ b/src/assets/ba_data/python/baclassic/_servermode.py @@ -216,7 +216,7 @@ class ServerController: 'bsAccessCheck', { 'port': bascenev1.get_game_port(), - 'b': babase.app.env.build_number, + 'b': babase.app.env.engine_build_number, }, callback=self._access_check_response, ) @@ -381,8 +381,9 @@ class ServerController: if self._first_run: curtimestr = time.strftime('%c') startupmsg = ( - f'{Clr.BLD}{Clr.BLU}{babase.appnameupper()} {app.env.version}' - f' ({app.env.build_number})' + f'{Clr.BLD}{Clr.BLU}{babase.appnameupper()}' + f' {app.env.engine_version}' + f' ({app.env.engine_build_number})' f' entering server-mode {curtimestr}{Clr.RST}' ) logging.info(startupmsg) diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index c10e3f8c..0a8665f6 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -52,7 +52,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21851 +TARGET_BALLISTICA_BUILD = 21852 TARGET_BALLISTICA_VERSION = '1.7.35' diff --git a/src/assets/ba_data/python/bascenev1lib/mainmenu.py b/src/assets/ba_data/python/bascenev1lib/mainmenu.py index 07fbf3fb..84343e35 100644 --- a/src/assets/ba_data/python/bascenev1lib/mainmenu.py +++ b/src/assets/ba_data/python/bascenev1lib/mainmenu.py @@ -133,8 +133,8 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): text = bs.Lstr( value='${V} (${B}) (${D})', subs=[ - ('${V}', app.env.version), - ('${B}', str(app.env.build_number)), + ('${V}', app.env.engine_version), + ('${B}', str(app.env.engine_build_number)), ('${D}', bs.Lstr(resource='debugText')), ], ) @@ -142,12 +142,14 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): text = bs.Lstr( value='${V} (${B})', subs=[ - ('${V}', app.env.version), - ('${B}', str(app.env.build_number)), + ('${V}', app.env.engine_version), + ('${B}', str(app.env.engine_build_number)), ], ) else: - text = bs.Lstr(value='${V}', subs=[('${V}', app.env.version)]) + text = bs.Lstr( + value='${V}', subs=[('${V}', app.env.engine_version)] + ) scale = 0.9 if (uiscale is bs.UIScale.SMALL or vr_mode) else 0.7 color = (1, 1, 1, 1) if vr_mode else (0.5, 0.6, 0.5, 0.7) self.version = bs.NodeActor( diff --git a/src/assets/ba_data/python/bauiv1lib/account/settings.py b/src/assets/ba_data/python/bauiv1lib/account/settings.py index 787ab523..ddddfe4e 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/settings.py +++ b/src/assets/ba_data/python/bauiv1lib/account/settings.py @@ -317,7 +317,9 @@ class AccountSettingsWindow(bui.Window): show_game_service_button = game_center_active game_service_button_space = 60.0 - show_what_is_v2 = self._v1_signed_in and v1_account_type == 'V2' + # Phasing this out. + show_what_is_v2 = False + # show_what_is_v2 = self._v1_signed_in and v1_account_type == 'V2' show_linked_accounts_text = self._v1_signed_in linked_accounts_text_space = 60.0 diff --git a/src/assets/ba_data/python/bauiv1lib/account/viewer.py b/src/assets/ba_data/python/bauiv1lib/account/viewer.py index dada8df1..2dbb1dea 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/viewer.py +++ b/src/assets/ba_data/python/bauiv1lib/account/viewer.py @@ -138,7 +138,7 @@ class AccountViewerWindow(PopupWindow): bui.app.classic.master_server_v1_get( 'bsAccountInfo', { - 'buildNumber': bui.app.env.build_number, + 'buildNumber': bui.app.env.engine_build_number, 'accountID': self._account_id, 'profileID': self._profile_id, }, diff --git a/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py b/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py index 897ae323..8c889efd 100644 --- a/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py +++ b/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py @@ -1055,7 +1055,7 @@ class ManualGatherTab(GatherTab): self._t_accessible_extra = t_accessible_extra bui.app.classic.master_server_v1_get( 'bsAccessCheck', - {'b': bui.app.env.build_number}, + {'b': bui.app.env.engine_build_number}, callback=bui.WeakCall(self._on_accessible_response), ) diff --git a/src/assets/ba_data/python/bauiv1lib/gather/publictab.py b/src/assets/ba_data/python/bauiv1lib/gather/publictab.py index 79f33763..d8b2f145 100644 --- a/src/assets/ba_data/python/bauiv1lib/gather/publictab.py +++ b/src/assets/ba_data/python/bauiv1lib/gather/publictab.py @@ -1366,7 +1366,7 @@ class PublicGatherTab(GatherTab): ) bui.app.classic.master_server_v1_get( 'bsAccessCheck', - {'b': bui.app.env.build_number}, + {'b': bui.app.env.engine_build_number}, callback=bui.WeakCall(self._on_public_party_accessible_response), ) diff --git a/src/assets/ba_data/python/bauiv1lib/getcurrency.py b/src/assets/ba_data/python/bauiv1lib/getcurrency.py index fa75d411..82af5046 100644 --- a/src/assets/ba_data/python/bauiv1lib/getcurrency.py +++ b/src/assets/ba_data/python/bauiv1lib/getcurrency.py @@ -666,8 +666,8 @@ class GetCurrencyWindow(bui.Window): 'item': item, 'platform': app.classic.platform, 'subplatform': app.classic.subplatform, - 'version': app.env.version, - 'buildNumber': app.env.build_number, + 'version': app.env.engine_version, + 'buildNumber': app.env.engine_build_number, }, callback=bui.WeakCall(self._purchase_check_result, item), ) diff --git a/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py b/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py index da446d22..a3968d96 100644 --- a/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py +++ b/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py @@ -153,7 +153,7 @@ class ProfileUpgradeWindow(bui.Window): bui.app.classic.master_server_v1_get( 'bsGlobalProfileCheck', - {'name': self._name, 'b': bui.app.env.build_number}, + {'name': self._name, 'b': bui.app.env.engine_build_number}, callback=bui.WeakCall(self._profile_check_result), ) self._cost = plus.get_v1_account_misc_read_val( diff --git a/src/assets/ba_data/python/bauiv1lib/settings/advanced.py b/src/assets/ba_data/python/bauiv1lib/settings/advanced.py index 017a8e01..521762ac 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/advanced.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/advanced.py @@ -176,7 +176,7 @@ class AdvancedSettingsWindow(bui.Window): # Fetch the list of completed languages. bui.app.classic.master_server_v1_get( 'bsLangGetCompleted', - {'b': app.env.build_number}, + {'b': app.env.engine_build_number}, callback=bui.WeakCall(self._completed_langs_cb), ) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py b/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py index a525c80f..4661f151 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py @@ -921,7 +921,7 @@ class GamepadSettingsWindow(bui.Window): 'controllerConfig', { 'ua': classic.legacy_user_agent_string, - 'b': bui.app.env.build_number, + 'b': bui.app.env.engine_build_number, 'name': self._name, 'inputMapHash': inputhash, 'config': dst2, diff --git a/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py b/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py index 47f72ce3..7023250e 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py @@ -399,7 +399,7 @@ class ConfigKeyboardWindow(bui.Window): { 'ua': bui.app.classic.legacy_user_agent_string, 'name': self._name, - 'b': bui.app.env.build_number, + 'b': bui.app.env.engine_build_number, 'config': dst2, 'v': 2, }, diff --git a/src/assets/ba_data/python/bauiv1lib/store/browser.py b/src/assets/ba_data/python/bauiv1lib/store/browser.py index 2ea82a79..901fc9f3 100644 --- a/src/assets/ba_data/python/bauiv1lib/store/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/store/browser.py @@ -561,8 +561,8 @@ class StoreBrowserWindow(bui.Window): 'item': item, 'platform': app.classic.platform, 'subplatform': app.classic.subplatform, - 'version': app.env.version, - 'buildNumber': app.env.build_number, + 'version': app.env.engine_version, + 'buildNumber': app.env.engine_build_number, 'purchaseType': 'ticket' if is_ticket_purchase else 'real', }, callback=bui.WeakCall( diff --git a/src/ballistica/base/platform/base_platform.cc b/src/ballistica/base/platform/base_platform.cc index 8bb42ada..210fbe5f 100644 --- a/src/ballistica/base/platform/base_platform.cc +++ b/src/ballistica/base/platform/base_platform.cc @@ -110,21 +110,42 @@ void BasePlatform::PurchaseAck(const std::string& purchase, } void BasePlatform::OpenURL(const std::string& url) { - // Can't open URLs in VR - just tell the Python layer to show the url in the - // gui. - if (g_core->vr_mode()) { - g_base->ui->ShowURL(url); - return; - } - - // Otherwise fall back to our platform-specific handler. - g_base->platform->DoOpenURL(url); + // DoOpenURL expects to be run in the logic thread. + g_base->logic->event_loop()->PushCall( + [url] { g_base->platform->DoOpenURL(url); }); } void BasePlatform::DoOpenURL(const std::string& url) { - // Kick this over to logic thread so we're safe to call from anywhere. + // As a default, use Python's webbrowser module functionality. + g_base->python->OpenURLWithWebBrowserModule(url); +} + +auto BasePlatform::HaveOverlayWebBrowser() -> bool { return false; } + +void BasePlatform::OpenURLInOverlayWebBrowser(const std::string& url) { + BA_PRECONDITION(HaveOverlayWebBrowser()); + + // DoOpenURLInOverlayBrowser expects to be run in the logic thread. g_base->logic->event_loop()->PushCall( - [url] { g_base->python->OpenURLWithWebBrowserModule(url); }); + [url] { g_base->platform->DoOpenURLInOverlayBrowser(url); }); +} + +void BasePlatform::CloseOverlayWebBrowser() { + BA_PRECONDITION(HaveOverlayWebBrowser()); + + // DoCloseOverlayBrowser expects to be run in the logic thread. + g_base->logic->event_loop()->PushCall( + [] { g_base->platform->DoCloseOverlayBrowser(); }); +} + +void BasePlatform::DoOpenURLInOverlayBrowser(const std::string& url) { + // As a default, use Python's webbrowser module functionality. + Log(LogLevel::kError, "DoOpenURLInOverlayBrowser unimplemented"); +} + +void BasePlatform::DoCloseOverlayBrowser() { + // As a default, use Python's webbrowser module functionality. + Log(LogLevel::kError, "DoCloseOverlayBrowser unimplemented"); } #if !BA_OSTYPE_WINDOWS diff --git a/src/ballistica/base/platform/base_platform.h b/src/ballistica/base/platform/base_platform.h index 15d9e38a..a91867d9 100644 --- a/src/ballistica/base/platform/base_platform.h +++ b/src/ballistica/base/platform/base_platform.h @@ -77,7 +77,24 @@ class BasePlatform { virtual void LoginAdapterBackEndActiveChange(const std::string& login_type, bool active); -#pragma mark MISC -------------------------------------------------------------- +#pragma mark WEB BROWSER ------------------------------------------------------- + + /// Open the provided URL in a browser. + void OpenURL(const std::string& url); + + /// Do we provide a browser window that can show up over content? + /// This can be used for simple tasks such as signing into accounts + /// without leaving the app. It is assumed that only one overlay browser + /// can exist at a time. + virtual auto HaveOverlayWebBrowser() -> bool; + + /// Open the provided URL in an overlay web browser. + void OpenURLInOverlayWebBrowser(const std::string& url); + + /// Close any open overlay web browser. + void CloseOverlayWebBrowser(); + +#pragma mark STRING EDITOR ----------------------------------------------------- /// Do we define a platform-specific string editor? This is something like /// a text view popup which allows the use of default OS input methods @@ -89,9 +106,6 @@ class BasePlatform { /// being the globally active one. Must be called from the logic thread. void InvokeStringEditor(PyObject* string_edit_adapter); - /// Open the provided URL in a browser or whatnot. - void OpenURL(const std::string& url); - /// Should be called by platform StringEditor to apply a value. /// Must be called in the logic thread. void StringEditorApply(const std::string& val); @@ -100,6 +114,8 @@ class BasePlatform { /// Must be called in the logic thread. void StringEditorCancel(); +#pragma mark MISC -------------------------------------------------------------- + auto ran_base_post_init() const { return ran_base_post_init_; } /// Do we support opening dirs exteranlly? (via finder, windows explorer, @@ -118,9 +134,18 @@ class BasePlatform { const std::string& value, std::optional max_chars); - /// Open the provided URL in a browser or whatnot. + /// Open the provided URL in a browser. This will always be called in the + /// logic thread. virtual void DoOpenURL(const std::string& url); + /// Open the provided URL in the overlay browser. This will always be called + /// in the logic thread. + virtual void DoOpenURLInOverlayBrowser(const std::string& url); + + /// Should close any existing overlay web browser. This will always be called + /// in the logic thread. + virtual void DoCloseOverlayBrowser(); + /// Make a purchase. virtual void DoPurchase(const std::string& item); diff --git a/src/ballistica/base/python/class/python_class_env.cc b/src/ballistica/base/python/class/python_class_env.cc index 3079e93c..b5970b0b 100644 --- a/src/ballistica/base/python/class/python_class_env.cc +++ b/src/ballistica/base/python/class/python_class_env.cc @@ -58,14 +58,14 @@ void PythonClassEnv::SetupType(PyTypeObject* cls) { envs["android"] = BoolEntry_(g_buildconfig.ostype_android(), "Is this build targeting an Android based OS?"); - envs["build_number"] = IntEntry_( + envs["engine_build_number"] = IntEntry_( kEngineBuildNumber, "Integer build number for the engine.\n" "\n" "This value increases by at least 1 with each release of the engine.\n" "It is independent of the human readable `version` string."); - envs["version"] = StrEntry_( + envs["engine_version"] = StrEntry_( kEngineVersion, "Human-readable version string for the engine; something like '1.3.24'.\n" "\n" diff --git a/src/ballistica/base/ui/ui.cc b/src/ballistica/base/ui/ui.cc index 0b4f6fff..6c83816e 100644 --- a/src/ballistica/base/ui/ui.cc +++ b/src/ballistica/base/ui/ui.cc @@ -83,10 +83,11 @@ void UI::OperationContext::Finish() { assert(!ran_finish_); ran_finish_ = true; - // Run pent up runnaables. It's possible that the payload of something + // Run pent up runnables. It's possible that the payload of something // scheduled here will itself schedule something here, so we need to do // this in a loop (and watch for infinite ones). int cycle_count{}; + auto initial_runnable_count(runnables_.size()); while (!runnables_.empty()) { std::vector runnables; runnables.swap(runnables_); @@ -97,10 +98,14 @@ void UI::OperationContext::Finish() { delete runnable; } cycle_count += 1; - if (cycle_count >= 10) { + auto max_count = 10; + if (cycle_count >= max_count) { + auto current_runnable_count(runnables_.size()); BA_LOG_ERROR_NATIVE_TRACE( - "UIOperationCount cycle-count hit max; you probably have an infinite " - "loop."); + "UIOperationCount cycle-count hit max " + std::to_string(max_count) + + " (initial " + std::to_string(initial_runnable_count) + ", current " + + std::to_string(current_runnable_count) + ");" + + " you probably have an infinite loop."); break; } } diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index b8de41a1..e68cd538 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 = 21851; +const int kEngineBuildNumber = 21852; const char* kEngineVersion = "1.7.35"; const int kEngineApiVersion = 8; diff --git a/tools/bacommon/app.py b/tools/bacommon/app.py index 2b8abdc6..85a00d98 100644 --- a/tools/bacommon/app.py +++ b/tools/bacommon/app.py @@ -124,8 +124,9 @@ class AppInstanceInfo: """General info about an individual running app.""" name = Annotated[str, IOAttrs('n')] - version = Annotated[str, IOAttrs('v')] - build = Annotated[int, IOAttrs('b')] + + engine_version = Annotated[str, IOAttrs('ev')] + engine_build = Annotated[int, IOAttrs('eb')] platform = Annotated[AppPlatform, IOAttrs('p')] variant = Annotated[AppVariant, IOAttrs('va')]