mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-28 01:43:22 +08:00
disabling continues in prep of monetization revamp
This commit is contained in:
parent
53002639bd
commit
e6d3e7dff2
96
.efrocachemap
generated
96
.efrocachemap
generated
@ -424,7 +424,7 @@
|
||||
"build/assets/ba_data/data/langdata.json": "dca47b4976752e76e852f7a4be2c7aa3",
|
||||
"build/assets/ba_data/data/languages/arabic.json": "e0001d8542c904bc3c98a174f256efd9",
|
||||
"build/assets/ba_data/data/languages/belarussian.json": "7fe38341815ca6ff4d95224196e7a67e",
|
||||
"build/assets/ba_data/data/languages/chinese.json": "a87b1ebef100d9cdce0d29123735e90c",
|
||||
"build/assets/ba_data/data/languages/chinese.json": "4e2f4f1f38216940953fcbee4da1563e",
|
||||
"build/assets/ba_data/data/languages/chinesetraditional.json": "f858da49be0a5374157c627857751078",
|
||||
"build/assets/ba_data/data/languages/croatian.json": "766532c67af5bd0144c2d63cab0516fa",
|
||||
"build/assets/ba_data/data/languages/czech.json": "93c5fe0d884d95435da6c675f64e30e0",
|
||||
@ -440,17 +440,17 @@
|
||||
"build/assets/ba_data/data/languages/hindi.json": "8ea0c58a44a24edb131d0e53b074d1f6",
|
||||
"build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e",
|
||||
"build/assets/ba_data/data/languages/indonesian.json": "ba39cade3c965b2ddbee122880b6f0db",
|
||||
"build/assets/ba_data/data/languages/italian.json": "b19a9f0b868a6c89e13a04609bf377dd",
|
||||
"build/assets/ba_data/data/languages/italian.json": "cda5760f247500657722c279bc2f2bc7",
|
||||
"build/assets/ba_data/data/languages/korean.json": "ca1122a9ee551da3f75ae632012bd0e2",
|
||||
"build/assets/ba_data/data/languages/malay.json": "832562ce997fc70704b9234c95fb2e38",
|
||||
"build/assets/ba_data/data/languages/persian.json": "89f5c6f900317aaa20ec520e5fd65d32",
|
||||
"build/assets/ba_data/data/languages/persian.json": "4f448b29ba04f2b789329600cb7f9ab7",
|
||||
"build/assets/ba_data/data/languages/polish.json": "8bb8f7baa5efcf6cdd627140d209c2b2",
|
||||
"build/assets/ba_data/data/languages/portuguese.json": "7374b6a5cadcf573ee4ab4a5b4bc8c0a",
|
||||
"build/assets/ba_data/data/languages/romanian.json": "aeebdd54f65939c2facc6ac50c117826",
|
||||
"build/assets/ba_data/data/languages/russian.json": "9e068a3afdec43b207c83aedfb812e82",
|
||||
"build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69",
|
||||
"build/assets/ba_data/data/languages/slovak.json": "27962d53dc3f7dd4e877cd40faafeeef",
|
||||
"build/assets/ba_data/data/languages/spanish.json": "0fca8361c6873e6445f0bea34a211b78",
|
||||
"build/assets/ba_data/data/languages/spanish.json": "f73b0d4d534f030f95c00385bb06cbc1",
|
||||
"build/assets/ba_data/data/languages/swedish.json": "5142a96597d17d8344be96a603da64ac",
|
||||
"build/assets/ba_data/data/languages/tamil.json": "b4de1a2851afe4869c82e9acd94cd89c",
|
||||
"build/assets/ba_data/data/languages/thai.json": "33f63753c9af9a5b238d229a0bf23fbc",
|
||||
@ -4056,50 +4056,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": "a2c1b1a31a42a24e5f2188983ff97c0e",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "8d146105a6df3376ec2f575401f29ec2",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "5e0e63f5fea108212bfb35c4fdc05dd2",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "85797e98f9a21f168a986b7eb3219688",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "95bc2213d2fb30e8248ddf06764a3663",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "f09d7055120d50f37b605ff3a4cbf61d",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "8f23de3825b9e9cf6ed4715125aeb956",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "f7b88875b37a39db57d77bebb05f822f",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "0b719dc609de364814299a5baa9a5b0b",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "07aa53835bdd2d2a4113d61a89a7da1d",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "1a1c4db580157e38effe4b81c35aca52",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "1e44d0a7160d442b1eb4d348952b0d06",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "a85fcf6a12483bde66559dbdce88b730",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "d53e31771fe31615c66bd0d1e1292b2f",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "e1804380d5ebec56f8f0af2e2547316e",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "d9665cdf870247b6d8e9475419b04038",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "0cac36823713816d03a6922b96cecd0a",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "bd741122315ced7b703de1fed2d372cd",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "f11edd5da3ce1a3e804bfc61b7ca9c1e",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "3d647f5f63b3ac3900903cf72496cef2",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "f812111f1eb4ea76e99558305ce3980f",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "c16c1b360b27850f1ac4d3dc55194b0a",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "f812111f1eb4ea76e99558305ce3980f",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "c16c1b360b27850f1ac4d3dc55194b0a",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "473c84d44b472d3ae73df6a2f1b56839",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "970c415cbb7a3087a163fa6e96e634a1",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "473c84d44b472d3ae73df6a2f1b56839",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "970c415cbb7a3087a163fa6e96e634a1",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "86498db547380838a1c95b45ef17d28b",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "bf11ae92718ae3dd5116d623799dd27f",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "86498db547380838a1c95b45ef17d28b",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "bf11ae92718ae3dd5116d623799dd27f",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "147c5a5210a55978060381cc44a122db",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "380d456bc409849174a36c5d2f61aa1b",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "4fae9b286a6d1c5c729c49c483c1422a",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "380d456bc409849174a36c5d2f61aa1b",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "93f75d31841fe18d6bc66681c99b05a1",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "cd6500ab076fa3bdff92fc8b65bc1d64",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "0dcde1146f11e4cfd3d609f4330f7a9a",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "663e6ed62de0f857fd9a4de57067dbd3",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "ae28db2f400d3b778d4a011a72339757",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "3b13cdbaf70cf43d0a14b7a2dd744945",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "54798340a1dfedaa9052aeee180e28ff",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "18b635d88c074261a3be4f45e8244340",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "66647fb41b54b221cf4189161a696698",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "81a9bec829a30860a260df58c258b7d0",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "1930fa43a702b2fd3601b032afd9ad31",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "e9fdc1e724495d36a1ae9c1898b2dbeb",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "5cb78d708e8dc3911d1e5a345e535bd2",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "9aa815a258a476f02490cf58db28340a",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "dd932540bbef37a3e0580ef81206090c",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "d34c3fcf54ae4c362dafb442e5e2e57a",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "a74979683c4e58bfefde5235996551db",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "cbbecde45fb204a8f39cbf5448d248a2",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "37d71f1f72191bb29645146a5d7fdd09",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "10cb64bd655ad3ff562496bb66693dd6",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "7d9ab35e63602e682a533495022728d3",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "d98edee305c488c3a082ef98deae8a6c",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "a12f0a05ed17ef48554356b6087cdee0",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "de7e6c726c6ace4bba28f59a84cdf6b5",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "fd7b381ca67b31c088d4e98b6c0ddfe1",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "1d074c3b15b2bdf6c32e145ea83f1fa2",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "0b47cfab278418386ac29009402c9f59",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "213a68414bac47cbe051db9fbb0cbb43",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "a5e255155289f502a6662e5f9bb7819c",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "ae044789e56e5d2999f55e2f4eeb6a4d",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "a5e255155289f502a6662e5f9bb7819c",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "ae044789e56e5d2999f55e2f4eeb6a4d",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "48d81af91942519355b066d7bf8d3468",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "2c4f37722cb283a8405f35a0c9bbbfbb",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "48d81af91942519355b066d7bf8d3468",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "2c4f37722cb283a8405f35a0c9bbbfbb",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "09abcf532a2c0fba00e5e7860f495ba8",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "699291d36e42e3214946aab9798446ea",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "09abcf532a2c0fba00e5e7860f495ba8",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "699291d36e42e3214946aab9798446ea",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "ef1356360fb3701b0976a0ef37eae4bf",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "50cfe82580f1ef2698c5508f46bd2e4c",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "7b6afdb6b8d8722cbcee3bff944ec038",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "50cfe82580f1ef2698c5508f46bd2e4c",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "b29d085453e251a7e6866ac7efcd0513",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "e8da891dd0f5a441d781793f641f215d",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "982dc78eabf4eca6ccbfd3bf2537c706",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "d02505b956c8a0d5b2cb310408492df6",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "c95c26eed8a2c5e8573d35c58b2c99f2",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d5a04d68e7818912b1f689fb1a3e8b53",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "b612531dedbb057f48868e43ce05636a",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "499914dfdd9a5fd051013ab5ae845f41",
|
||||
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
|
||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "28323912b56ec07701eda3d41a6a4101",
|
||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "72bfed2cce8ff19741989dec28302f3f",
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
### 1.7.28 (build 21583, api 8, 2023-11-09)
|
||||
### 1.7.28 (build 21585, api 8, 2023-11-10)
|
||||
|
||||
- Turning off ticket continues on all platforms. I'll be moving the game towards
|
||||
a new monetization scheme mostly based on cosmetics and this has always felt a
|
||||
bit ugly pay-to-win to me, so it's time for it to go. Note that the
|
||||
functionality is still in there if anyone wants to support it in mods.
|
||||
- Massively cleaned up code related to rendering and window systems (OpenGL,
|
||||
SDL, etc). This code had been growing into a nasty tangle for 15 years
|
||||
attempting to support various old/hacked versions of SDL, etc. I ripped out
|
||||
|
||||
@ -156,7 +156,7 @@ from babase._general import (
|
||||
)
|
||||
from babase._keyboard import Keyboard
|
||||
from babase._language import Lstr, LanguageSubsystem
|
||||
from babase._login import LoginAdapter
|
||||
from babase._login import LoginAdapter, LoginInfo
|
||||
|
||||
# noinspection PyProtectedMember
|
||||
# (PyCharm inspection bug?)
|
||||
@ -265,6 +265,7 @@ __all__ = [
|
||||
'LanguageSubsystem',
|
||||
'lock_all_input',
|
||||
'LoginAdapter',
|
||||
'LoginInfo',
|
||||
'Lstr',
|
||||
'mac_music_app_get_playlists',
|
||||
'mac_music_app_get_volume',
|
||||
|
||||
@ -16,7 +16,7 @@ import _babase
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any
|
||||
|
||||
from babase._login import LoginAdapter
|
||||
from babase._login import LoginAdapter, LoginInfo
|
||||
|
||||
|
||||
DEBUG_LOG = False
|
||||
@ -27,7 +27,7 @@ class AccountV2Subsystem:
|
||||
|
||||
Category: **App Classes**
|
||||
|
||||
Access the single shared instance of this class at 'ba.app.accounts'.
|
||||
Access the single shared instance of this class at 'ba.app.plus.accounts'.
|
||||
"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
@ -425,7 +425,7 @@ class AccountV2Handle:
|
||||
tag: str
|
||||
workspacename: str | None
|
||||
workspaceid: str | None
|
||||
logins: dict[LoginType, str]
|
||||
logins: dict[LoginType, LoginInfo]
|
||||
|
||||
def __enter__(self) -> None:
|
||||
"""Support for "with" statement.
|
||||
|
||||
@ -20,6 +20,13 @@ if TYPE_CHECKING:
|
||||
DEBUG_LOG = False
|
||||
|
||||
|
||||
@dataclass
|
||||
class LoginInfo:
|
||||
"""Basic info about a login available in the app.plus.accounts section."""
|
||||
|
||||
name: str
|
||||
|
||||
|
||||
class LoginAdapter:
|
||||
"""Allows using implicit login types in an explicit way.
|
||||
|
||||
@ -293,7 +300,7 @@ class LoginAdapter:
|
||||
|
||||
def _update_implicit_login_state(self) -> None:
|
||||
# If we've received an implicit login state, schedule it to be
|
||||
# sent along to the app. We wait until on-app-launch has been
|
||||
# sent along to the app. We wait until on-app-loading has been
|
||||
# called so that account-client-v2 has had a chance to load
|
||||
# any existing state so it can properly respond to this.
|
||||
if self._implicit_login_state_dirty and self._on_app_loading_called:
|
||||
|
||||
@ -52,7 +52,7 @@ if TYPE_CHECKING:
|
||||
|
||||
# Build number and version of the ballistica binary we expect to be
|
||||
# using.
|
||||
TARGET_BALLISTICA_BUILD = 21583
|
||||
TARGET_BALLISTICA_BUILD = 21585
|
||||
TARGET_BALLISTICA_VERSION = '1.7.28'
|
||||
|
||||
|
||||
|
||||
@ -438,10 +438,16 @@ class GameActivity(Activity[PlayerT, TeamT]):
|
||||
assert classic is not None
|
||||
continues_window = classic.continues_window
|
||||
|
||||
# Turning these off. I want to migrate towards monetization that
|
||||
# feels less pay-to-win-ish.
|
||||
allow_continues = False
|
||||
|
||||
plus = babase.app.plus
|
||||
try:
|
||||
if plus is not None and plus.get_v1_account_misc_read_val(
|
||||
'enableContinues', False
|
||||
if (
|
||||
plus is not None
|
||||
and plus.get_v1_account_misc_read_val('enableContinues', False)
|
||||
and allow_continues
|
||||
):
|
||||
session = self.session
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ import random
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from bacommon.login import LoginType
|
||||
import bascenev1 as bs
|
||||
import bauiv1 as bui
|
||||
|
||||
@ -59,29 +60,25 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
|
||||
)
|
||||
)
|
||||
|
||||
self._account_type = (
|
||||
plus.get_v1_account_type()
|
||||
if plus.get_v1_account_state() == 'signed_in'
|
||||
else None
|
||||
)
|
||||
|
||||
self._game_service_icon_color: Sequence[float] | None
|
||||
self._game_service_achievements_texture: bui.Texture | None
|
||||
self._game_service_leaderboards_texture: bui.Texture | None
|
||||
|
||||
if self._account_type == 'Game Center':
|
||||
# Tie in to specific game services if they are active.
|
||||
adapter = plus.accounts.login_adapters.get(LoginType.GPGS)
|
||||
gpgs_active = adapter is not None and adapter.is_back_end_active()
|
||||
adapter = plus.accounts.login_adapters.get(LoginType.GAME_CENTER)
|
||||
game_center_active = (
|
||||
adapter is not None and adapter.is_back_end_active()
|
||||
)
|
||||
|
||||
if game_center_active:
|
||||
self._game_service_icon_color = (1.0, 1.0, 1.0)
|
||||
icon = bui.gettexture('gameCenterIcon')
|
||||
self._game_service_achievements_texture = icon
|
||||
self._game_service_leaderboards_texture = icon
|
||||
self._account_has_achievements = True
|
||||
elif self._account_type == 'Game Circle':
|
||||
icon = bui.gettexture('gameCircleIcon')
|
||||
self._game_service_icon_color = (1, 1, 1)
|
||||
self._game_service_achievements_texture = icon
|
||||
self._game_service_leaderboards_texture = icon
|
||||
self._account_has_achievements = True
|
||||
elif self._account_type == 'Google Play':
|
||||
elif gpgs_active:
|
||||
self._game_service_icon_color = (0.8, 1.0, 0.6)
|
||||
self._game_service_achievements_texture = bui.gettexture(
|
||||
'googlePlayAchievementsIcon'
|
||||
|
||||
@ -65,6 +65,7 @@ from babase import (
|
||||
Keyboard,
|
||||
lock_all_input,
|
||||
LoginAdapter,
|
||||
LoginInfo,
|
||||
Lstr,
|
||||
native_review_request,
|
||||
native_review_request_supported,
|
||||
@ -191,6 +192,7 @@ __all__ = [
|
||||
'Keyboard',
|
||||
'lock_all_input',
|
||||
'LoginAdapter',
|
||||
'LoginInfo',
|
||||
'Lstr',
|
||||
'Mesh',
|
||||
'native_review_request',
|
||||
|
||||
@ -63,13 +63,6 @@ class AccountSettingsWindow(bui.Window):
|
||||
1.0, bui.WeakCall(self._update), repeat=True
|
||||
)
|
||||
|
||||
# Currently we can only reset achievements on game-center.
|
||||
# v1_account_type: str | None
|
||||
# if self._v1_signed_in:
|
||||
# v1_account_type = plus.get_v1_account_type()
|
||||
# else:
|
||||
# v1_account_type = None
|
||||
# self._can_reset_achievements = v1_account_type == 'Game Center'
|
||||
self._can_reset_achievements = False
|
||||
|
||||
app = bui.app
|
||||
@ -243,19 +236,13 @@ class AccountSettingsWindow(bui.Window):
|
||||
# We expose GPGS-specific functionality only if it is 'active'
|
||||
# (meaning the current GPGS player matches one of our account's
|
||||
# logins).
|
||||
gpgs_adapter = plus.accounts.login_adapters.get(LoginType.GPGS)
|
||||
is_gpgs = (
|
||||
False if gpgs_adapter is None else gpgs_adapter.is_back_end_active()
|
||||
)
|
||||
adapter = plus.accounts.login_adapters.get(LoginType.GPGS)
|
||||
gpgs_active = adapter is not None and adapter.is_back_end_active()
|
||||
|
||||
# Ditto for Game Center.
|
||||
game_center_adapter = plus.accounts.login_adapters.get(
|
||||
LoginType.GAME_CENTER
|
||||
)
|
||||
is_game_center = (
|
||||
False
|
||||
if game_center_adapter is None
|
||||
else game_center_adapter.is_back_end_active()
|
||||
adapter = plus.accounts.login_adapters.get(LoginType.GAME_CENTER)
|
||||
game_center_active = (
|
||||
adapter is not None and adapter.is_back_end_active()
|
||||
)
|
||||
|
||||
show_signed_in_as = self._v1_signed_in
|
||||
@ -268,23 +255,26 @@ class AccountSettingsWindow(bui.Window):
|
||||
# through that account.
|
||||
via_space = 25.0
|
||||
if show_signed_in_as and bui.app.plus is not None:
|
||||
primary_account = bui.app.plus.accounts.primary
|
||||
if primary_account is not None:
|
||||
# Show Google Play Games account name if the current account
|
||||
# has such a login attached.
|
||||
lname = primary_account.logins.get(LoginType.GPGS)
|
||||
if lname is not None:
|
||||
icontxt = bui.charstr(
|
||||
bui.SpecialChar.GOOGLE_PLAY_GAMES_LOGO
|
||||
)
|
||||
via_lines.append(f'{icontxt}{lname}')
|
||||
|
||||
# Show Game Center account name if the current account
|
||||
# has such a login attached.
|
||||
lname = primary_account.logins.get(LoginType.GAME_CENTER)
|
||||
if lname is not None:
|
||||
icontxt = bui.charstr(bui.SpecialChar.GAME_CENTER_LOGO)
|
||||
via_lines.append(f'{icontxt}{lname}')
|
||||
accounts = bui.app.plus.accounts
|
||||
if accounts.primary is not None:
|
||||
# For these login types, we show 'via' IF there is a
|
||||
# login of that type attached to our account AND it is
|
||||
# currently active (We don't want to show 'via Game
|
||||
# Center' if we're signed out of Game Center or
|
||||
# currently running on Steam, even if there is a Game
|
||||
# Center login attached to our account).
|
||||
for ltype, lchar in [
|
||||
(LoginType.GPGS, bui.SpecialChar.GOOGLE_PLAY_GAMES_LOGO),
|
||||
(LoginType.GAME_CENTER, bui.SpecialChar.GAME_CENTER_LOGO),
|
||||
]:
|
||||
linfo = accounts.primary.logins.get(ltype)
|
||||
ladapter = accounts.login_adapters.get(ltype)
|
||||
if (
|
||||
linfo is not None
|
||||
and ladapter is not None
|
||||
and ladapter.is_back_end_active()
|
||||
):
|
||||
via_lines.append(f'{bui.charstr(lchar)}{linfo.name}')
|
||||
|
||||
# TEMP TESTING
|
||||
if bool(False):
|
||||
@ -326,9 +316,8 @@ class AccountSettingsWindow(bui.Window):
|
||||
sign_in_button_space = 70.0
|
||||
deprecated_space = 60
|
||||
|
||||
show_game_service_button = self._v1_signed_in and v1_account_type in [
|
||||
'Game Center'
|
||||
]
|
||||
# Game Center currently has a single UI for everything.
|
||||
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'
|
||||
@ -338,7 +327,7 @@ class AccountSettingsWindow(bui.Window):
|
||||
|
||||
# Always show achievements except in the game-center case where
|
||||
# its unified UI covers them.
|
||||
show_achievements_button = self._v1_signed_in and not is_game_center
|
||||
show_achievements_button = self._v1_signed_in and not game_center_active
|
||||
achievements_button_space = 60.0
|
||||
|
||||
show_achievements_text = (
|
||||
@ -346,7 +335,7 @@ class AccountSettingsWindow(bui.Window):
|
||||
)
|
||||
achievements_text_space = 27.0
|
||||
|
||||
show_leaderboards_button = self._v1_signed_in and is_gpgs
|
||||
show_leaderboards_button = self._v1_signed_in and gpgs_active
|
||||
leaderboards_button_space = 60.0
|
||||
|
||||
show_campaign_progress = self._v1_signed_in
|
||||
@ -383,7 +372,6 @@ class AccountSettingsWindow(bui.Window):
|
||||
|
||||
show_sign_out_button = self._v1_signed_in and v1_account_type in [
|
||||
'Local',
|
||||
'Google Play',
|
||||
'V2',
|
||||
]
|
||||
sign_out_button_space = 70.0
|
||||
@ -548,7 +536,7 @@ class AccountSettingsWindow(bui.Window):
|
||||
value='(${VIA}',
|
||||
subs=[('${VIA}', bui.Lstr(resource='viaText'))],
|
||||
),
|
||||
scale=0.6,
|
||||
scale=0.5,
|
||||
color=(0.4, 0.6, 0.4, 0.5),
|
||||
flatness=1.0,
|
||||
shadow=0.0,
|
||||
@ -560,7 +548,7 @@ class AccountSettingsWindow(bui.Window):
|
||||
position=(self._sub_width * 0.5 + swidth * 0.5 + 10, v),
|
||||
size=(0, 0),
|
||||
text=')',
|
||||
scale=0.6,
|
||||
scale=0.5,
|
||||
color=(0.4, 0.6, 0.4, 0.5),
|
||||
flatness=1.0,
|
||||
shadow=0.0,
|
||||
@ -869,14 +857,15 @@ class AccountSettingsWindow(bui.Window):
|
||||
# the button to go to OS-Specific leaderboards/high-score-lists/etc.
|
||||
if show_game_service_button:
|
||||
button_width = 300
|
||||
v -= game_service_button_space * 0.85
|
||||
v1_account_type = plus.get_v1_account_type()
|
||||
if v1_account_type == 'Game Center':
|
||||
v -= game_service_button_space * 0.6
|
||||
if game_center_active:
|
||||
# Update: Apparently Game Center is just called 'Game Center'
|
||||
# in all languages. Can revisit if not true.
|
||||
# https://developer.apple.com/forums/thread/725779
|
||||
v1_account_type_name = bui.Lstr(value='Game Center')
|
||||
# v1_account_type_name = bui.Lstr(resource='gameCenterText')
|
||||
game_service_button_label = bui.Lstr(
|
||||
value=bui.charstr(bui.SpecialChar.GAME_CENTER_LOGO)
|
||||
+ 'Game Center'
|
||||
)
|
||||
else:
|
||||
raise ValueError(
|
||||
"unknown account type: '" + str(v1_account_type) + "'"
|
||||
@ -889,7 +878,7 @@ class AccountSettingsWindow(bui.Window):
|
||||
autoselect=True,
|
||||
on_activate_call=self._on_game_service_button_press,
|
||||
size=(button_width, 50),
|
||||
label=v1_account_type_name,
|
||||
label=game_service_button_label,
|
||||
)
|
||||
if first_selectable is None:
|
||||
first_selectable = btn
|
||||
@ -899,7 +888,7 @@ class AccountSettingsWindow(bui.Window):
|
||||
right_widget=bui.get_special_widget('party_button'),
|
||||
)
|
||||
bui.widget(edit=btn, left_widget=bbtn)
|
||||
v -= game_service_button_space * 0.15
|
||||
v -= game_service_button_space * 0.4
|
||||
else:
|
||||
self.game_service_button = None
|
||||
|
||||
@ -932,13 +921,15 @@ class AccountSettingsWindow(bui.Window):
|
||||
autoselect=True,
|
||||
icon=bui.gettexture(
|
||||
'googlePlayAchievementsIcon'
|
||||
if is_gpgs
|
||||
if gpgs_active
|
||||
else 'achievementsIcon'
|
||||
),
|
||||
icon_color=(0.8, 0.95, 0.7) if is_gpgs else (0.85, 0.8, 0.9),
|
||||
icon_color=(0.8, 0.95, 0.7)
|
||||
if gpgs_active
|
||||
else (0.85, 0.8, 0.9),
|
||||
on_activate_call=(
|
||||
self._on_custom_achievements_press
|
||||
if is_gpgs
|
||||
if gpgs_active
|
||||
else self._on_achievements_press
|
||||
),
|
||||
size=(button_width, 50),
|
||||
|
||||
@ -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 = 21583;
|
||||
const int kEngineBuildNumber = 21585;
|
||||
const char* kEngineVersion = "1.7.28";
|
||||
const int kEngineApiVersion = 8;
|
||||
|
||||
|
||||
@ -2341,39 +2341,6 @@ static PyMethodDef PyUIBoundsDef = {
|
||||
"center remains onscreen.",
|
||||
};
|
||||
|
||||
// ----------------------------- focus_window ----------------------------------
|
||||
|
||||
static auto PyFocusWindow(PyObject* self, PyObject* args, PyObject* keywds)
|
||||
-> PyObject* {
|
||||
BA_PYTHON_TRY;
|
||||
|
||||
static const char* kwlist[] = {nullptr};
|
||||
if (!PyArg_ParseTupleAndKeywords(args, keywds, "",
|
||||
const_cast<char**>(kwlist))) {
|
||||
return nullptr;
|
||||
}
|
||||
assert(g_base->InLogicThread());
|
||||
// #if BA_OSTYPE_MACOS && BA_XCODE_BUILD && !BA_HEADLESS_BUILD \
|
||||
// && !BA_XCODE_NEW_PROJECT
|
||||
// SDL_ericf_focus();
|
||||
// #else
|
||||
// #endif
|
||||
Py_RETURN_NONE;
|
||||
BA_PYTHON_CATCH;
|
||||
}
|
||||
|
||||
static PyMethodDef PyFocusWindowDef = {
|
||||
"focus_window", // name
|
||||
(PyCFunction)PyFocusWindow, // method
|
||||
METH_VARARGS | METH_KEYWORDS, // flags
|
||||
|
||||
"focus_window() -> None\n"
|
||||
"\n"
|
||||
"(internal)\n"
|
||||
"\n"
|
||||
"A workaround for some unintentional backgrounding that occurs on mac",
|
||||
};
|
||||
|
||||
// ------------------------ show_online_score_ui -------------------------------
|
||||
|
||||
static auto PyShowOnlineScoreUI(PyObject* self, PyObject* args,
|
||||
@ -2880,7 +2847,6 @@ auto PythonMethodsUIV1::GetMethods() -> std::vector<PyMethodDef> {
|
||||
PyShowAdDef,
|
||||
PyShowAd2Def,
|
||||
PyShowOnlineScoreUIDef,
|
||||
PyFocusWindowDef,
|
||||
PyButtonWidgetDef,
|
||||
PyCheckBoxWidgetDef,
|
||||
PyImageWidgetDef,
|
||||
|
||||
@ -43,8 +43,8 @@ class PyRequirement:
|
||||
# remove our custom module based stuff soon if nobody complains, which
|
||||
# would free us to theoretically move to a requirements.txt based setup.
|
||||
PY_REQUIREMENTS = [
|
||||
PyRequirement(pipname='mypy', minversion=[1, 7, 0]),
|
||||
PyRequirement(pipname='pylint', minversion=[3, 0, 2]),
|
||||
PyRequirement(pipname='mypy', minversion=[1, 6, 1]),
|
||||
PyRequirement(pipname='cpplint', minversion=[1, 6, 1]),
|
||||
PyRequirement(pipname='pytest', minversion=[7, 4, 2]),
|
||||
PyRequirement(pipname='pytz', minversion=[2023, 3]),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user