From 591b90a5fe9cc0ca87bede568277bd7fae7a3721 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 15 May 2024 13:18:01 -0700 Subject: [PATCH] tidying and bug fixes --- .efrocachemap | 88 ++++++------ CHANGELOG.md | 2 +- config/requirements.txt | 2 +- src/assets/.asset_manifest_public.json | 2 + src/assets/Makefile | 2 + src/assets/ba_data/python/baenv.py | 2 +- .../python/bauiv1lib/account/settings.py | 26 ++-- .../ba_data/python/bauiv1lib/connectivity.py | 132 ++++++++++++++++++ .../ba_data/python/bauiv1lib/feedback.py | 13 +- .../ba_data/python/bauiv1lib/getcurrency.py | 4 +- .../python/bauiv1lib/settings/plugins.py | 2 +- .../python/bauiv1lib/soundtrack/browser.py | 9 +- .../python/bauiv1lib/soundtrack/edit.py | 8 +- .../platform/apple/base_platform_apple.cc | 2 +- src/ballistica/shared/ballistica.cc | 2 +- tools/batools/pcommands.py | 3 + tools/efro/log.py | 1 + tools/efrotools/message.py | 8 +- 18 files changed, 229 insertions(+), 79 deletions(-) create mode 100644 src/assets/ba_data/python/bauiv1lib/connectivity.py diff --git a/.efrocachemap b/.efrocachemap index 59e45678..4a99135a 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -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": "a02c0c36c3f6675bb6855bc009176cf6", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "064b003f05853087280802eb7da577c2", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "f3f576881a72a96c826fb91aef38bbba", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "2cb3a255494ed8575577c95445dee26c", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "869b386a10c8f3d566ec40218958381e", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "d70f116e1ca60f6c44d783ef66e1c345", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "1433260031956dbd74de55bc074ed276", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "cc956f6ae9866f6d43a6852a8031be5b", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "cedf3be30b1012e5deb2c3c61ba2a79c", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "ab87e28b76c5f6ee7f02af49ff5b207d", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "e3513bdf018e9f13e19716d2d8f39dec", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "2fd7e3ab633aa1a565de3981140f747d", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "9cf5e9821656166dd6e1c6790309bf9e", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "d5c1a8797d47c103be00358f0a78436d", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "f25132a18087448dcf14fb90cc952bb6", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "acba42eeb6a128524017dab75bae2263", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "4091cee5bc141b8a6db283d8e69c11eb", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "9b4af2d42877b890d36d8e4cd5142af9", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "8902a19b82bef589cd9dc7b294a04b7e", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "5239aca25076e3492666ade56ba61fca", - "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "a06bb7921cd8f951aae499154603145c", - "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "98c206cc02eb43b219c15a782f816e00", - "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "a06bb7921cd8f951aae499154603145c", - "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "98c206cc02eb43b219c15a782f816e00", - "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "72c5a907a8ba413ca9844d95837a5485", - "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "c9f768f18c948d36fe5c76e545549076", - "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "72c5a907a8ba413ca9844d95837a5485", - "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "c9f768f18c948d36fe5c76e545549076", - "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "2054806fac24a166edd01d2705f3531d", - "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "bccc5000405615475847ebefcbc168fc", - "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "2054806fac24a166edd01d2705f3531d", - "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "bccc5000405615475847ebefcbc168fc", - "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "c8b8c161254214e912b2f80b514447e9", - "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "7e7909e96fc13469c5e7f29b1eb56898", - "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "8039d71c9e8d9e9359aef23f4bbf99da", - "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "7e7909e96fc13469c5e7f29b1eb56898", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "6abd2da165375cd1ad163aee11d177ff", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "7cd96c8d0dba6d0ddf86f86238ee30f0", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "2d04ca0901dc47d50c64b0ea1bbb1b5b", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "7ab7cb07acd3527a9c95f3cca340488b", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "13ba788f64a3ab7787396590d539e4c3", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "2cd2cb6a2fb009df90b7540426fde687", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "b95111371bc3485e0c95eadaa7424dd1", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "809bf7b07895aa406f4564130ae22e09", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "3949ea7a39d6a2114b7500c7fcceb611", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "076c22066265be0845e611de999e0a68", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "984cf6a7071965f8053639a17e2f044b", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "466e173c53b5f08f98a4724b1de999bf", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "3d3126250a23f5fdc716153c556c6ae9", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "7d569a3c3c2923378e9a02f5e49de1b2", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "3d68d2d2837f084eee6b5c702e02ed41", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "9143d5b8335331d1c107af108ff914c4", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "ef430017676ce525d55fad0137ad51f3", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "b50de91cf73bb407f156a698c45e9e9a", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "039ab05ea21d61756187d632a52fbb8a", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "f0c2a4eea704f53d81e4a394c39a8936", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "4f4f8c765f3596f83f3caa39e569cf5d", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "1994972677f54b6ed681226690939d23", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "fec0105ec74a1886b9e6f58f78c9e576", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "95bc18eb743104c2c9bd6c42b393d056", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "0738788a6cb012a7285826be6d5bf340", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "f4a680b748da46e82839632e9ce05b1c", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "9548ee31d4fb2dc38971d293dc39b749", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "275a760bcdc13100865c0a9ae3ca9645", + "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a", + "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "2226d0e2d34051d962320c86464f3a2d", + "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a", + "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "2226d0e2d34051d962320c86464f3a2d", + "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "c2d287b53bdac7e5302fe833ac052d2c", + "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "b3942d4e7c940d86fc039ae149756d3f", + "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "c2d287b53bdac7e5302fe833ac052d2c", + "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "b3942d4e7c940d86fc039ae149756d3f", + "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "ae7eef1a68deb6d6bb54679664c5f9f1", + "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "7d92c616a8fcc0f9f5e7cf404379900e", + "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "ae7eef1a68deb6d6bb54679664c5f9f1", + "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "7d92c616a8fcc0f9f5e7cf404379900e", + "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "848cfd50cf15726e3acefd60204a85c5", + "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a", + "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "08c2f91d086e6f3fa73ebc299112358a", + "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "852405655276879ba8cb1724da6bba22", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "9eb785085a8758436934f2ca2db587e3", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "ddf74dba629d08b230f3c5a89b633533", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "8f0ac7816eaecb70f5d74f9cc579c07b", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "da86846065ea86d5892dc4da24a39113", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "dd3e02e7393bff0b4a3a99fba85eef6d", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "9a4d5fb0c2d44f49eed823f441a75dd2", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "44dd5d6776ba0c21b4f323d99644ce3e", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7", "src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d", diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e30188a..03afd83a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.35 (build 21863, api 8, 2024-05-12) +### 1.7.35 (build 21876, api 8, 2024-05-15) - 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 diff --git a/config/requirements.txt b/config/requirements.txt index 9494b3d7..7cd8f9d5 100644 --- a/config/requirements.txt +++ b/config/requirements.txt @@ -6,7 +6,7 @@ mypy==1.10.0 pbxproj==4.1.0 pdoc==14.4.0 pur==7.3.1 -pylint==3.1.0 +pylint==3.2.0 pylsp-mypy==0.6.8 pytest==8.2.0 python-daemon==3.0.1 diff --git a/src/assets/.asset_manifest_public.json b/src/assets/.asset_manifest_public.json index 97002d7a..38cfd626 100644 --- a/src/assets/.asset_manifest_public.json +++ b/src/assets/.asset_manifest_public.json @@ -369,6 +369,7 @@ "ba_data/python/bauiv1lib/__pycache__/colorpicker.cpython-312.opt-1.pyc", "ba_data/python/bauiv1lib/__pycache__/config.cpython-312.opt-1.pyc", "ba_data/python/bauiv1lib/__pycache__/confirm.cpython-312.opt-1.pyc", + "ba_data/python/bauiv1lib/__pycache__/connectivity.cpython-312.opt-1.pyc", "ba_data/python/bauiv1lib/__pycache__/continues.cpython-312.opt-1.pyc", "ba_data/python/bauiv1lib/__pycache__/creditslist.cpython-312.opt-1.pyc", "ba_data/python/bauiv1lib/__pycache__/debug.cpython-312.opt-1.pyc", @@ -420,6 +421,7 @@ "ba_data/python/bauiv1lib/colorpicker.py", "ba_data/python/bauiv1lib/config.py", "ba_data/python/bauiv1lib/confirm.py", + "ba_data/python/bauiv1lib/connectivity.py", "ba_data/python/bauiv1lib/continues.py", "ba_data/python/bauiv1lib/coop/__init__.py", "ba_data/python/bauiv1lib/coop/__pycache__/__init__.cpython-312.opt-1.pyc", diff --git a/src/assets/Makefile b/src/assets/Makefile index 39a0178e..f7da779c 100644 --- a/src/assets/Makefile +++ b/src/assets/Makefile @@ -343,6 +343,7 @@ SCRIPT_TARGETS_PY_PUBLIC = \ $(BUILD_DIR)/ba_data/python/bauiv1lib/colorpicker.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/config.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/confirm.py \ + $(BUILD_DIR)/ba_data/python/bauiv1lib/connectivity.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/continues.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/coop/__init__.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/coop/browser.py \ @@ -619,6 +620,7 @@ SCRIPT_TARGETS_PYC_PUBLIC = \ $(BUILD_DIR)/ba_data/python/bauiv1lib/__pycache__/colorpicker.cpython-312.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/__pycache__/config.cpython-312.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/__pycache__/confirm.cpython-312.opt-1.pyc \ + $(BUILD_DIR)/ba_data/python/bauiv1lib/__pycache__/connectivity.cpython-312.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/__pycache__/continues.cpython-312.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/coop/__pycache__/__init__.cpython-312.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/coop/__pycache__/browser.cpython-312.opt-1.pyc \ diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 66245853..59031863 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 = 21863 +TARGET_BALLISTICA_BUILD = 21876 TARGET_BALLISTICA_VERSION = '1.7.35' diff --git a/src/assets/ba_data/python/bauiv1lib/account/settings.py b/src/assets/ba_data/python/bauiv1lib/account/settings.py index 4569b9c7..9e6759b0 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/settings.py +++ b/src/assets/ba_data/python/bauiv1lib/account/settings.py @@ -208,9 +208,6 @@ class AccountSettingsWindow(bui.Window): self._refresh_tickets_text() self._refresh_account_name_text() - # def _get_sign_in_text(self) -> bui.Lstr: - # return bui.Lstr(resource=self._r + '.signInText') - def _refresh(self) -> None: # pylint: disable=too-many-statements # pylint: disable=too-many-branches @@ -711,15 +708,9 @@ class AccountSettingsWindow(bui.Window): if show_game_center_sign_in_button or show_google_play_sign_in_button or show_device_sign_in_button - # else bui.Lstr(resource=self._r + '.signInWithV2Text') else bui.Lstr(resource=self._r + '.signInText') ) v2infotext: bui.Lstr | str | None = None - # ( - # None - # if show_game_center_sign_in_button - # else bui.Lstr(resource=self._r + '.signInWithV2InfoText') - # ) bui.textwidget( parent=self._subcontainer, @@ -1592,6 +1583,14 @@ class AccountSettingsWindow(bui.Window): bui.apptimer(0.1, bui.WeakCall(self._update)) def _sign_in_press(self, login_type: str | LoginType) -> None: + from bauiv1lib.connectivity import wait_for_connectivity + + # If we're still waiting for our master-server connection, + # keep the user informed of this instead of rushing in and + # failing immediately. + wait_for_connectivity(on_connected=lambda: self._sign_in(login_type)) + + def _sign_in(self, login_type: str | LoginType) -> None: plus = bui.app.plus assert plus is not None @@ -1679,6 +1678,15 @@ class AccountSettingsWindow(bui.Window): bui.apptimer(0.1, bui.WeakCall(self._update)) def _v2_proxy_sign_in_press(self) -> None: + # pylint: disable=cyclic-import + from bauiv1lib.connectivity import wait_for_connectivity + + # If we're still waiting for our master-server connection, + # keep the user informed of this instead of rushing in and + # failing immediately. + wait_for_connectivity(on_connected=self._v2_proxy_sign_in) + + def _v2_proxy_sign_in(self) -> None: # pylint: disable=cyclic-import from bauiv1lib.account.v2proxy import V2ProxySignInWindow diff --git a/src/assets/ba_data/python/bauiv1lib/connectivity.py b/src/assets/ba_data/python/bauiv1lib/connectivity.py new file mode 100644 index 00000000..a0707d59 --- /dev/null +++ b/src/assets/ba_data/python/bauiv1lib/connectivity.py @@ -0,0 +1,132 @@ +# Released under the MIT License. See LICENSE for details. +# +"""UI functionality related to master-server connectivity.""" + +from __future__ import annotations + +import time +from typing import TYPE_CHECKING + +import bauiv1 as bui + +if TYPE_CHECKING: + from typing import Callable, Any + + +def wait_for_connectivity( + on_connected: Callable[[], Any], + on_cancel: Callable[[], Any] | None = None, +) -> None: + """Wait for the engine to establish a master-server connection. + + If need be, shows a window to keep the user informed of connectivity + state and allows the user to cancel the operation. Note that canceling + does not prevent the engine from continuing its attempt to establish + connectivity; it simply cancels the operation that depends on it. + """ + plus = bui.app.plus + assert plus is not None + + # Quick-out: if we're already connected, don't bother with the UI. + if plus.cloud.connected: + on_connected() + return + + WaitForConnectivityWindow(on_connected=on_connected, on_cancel=on_cancel) + + +class WaitForConnectivityWindow(bui.Window): + """Window informing the user that the game is establishing connectivity.""" + + def __init__( + self, + on_connected: Callable[[], Any], + on_cancel: Callable[[], Any] | None, + ) -> None: + self._on_connected = on_connected + self._on_cancel = on_cancel + self._width = 650 + self._height = 300 + self._infos: list[str | bui.Lstr] = [ + 'This can take a few moments, especially on first launch.', + 'Make sure your internet connection is working.', + ] + self._last_info_switch_time = time.monotonic() + self._info_index = 0 + super().__init__( + root_widget=bui.containerwidget( + size=(self._width, self._height), + transition='in_scale', + parent=bui.get_special_widget('overlay_stack'), + ) + ) + bui.textwidget( + parent=self._root_widget, + position=(self._width * 0.5, self._height * 0.65), + size=(0, 0), + scale=1.2, + h_align='center', + v_align='center', + text='Locating nearest regional servers...', + maxwidth=self._width * 0.9, + ) + self._info_text = bui.textwidget( + parent=self._root_widget, + position=(self._width * 0.5, self._height * 0.45), + size=(0, 0), + color=(0.7, 0.6, 0.7), + flatness=1.0, + scale=0.8, + h_align='center', + v_align='center', + text=self._infos[0], + maxwidth=self._width * 0.9, + ) + cancel_button = bui.buttonwidget( + parent=self._root_widget, + autoselect=True, + position=(50, 30), + size=(150, 50), + label=bui.Lstr(resource='cancelText'), + on_activate_call=self._cancel, + ) + bui.containerwidget(edit=self._root_widget, cancel_button=cancel_button) + self._update_timer = bui.AppTimer( + 0.113, bui.WeakCall(self._update), repeat=True + ) + + def _update(self) -> None: + now = time.monotonic() + + plus = bui.app.plus + assert plus is not None + + if plus.cloud.connected: + self._connected() + return + + if now - self._last_info_switch_time > 5.0: + self._info_index = (self._info_index + 1) % len(self._infos) + bui.textwidget( + edit=self._info_text, text=self._infos[self._info_index] + ) + self._last_info_switch_time = now + + def _connected(self) -> None: + if not self._root_widget or self._root_widget.transitioning_out: + return + bui.containerwidget( + edit=self._root_widget, + transition=('out_scale'), + ) + bui.pushcall(self._on_connected) + + def _cancel(self) -> None: + if not self._root_widget or self._root_widget.transitioning_out: + return + bui.containerwidget( + edit=self._root_widget, + transition=('out_scale'), + ) + if self._on_cancel is not None: + bui.pushcall(self._on_cancel) diff --git a/src/assets/ba_data/python/bauiv1lib/feedback.py b/src/assets/ba_data/python/bauiv1lib/feedback.py index 6767bbee..cbab894a 100644 --- a/src/assets/ba_data/python/bauiv1lib/feedback.py +++ b/src/assets/ba_data/python/bauiv1lib/feedback.py @@ -62,16 +62,9 @@ def ask_for_rating() -> bui.Widget | None: ) def do_rating() -> None: - if platform == 'android': - appname = bui.appname() - if subplatform == 'google': - url = f'market://details?id=net.froemling.{appname}' - else: - url = f'market://details?id=net.froemling.{appname}cb' - else: - url = 'macappstore://itunes.apple.com/app/id416482767?ls=1&mt=12' - - bui.open_url(url) + # This is not currently in use anywhere. + bui.screenmessage(bui.Lstr(resource='error')) + # bui.open_url(url) bui.containerwidget(edit=dlg, transition='out_left') bui.buttonwidget( diff --git a/src/assets/ba_data/python/bauiv1lib/getcurrency.py b/src/assets/ba_data/python/bauiv1lib/getcurrency.py index 82af5046..7883f613 100644 --- a/src/assets/ba_data/python/bauiv1lib/getcurrency.py +++ b/src/assets/ba_data/python/bauiv1lib/getcurrency.py @@ -387,7 +387,7 @@ class GetCurrencyWindow(bui.Window): else: v -= 20 - if True: # pylint: disable=using-constant-test + if bool(True): h_offs = 35 b_size_3 = (150, 120) cdb = _add_button( @@ -433,6 +433,8 @@ class GetCurrencyWindow(bui.Window): scale=1.0, ) tc_y_offs = 0 + else: + tc_y_offs = 0 h = self._width - (185 + x_inset) v = self._height - 95 + tc_y_offs diff --git a/src/assets/ba_data/python/bauiv1lib/settings/plugins.py b/src/assets/ba_data/python/bauiv1lib/settings/plugins.py index b3f27c69..6728fbb2 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/plugins.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/plugins.py @@ -341,7 +341,7 @@ class PluginWindow(bui.Window): assert_never(self._category) # show = False - if not show: + if not show: # pylint: disable=possibly-used-before-assignment continue item_y = sub_height - (num_shown + 1) * plug_line_height diff --git a/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py b/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py index 1899e854..c25b888e 100644 --- a/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py @@ -389,7 +389,7 @@ class SoundtrackBrowserWindow(bui.Window): def _back(self) -> None: # pylint: disable=cyclic-import - from bauiv1lib.settings import audio + from bauiv1lib.settings.audio import AudioSettingsWindow # no-op if our underlying widget is dead or on its way out. if not self._root_widget or self._root_widget.transitioning_out: @@ -401,7 +401,7 @@ class SoundtrackBrowserWindow(bui.Window): ) assert bui.app.classic is not None bui.app.ui_v1.set_main_menu_window( - audio.AudioSettingsWindow(transition='in_left').get_root_widget(), + AudioSettingsWindow(transition='in_left').get_root_widget(), from_window=self._root_widget, ) @@ -549,7 +549,10 @@ class SoundtrackBrowserWindow(bui.Window): return self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') - SoundtrackEditWindow(existing_soundtrack=None) + bui.app.ui_v1.set_main_menu_window( + SoundtrackEditWindow(existing_soundtrack=None).get_root_widget(), + from_window=self._root_widget, + ) def _create_done(self, new_soundtrack: str) -> None: if new_soundtrack is not None: diff --git a/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py b/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py index 628a599a..4ede4d83 100644 --- a/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py +++ b/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py @@ -423,7 +423,7 @@ class SoundtrackEditWindow(bui.Window): return None def _cancel(self) -> None: - from bauiv1lib.soundtrack import browser as stb + from bauiv1lib.soundtrack.browser import SoundtrackBrowserWindow # no-op if our underlying widget is dead or on its way out. if not self._root_widget or self._root_widget.transitioning_out: @@ -436,12 +436,12 @@ class SoundtrackEditWindow(bui.Window): music.set_music_play_mode(bui.app.classic.MusicPlayMode.REGULAR) bui.containerwidget(edit=self._root_widget, transition='out_right') bui.app.ui_v1.set_main_menu_window( - stb.SoundtrackBrowserWindow(transition='in_left').get_root_widget(), + SoundtrackBrowserWindow(transition='in_left').get_root_widget(), from_window=self._root_widget, ) def _do_it(self) -> None: - from bauiv1lib.soundtrack import browser as stb + from bauiv1lib.soundtrack.browser import SoundtrackBrowserWindow # no-op if our underlying widget is dead or on its way out. if not self._root_widget or self._root_widget.transitioning_out: @@ -495,7 +495,7 @@ class SoundtrackEditWindow(bui.Window): ) bui.app.ui_v1.set_main_menu_window( - stb.SoundtrackBrowserWindow(transition='in_left').get_root_widget(), + SoundtrackBrowserWindow(transition='in_left').get_root_widget(), from_window=self._root_widget, ) diff --git a/src/ballistica/base/platform/apple/base_platform_apple.cc b/src/ballistica/base/platform/apple/base_platform_apple.cc index ccb5993d..4d088ce1 100644 --- a/src/ballistica/base/platform/apple/base_platform_apple.cc +++ b/src/ballistica/base/platform/apple/base_platform_apple.cc @@ -85,7 +85,7 @@ void BasePlatformApple::DoOverlayWebBrowserOpenURL(const std::string& url) { BallisticaKit::CocoaFromCpp::openURLInOverlayWebBrowser(url); #else // TODO(ericf): Implement for uikit. - BasePlatform::DoOpenURLInOverlayBrowser(url); + BasePlatform::DoOverlayWebBrowserOpenURL(url); #endif // BA_OSTYPE_MACOS #else diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 7cb51eb9..8414ee08 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 = 21863; +const int kEngineBuildNumber = 21876; const char* kEngineVersion = "1.7.35"; const int kEngineApiVersion = 8; diff --git a/tools/batools/pcommands.py b/tools/batools/pcommands.py index fef3d776..6bc07aac 100644 --- a/tools/batools/pcommands.py +++ b/tools/batools/pcommands.py @@ -635,6 +635,8 @@ def prefab_binary_path() -> None: platform = PrefabPlatform.get_current() + binpath = None + if platform is PrefabPlatform.WINDOWS_X86: if buildtype == 'gui': binpath = 'BallisticaKit.exe' @@ -658,6 +660,7 @@ def prefab_binary_path() -> None: # Make sure we're covering all options. assert_never(platform) + assert binpath is not None print( f'build/prefab/full/{platform.value}_{buildtype}/{buildmode}/{binpath}', end='', diff --git a/tools/efro/log.py b/tools/efro/log.py index 55a56789..3360d5ea 100644 --- a/tools/efro/log.py +++ b/tools/efro/log.py @@ -407,6 +407,7 @@ class LogHandler(logging.Handler): ) if __debug__: + # pylint: disable=used-before-assignment # Make noise if we're taking a significant amount of time here. # Limit the noise to once every so often though; otherwise we # could get a feedback loop where every log emit results in a diff --git a/tools/efrotools/message.py b/tools/efrotools/message.py index e3a8b191..113375cf 100644 --- a/tools/efrotools/message.py +++ b/tools/efrotools/message.py @@ -48,7 +48,9 @@ def standard_message_sender_gen_pcommand( if embedded: protocol_module_level_import_code = ( 'from efro.util import explicit_bool\n' - f'\n# Dummy import for type-checking purposes.\n' + f'\n' + f'# Dummy import for type-checking purposes.\n' + f'# pylint: disable=possibly-used-before-assignment\n' f'if explicit_bool(False):\n' f' from {source_module} import {get_protocol_import}' ) @@ -116,7 +118,9 @@ def standard_message_receiver_gen_pcommand( if embedded: protocol_module_level_import_code = ( 'from efro.util import explicit_bool\n' - f'\n# Dummy import for type-checking purposes.\n' + f'\n' + f'# Dummy import for type-checking purposes.\n' + f'# pylint: disable=possibly-used-before-assignment\n' f'if explicit_bool(False):\n' f' from {source_module} import {get_protocol_import}\n' )