tidying and bug fixes

This commit is contained in:
Eric 2024-05-15 13:18:01 -07:00
parent ae0cf4f9c4
commit 591b90a5fe
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
18 changed files with 229 additions and 79 deletions

88
.efrocachemap generated
View File

@ -4038,50 +4038,50 @@
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "a02c0c36c3f6675bb6855bc009176cf6", "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "3949ea7a39d6a2114b7500c7fcceb611",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "064b003f05853087280802eb7da577c2", "build/prefab/full/linux_arm64_gui/release/ballisticakit": "076c22066265be0845e611de999e0a68",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "f3f576881a72a96c826fb91aef38bbba", "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "984cf6a7071965f8053639a17e2f044b",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "2cb3a255494ed8575577c95445dee26c", "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "466e173c53b5f08f98a4724b1de999bf",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "869b386a10c8f3d566ec40218958381e", "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "3d3126250a23f5fdc716153c556c6ae9",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "d70f116e1ca60f6c44d783ef66e1c345", "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "7d569a3c3c2923378e9a02f5e49de1b2",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "1433260031956dbd74de55bc074ed276", "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "3d68d2d2837f084eee6b5c702e02ed41",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "cc956f6ae9866f6d43a6852a8031be5b", "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "9143d5b8335331d1c107af108ff914c4",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "cedf3be30b1012e5deb2c3c61ba2a79c", "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "ef430017676ce525d55fad0137ad51f3",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "ab87e28b76c5f6ee7f02af49ff5b207d", "build/prefab/full/mac_arm64_gui/release/ballisticakit": "b50de91cf73bb407f156a698c45e9e9a",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "e3513bdf018e9f13e19716d2d8f39dec", "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "039ab05ea21d61756187d632a52fbb8a",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "2fd7e3ab633aa1a565de3981140f747d", "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "f0c2a4eea704f53d81e4a394c39a8936",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "9cf5e9821656166dd6e1c6790309bf9e", "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "4f4f8c765f3596f83f3caa39e569cf5d",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "d5c1a8797d47c103be00358f0a78436d", "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "1994972677f54b6ed681226690939d23",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "f25132a18087448dcf14fb90cc952bb6", "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "fec0105ec74a1886b9e6f58f78c9e576",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "acba42eeb6a128524017dab75bae2263", "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "95bc18eb743104c2c9bd6c42b393d056",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "4091cee5bc141b8a6db283d8e69c11eb", "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "0738788a6cb012a7285826be6d5bf340",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "9b4af2d42877b890d36d8e4cd5142af9", "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "f4a680b748da46e82839632e9ce05b1c",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "8902a19b82bef589cd9dc7b294a04b7e", "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "9548ee31d4fb2dc38971d293dc39b749",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "5239aca25076e3492666ade56ba61fca", "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "275a760bcdc13100865c0a9ae3ca9645",
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "a06bb7921cd8f951aae499154603145c", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a",
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "98c206cc02eb43b219c15a782f816e00", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "2226d0e2d34051d962320c86464f3a2d",
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "a06bb7921cd8f951aae499154603145c", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a",
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "98c206cc02eb43b219c15a782f816e00", "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "2226d0e2d34051d962320c86464f3a2d",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "72c5a907a8ba413ca9844d95837a5485", "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "c2d287b53bdac7e5302fe833ac052d2c",
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "c9f768f18c948d36fe5c76e545549076", "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "b3942d4e7c940d86fc039ae149756d3f",
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "72c5a907a8ba413ca9844d95837a5485", "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "c2d287b53bdac7e5302fe833ac052d2c",
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "c9f768f18c948d36fe5c76e545549076", "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "b3942d4e7c940d86fc039ae149756d3f",
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "2054806fac24a166edd01d2705f3531d", "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "ae7eef1a68deb6d6bb54679664c5f9f1",
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "bccc5000405615475847ebefcbc168fc", "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "7d92c616a8fcc0f9f5e7cf404379900e",
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "2054806fac24a166edd01d2705f3531d", "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "ae7eef1a68deb6d6bb54679664c5f9f1",
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "bccc5000405615475847ebefcbc168fc", "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "7d92c616a8fcc0f9f5e7cf404379900e",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "c8b8c161254214e912b2f80b514447e9", "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "848cfd50cf15726e3acefd60204a85c5",
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "7e7909e96fc13469c5e7f29b1eb56898", "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a",
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "8039d71c9e8d9e9359aef23f4bbf99da", "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "08c2f91d086e6f3fa73ebc299112358a",
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "7e7909e96fc13469c5e7f29b1eb56898", "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "6abd2da165375cd1ad163aee11d177ff", "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "852405655276879ba8cb1724da6bba22",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "7cd96c8d0dba6d0ddf86f86238ee30f0", "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "9eb785085a8758436934f2ca2db587e3",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "2d04ca0901dc47d50c64b0ea1bbb1b5b", "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "ddf74dba629d08b230f3c5a89b633533",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "7ab7cb07acd3527a9c95f3cca340488b", "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "8f0ac7816eaecb70f5d74f9cc579c07b",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "13ba788f64a3ab7787396590d539e4c3", "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "da86846065ea86d5892dc4da24a39113",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "2cd2cb6a2fb009df90b7540426fde687", "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "dd3e02e7393bff0b4a3a99fba85eef6d",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "b95111371bc3485e0c95eadaa7424dd1", "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "9a4d5fb0c2d44f49eed823f441a75dd2",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "809bf7b07895aa406f4564130ae22e09", "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/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
"src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7", "src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d", "src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d",

View File

@ -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 - Fixed an issue where the engine would block at exit on some version of Linux
until Ctrl-D was pressed in the calling terminal. until Ctrl-D was pressed in the calling terminal.
- V2 accounts have been around for a while now, so the old V1 device login - V2 accounts have been around for a while now, so the old V1 device login

View File

@ -6,7 +6,7 @@ mypy==1.10.0
pbxproj==4.1.0 pbxproj==4.1.0
pdoc==14.4.0 pdoc==14.4.0
pur==7.3.1 pur==7.3.1
pylint==3.1.0 pylint==3.2.0
pylsp-mypy==0.6.8 pylsp-mypy==0.6.8
pytest==8.2.0 pytest==8.2.0
python-daemon==3.0.1 python-daemon==3.0.1

View File

@ -369,6 +369,7 @@
"ba_data/python/bauiv1lib/__pycache__/colorpicker.cpython-312.opt-1.pyc", "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__/config.cpython-312.opt-1.pyc",
"ba_data/python/bauiv1lib/__pycache__/confirm.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__/continues.cpython-312.opt-1.pyc",
"ba_data/python/bauiv1lib/__pycache__/creditslist.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", "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/colorpicker.py",
"ba_data/python/bauiv1lib/config.py", "ba_data/python/bauiv1lib/config.py",
"ba_data/python/bauiv1lib/confirm.py", "ba_data/python/bauiv1lib/confirm.py",
"ba_data/python/bauiv1lib/connectivity.py",
"ba_data/python/bauiv1lib/continues.py", "ba_data/python/bauiv1lib/continues.py",
"ba_data/python/bauiv1lib/coop/__init__.py", "ba_data/python/bauiv1lib/coop/__init__.py",
"ba_data/python/bauiv1lib/coop/__pycache__/__init__.cpython-312.opt-1.pyc", "ba_data/python/bauiv1lib/coop/__pycache__/__init__.cpython-312.opt-1.pyc",

View File

@ -343,6 +343,7 @@ SCRIPT_TARGETS_PY_PUBLIC = \
$(BUILD_DIR)/ba_data/python/bauiv1lib/colorpicker.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/colorpicker.py \
$(BUILD_DIR)/ba_data/python/bauiv1lib/config.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/config.py \
$(BUILD_DIR)/ba_data/python/bauiv1lib/confirm.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/continues.py \
$(BUILD_DIR)/ba_data/python/bauiv1lib/coop/__init__.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/coop/__init__.py \
$(BUILD_DIR)/ba_data/python/bauiv1lib/coop/browser.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__/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__/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__/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/__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__/__init__.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bauiv1lib/coop/__pycache__/browser.cpython-312.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/coop/__pycache__/browser.cpython-312.opt-1.pyc \

View File

@ -52,7 +52,7 @@ if TYPE_CHECKING:
# Build number and version of the ballistica binary we expect to be # Build number and version of the ballistica binary we expect to be
# using. # using.
TARGET_BALLISTICA_BUILD = 21863 TARGET_BALLISTICA_BUILD = 21876
TARGET_BALLISTICA_VERSION = '1.7.35' TARGET_BALLISTICA_VERSION = '1.7.35'

View File

@ -208,9 +208,6 @@ class AccountSettingsWindow(bui.Window):
self._refresh_tickets_text() self._refresh_tickets_text()
self._refresh_account_name_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: def _refresh(self) -> None:
# pylint: disable=too-many-statements # pylint: disable=too-many-statements
# pylint: disable=too-many-branches # pylint: disable=too-many-branches
@ -711,15 +708,9 @@ class AccountSettingsWindow(bui.Window):
if show_game_center_sign_in_button if show_game_center_sign_in_button
or show_google_play_sign_in_button or show_google_play_sign_in_button
or show_device_sign_in_button or show_device_sign_in_button
# else bui.Lstr(resource=self._r + '.signInWithV2Text')
else bui.Lstr(resource=self._r + '.signInText') else bui.Lstr(resource=self._r + '.signInText')
) )
v2infotext: bui.Lstr | str | None = None v2infotext: bui.Lstr | str | None = None
# (
# None
# if show_game_center_sign_in_button
# else bui.Lstr(resource=self._r + '.signInWithV2InfoText')
# )
bui.textwidget( bui.textwidget(
parent=self._subcontainer, parent=self._subcontainer,
@ -1592,6 +1583,14 @@ class AccountSettingsWindow(bui.Window):
bui.apptimer(0.1, bui.WeakCall(self._update)) bui.apptimer(0.1, bui.WeakCall(self._update))
def _sign_in_press(self, login_type: str | LoginType) -> None: 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 plus = bui.app.plus
assert plus is not None assert plus is not None
@ -1679,6 +1678,15 @@ class AccountSettingsWindow(bui.Window):
bui.apptimer(0.1, bui.WeakCall(self._update)) bui.apptimer(0.1, bui.WeakCall(self._update))
def _v2_proxy_sign_in_press(self) -> None: 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 # pylint: disable=cyclic-import
from bauiv1lib.account.v2proxy import V2ProxySignInWindow from bauiv1lib.account.v2proxy import V2ProxySignInWindow

View File

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

View File

@ -62,16 +62,9 @@ def ask_for_rating() -> bui.Widget | None:
) )
def do_rating() -> None: def do_rating() -> None:
if platform == 'android': # This is not currently in use anywhere.
appname = bui.appname() bui.screenmessage(bui.Lstr(resource='error'))
if subplatform == 'google': # bui.open_url(url)
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)
bui.containerwidget(edit=dlg, transition='out_left') bui.containerwidget(edit=dlg, transition='out_left')
bui.buttonwidget( bui.buttonwidget(

View File

@ -387,7 +387,7 @@ class GetCurrencyWindow(bui.Window):
else: else:
v -= 20 v -= 20
if True: # pylint: disable=using-constant-test if bool(True):
h_offs = 35 h_offs = 35
b_size_3 = (150, 120) b_size_3 = (150, 120)
cdb = _add_button( cdb = _add_button(
@ -433,6 +433,8 @@ class GetCurrencyWindow(bui.Window):
scale=1.0, scale=1.0,
) )
tc_y_offs = 0 tc_y_offs = 0
else:
tc_y_offs = 0
h = self._width - (185 + x_inset) h = self._width - (185 + x_inset)
v = self._height - 95 + tc_y_offs v = self._height - 95 + tc_y_offs

View File

@ -341,7 +341,7 @@ class PluginWindow(bui.Window):
assert_never(self._category) assert_never(self._category)
# show = False # show = False
if not show: if not show: # pylint: disable=possibly-used-before-assignment
continue continue
item_y = sub_height - (num_shown + 1) * plug_line_height item_y = sub_height - (num_shown + 1) * plug_line_height

View File

@ -389,7 +389,7 @@ class SoundtrackBrowserWindow(bui.Window):
def _back(self) -> None: def _back(self) -> None:
# pylint: disable=cyclic-import # 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. # no-op if our underlying widget is dead or on its way out.
if not self._root_widget or self._root_widget.transitioning_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 assert bui.app.classic is not None
bui.app.ui_v1.set_main_menu_window( 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, from_window=self._root_widget,
) )
@ -549,7 +549,10 @@ class SoundtrackBrowserWindow(bui.Window):
return return
self._save_state() self._save_state()
bui.containerwidget(edit=self._root_widget, transition='out_left') 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: def _create_done(self, new_soundtrack: str) -> None:
if new_soundtrack is not None: if new_soundtrack is not None:

View File

@ -423,7 +423,7 @@ class SoundtrackEditWindow(bui.Window):
return None return None
def _cancel(self) -> 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. # no-op if our underlying widget is dead or on its way out.
if not self._root_widget or self._root_widget.transitioning_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) music.set_music_play_mode(bui.app.classic.MusicPlayMode.REGULAR)
bui.containerwidget(edit=self._root_widget, transition='out_right') bui.containerwidget(edit=self._root_widget, transition='out_right')
bui.app.ui_v1.set_main_menu_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, from_window=self._root_widget,
) )
def _do_it(self) -> None: 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. # no-op if our underlying widget is dead or on its way out.
if not self._root_widget or self._root_widget.transitioning_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( 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, from_window=self._root_widget,
) )

View File

@ -85,7 +85,7 @@ void BasePlatformApple::DoOverlayWebBrowserOpenURL(const std::string& url) {
BallisticaKit::CocoaFromCpp::openURLInOverlayWebBrowser(url); BallisticaKit::CocoaFromCpp::openURLInOverlayWebBrowser(url);
#else #else
// TODO(ericf): Implement for uikit. // TODO(ericf): Implement for uikit.
BasePlatform::DoOpenURLInOverlayBrowser(url); BasePlatform::DoOverlayWebBrowserOpenURL(url);
#endif // BA_OSTYPE_MACOS #endif // BA_OSTYPE_MACOS
#else #else

View File

@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
namespace ballistica { namespace ballistica {
// These are set automatically via script; don't modify them here. // 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 char* kEngineVersion = "1.7.35";
const int kEngineApiVersion = 8; const int kEngineApiVersion = 8;

View File

@ -635,6 +635,8 @@ def prefab_binary_path() -> None:
platform = PrefabPlatform.get_current() platform = PrefabPlatform.get_current()
binpath = None
if platform is PrefabPlatform.WINDOWS_X86: if platform is PrefabPlatform.WINDOWS_X86:
if buildtype == 'gui': if buildtype == 'gui':
binpath = 'BallisticaKit.exe' binpath = 'BallisticaKit.exe'
@ -658,6 +660,7 @@ def prefab_binary_path() -> None:
# Make sure we're covering all options. # Make sure we're covering all options.
assert_never(platform) assert_never(platform)
assert binpath is not None
print( print(
f'build/prefab/full/{platform.value}_{buildtype}/{buildmode}/{binpath}', f'build/prefab/full/{platform.value}_{buildtype}/{buildmode}/{binpath}',
end='', end='',

View File

@ -407,6 +407,7 @@ class LogHandler(logging.Handler):
) )
if __debug__: if __debug__:
# pylint: disable=used-before-assignment
# Make noise if we're taking a significant amount of time here. # Make noise if we're taking a significant amount of time here.
# Limit the noise to once every so often though; otherwise we # Limit the noise to once every so often though; otherwise we
# could get a feedback loop where every log emit results in a # could get a feedback loop where every log emit results in a

View File

@ -48,7 +48,9 @@ def standard_message_sender_gen_pcommand(
if embedded: if embedded:
protocol_module_level_import_code = ( protocol_module_level_import_code = (
'from efro.util import explicit_bool\n' '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'if explicit_bool(False):\n'
f' from {source_module} import {get_protocol_import}' f' from {source_module} import {get_protocol_import}'
) )
@ -116,7 +118,9 @@ def standard_message_receiver_gen_pcommand(
if embedded: if embedded:
protocol_module_level_import_code = ( protocol_module_level_import_code = (
'from efro.util import explicit_bool\n' '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'if explicit_bool(False):\n'
f' from {source_module} import {get_protocol_import}\n' f' from {source_module} import {get_protocol_import}\n'
) )