more 1.7.35 work in progress

This commit is contained in:
Eric 2024-05-10 18:02:42 -07:00
parent 623b2b6283
commit 7161259222
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
25 changed files with 176 additions and 111 deletions

106
.efrocachemap generated
View File

@ -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",

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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.')

View File

@ -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)

View File

@ -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'

View File

@ -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(

View File

@ -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

View File

@ -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,
},

View File

@ -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),
)

View File

@ -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),
)

View File

@ -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),
)

View File

@ -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(

View File

@ -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),
)

View File

@ -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,

View File

@ -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,
},

View File

@ -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(

View File

@ -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

View File

@ -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<int> 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);

View File

@ -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"

View File

@ -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<Runnable*> 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;
}
}

View File

@ -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;

View File

@ -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')]