mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-06 23:59:18 +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/langdata.json": "dca47b4976752e76e852f7a4be2c7aa3",
|
||||||
"build/assets/ba_data/data/languages/arabic.json": "e0001d8542c904bc3c98a174f256efd9",
|
"build/assets/ba_data/data/languages/arabic.json": "e0001d8542c904bc3c98a174f256efd9",
|
||||||
"build/assets/ba_data/data/languages/belarussian.json": "7fe38341815ca6ff4d95224196e7a67e",
|
"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/chinesetraditional.json": "f858da49be0a5374157c627857751078",
|
||||||
"build/assets/ba_data/data/languages/croatian.json": "766532c67af5bd0144c2d63cab0516fa",
|
"build/assets/ba_data/data/languages/croatian.json": "766532c67af5bd0144c2d63cab0516fa",
|
||||||
"build/assets/ba_data/data/languages/czech.json": "93c5fe0d884d95435da6c675f64e30e0",
|
"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/hindi.json": "8ea0c58a44a24edb131d0e53b074d1f6",
|
||||||
"build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e",
|
"build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e",
|
||||||
"build/assets/ba_data/data/languages/indonesian.json": "ba39cade3c965b2ddbee122880b6f0db",
|
"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/korean.json": "ca1122a9ee551da3f75ae632012bd0e2",
|
||||||
"build/assets/ba_data/data/languages/malay.json": "832562ce997fc70704b9234c95fb2e38",
|
"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/polish.json": "8bb8f7baa5efcf6cdd627140d209c2b2",
|
||||||
"build/assets/ba_data/data/languages/portuguese.json": "7374b6a5cadcf573ee4ab4a5b4bc8c0a",
|
"build/assets/ba_data/data/languages/portuguese.json": "7374b6a5cadcf573ee4ab4a5b4bc8c0a",
|
||||||
"build/assets/ba_data/data/languages/romanian.json": "aeebdd54f65939c2facc6ac50c117826",
|
"build/assets/ba_data/data/languages/romanian.json": "aeebdd54f65939c2facc6ac50c117826",
|
||||||
"build/assets/ba_data/data/languages/russian.json": "9e068a3afdec43b207c83aedfb812e82",
|
"build/assets/ba_data/data/languages/russian.json": "9e068a3afdec43b207c83aedfb812e82",
|
||||||
"build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69",
|
"build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69",
|
||||||
"build/assets/ba_data/data/languages/slovak.json": "27962d53dc3f7dd4e877cd40faafeeef",
|
"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/swedish.json": "5142a96597d17d8344be96a603da64ac",
|
||||||
"build/assets/ba_data/data/languages/tamil.json": "b4de1a2851afe4869c82e9acd94cd89c",
|
"build/assets/ba_data/data/languages/tamil.json": "b4de1a2851afe4869c82e9acd94cd89c",
|
||||||
"build/assets/ba_data/data/languages/thai.json": "33f63753c9af9a5b238d229a0bf23fbc",
|
"build/assets/ba_data/data/languages/thai.json": "33f63753c9af9a5b238d229a0bf23fbc",
|
||||||
@ -4056,50 +4056,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": "a2c1b1a31a42a24e5f2188983ff97c0e",
|
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "66647fb41b54b221cf4189161a696698",
|
||||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "8d146105a6df3376ec2f575401f29ec2",
|
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "81a9bec829a30860a260df58c258b7d0",
|
||||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "5e0e63f5fea108212bfb35c4fdc05dd2",
|
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "1930fa43a702b2fd3601b032afd9ad31",
|
||||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "85797e98f9a21f168a986b7eb3219688",
|
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "e9fdc1e724495d36a1ae9c1898b2dbeb",
|
||||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "95bc2213d2fb30e8248ddf06764a3663",
|
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "5cb78d708e8dc3911d1e5a345e535bd2",
|
||||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "f09d7055120d50f37b605ff3a4cbf61d",
|
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "9aa815a258a476f02490cf58db28340a",
|
||||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "8f23de3825b9e9cf6ed4715125aeb956",
|
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "dd932540bbef37a3e0580ef81206090c",
|
||||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "f7b88875b37a39db57d77bebb05f822f",
|
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "d34c3fcf54ae4c362dafb442e5e2e57a",
|
||||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "0b719dc609de364814299a5baa9a5b0b",
|
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "a74979683c4e58bfefde5235996551db",
|
||||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "07aa53835bdd2d2a4113d61a89a7da1d",
|
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "cbbecde45fb204a8f39cbf5448d248a2",
|
||||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "1a1c4db580157e38effe4b81c35aca52",
|
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "37d71f1f72191bb29645146a5d7fdd09",
|
||||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "1e44d0a7160d442b1eb4d348952b0d06",
|
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "10cb64bd655ad3ff562496bb66693dd6",
|
||||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "a85fcf6a12483bde66559dbdce88b730",
|
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "7d9ab35e63602e682a533495022728d3",
|
||||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "d53e31771fe31615c66bd0d1e1292b2f",
|
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "d98edee305c488c3a082ef98deae8a6c",
|
||||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "e1804380d5ebec56f8f0af2e2547316e",
|
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "a12f0a05ed17ef48554356b6087cdee0",
|
||||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "d9665cdf870247b6d8e9475419b04038",
|
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "de7e6c726c6ace4bba28f59a84cdf6b5",
|
||||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "0cac36823713816d03a6922b96cecd0a",
|
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "fd7b381ca67b31c088d4e98b6c0ddfe1",
|
||||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "bd741122315ced7b703de1fed2d372cd",
|
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "1d074c3b15b2bdf6c32e145ea83f1fa2",
|
||||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "f11edd5da3ce1a3e804bfc61b7ca9c1e",
|
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "0b47cfab278418386ac29009402c9f59",
|
||||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "3d647f5f63b3ac3900903cf72496cef2",
|
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "213a68414bac47cbe051db9fbb0cbb43",
|
||||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "f812111f1eb4ea76e99558305ce3980f",
|
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "a5e255155289f502a6662e5f9bb7819c",
|
||||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "c16c1b360b27850f1ac4d3dc55194b0a",
|
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "ae044789e56e5d2999f55e2f4eeb6a4d",
|
||||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "f812111f1eb4ea76e99558305ce3980f",
|
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "a5e255155289f502a6662e5f9bb7819c",
|
||||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "c16c1b360b27850f1ac4d3dc55194b0a",
|
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "ae044789e56e5d2999f55e2f4eeb6a4d",
|
||||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "473c84d44b472d3ae73df6a2f1b56839",
|
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "48d81af91942519355b066d7bf8d3468",
|
||||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "970c415cbb7a3087a163fa6e96e634a1",
|
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "2c4f37722cb283a8405f35a0c9bbbfbb",
|
||||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "473c84d44b472d3ae73df6a2f1b56839",
|
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "48d81af91942519355b066d7bf8d3468",
|
||||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "970c415cbb7a3087a163fa6e96e634a1",
|
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "2c4f37722cb283a8405f35a0c9bbbfbb",
|
||||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "86498db547380838a1c95b45ef17d28b",
|
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "09abcf532a2c0fba00e5e7860f495ba8",
|
||||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "bf11ae92718ae3dd5116d623799dd27f",
|
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "699291d36e42e3214946aab9798446ea",
|
||||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "86498db547380838a1c95b45ef17d28b",
|
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "09abcf532a2c0fba00e5e7860f495ba8",
|
||||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "bf11ae92718ae3dd5116d623799dd27f",
|
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "699291d36e42e3214946aab9798446ea",
|
||||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "147c5a5210a55978060381cc44a122db",
|
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "ef1356360fb3701b0976a0ef37eae4bf",
|
||||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "380d456bc409849174a36c5d2f61aa1b",
|
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "50cfe82580f1ef2698c5508f46bd2e4c",
|
||||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "4fae9b286a6d1c5c729c49c483c1422a",
|
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "7b6afdb6b8d8722cbcee3bff944ec038",
|
||||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "380d456bc409849174a36c5d2f61aa1b",
|
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "50cfe82580f1ef2698c5508f46bd2e4c",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "93f75d31841fe18d6bc66681c99b05a1",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "b29d085453e251a7e6866ac7efcd0513",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "cd6500ab076fa3bdff92fc8b65bc1d64",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "e8da891dd0f5a441d781793f641f215d",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "0dcde1146f11e4cfd3d609f4330f7a9a",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "982dc78eabf4eca6ccbfd3bf2537c706",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "663e6ed62de0f857fd9a4de57067dbd3",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "d02505b956c8a0d5b2cb310408492df6",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "ae28db2f400d3b778d4a011a72339757",
|
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "c95c26eed8a2c5e8573d35c58b2c99f2",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "3b13cdbaf70cf43d0a14b7a2dd744945",
|
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d5a04d68e7818912b1f689fb1a3e8b53",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "54798340a1dfedaa9052aeee180e28ff",
|
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "b612531dedbb057f48868e43ce05636a",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "18b635d88c074261a3be4f45e8244340",
|
"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/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
|
||||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "28323912b56ec07701eda3d41a6a4101",
|
"src/assets/ba_data/python/babase/_mgen/enums.py": "28323912b56ec07701eda3d41a6a4101",
|
||||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "72bfed2cce8ff19741989dec28302f3f",
|
"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,
|
- 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
|
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
|
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._keyboard import Keyboard
|
||||||
from babase._language import Lstr, LanguageSubsystem
|
from babase._language import Lstr, LanguageSubsystem
|
||||||
from babase._login import LoginAdapter
|
from babase._login import LoginAdapter, LoginInfo
|
||||||
|
|
||||||
# noinspection PyProtectedMember
|
# noinspection PyProtectedMember
|
||||||
# (PyCharm inspection bug?)
|
# (PyCharm inspection bug?)
|
||||||
@ -265,6 +265,7 @@ __all__ = [
|
|||||||
'LanguageSubsystem',
|
'LanguageSubsystem',
|
||||||
'lock_all_input',
|
'lock_all_input',
|
||||||
'LoginAdapter',
|
'LoginAdapter',
|
||||||
|
'LoginInfo',
|
||||||
'Lstr',
|
'Lstr',
|
||||||
'mac_music_app_get_playlists',
|
'mac_music_app_get_playlists',
|
||||||
'mac_music_app_get_volume',
|
'mac_music_app_get_volume',
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import _babase
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from babase._login import LoginAdapter
|
from babase._login import LoginAdapter, LoginInfo
|
||||||
|
|
||||||
|
|
||||||
DEBUG_LOG = False
|
DEBUG_LOG = False
|
||||||
@ -27,7 +27,7 @@ class AccountV2Subsystem:
|
|||||||
|
|
||||||
Category: **App Classes**
|
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:
|
def __init__(self) -> None:
|
||||||
@ -425,7 +425,7 @@ class AccountV2Handle:
|
|||||||
tag: str
|
tag: str
|
||||||
workspacename: str | None
|
workspacename: str | None
|
||||||
workspaceid: str | None
|
workspaceid: str | None
|
||||||
logins: dict[LoginType, str]
|
logins: dict[LoginType, LoginInfo]
|
||||||
|
|
||||||
def __enter__(self) -> None:
|
def __enter__(self) -> None:
|
||||||
"""Support for "with" statement.
|
"""Support for "with" statement.
|
||||||
|
|||||||
@ -20,6 +20,13 @@ if TYPE_CHECKING:
|
|||||||
DEBUG_LOG = False
|
DEBUG_LOG = False
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class LoginInfo:
|
||||||
|
"""Basic info about a login available in the app.plus.accounts section."""
|
||||||
|
|
||||||
|
name: str
|
||||||
|
|
||||||
|
|
||||||
class LoginAdapter:
|
class LoginAdapter:
|
||||||
"""Allows using implicit login types in an explicit way.
|
"""Allows using implicit login types in an explicit way.
|
||||||
|
|
||||||
@ -293,7 +300,7 @@ class LoginAdapter:
|
|||||||
|
|
||||||
def _update_implicit_login_state(self) -> None:
|
def _update_implicit_login_state(self) -> None:
|
||||||
# If we've received an implicit login state, schedule it to be
|
# 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
|
# called so that account-client-v2 has had a chance to load
|
||||||
# any existing state so it can properly respond to this.
|
# any existing state so it can properly respond to this.
|
||||||
if self._implicit_login_state_dirty and self._on_app_loading_called:
|
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
|
# Build number and version of the ballistica binary we expect to be
|
||||||
# using.
|
# using.
|
||||||
TARGET_BALLISTICA_BUILD = 21583
|
TARGET_BALLISTICA_BUILD = 21585
|
||||||
TARGET_BALLISTICA_VERSION = '1.7.28'
|
TARGET_BALLISTICA_VERSION = '1.7.28'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -438,10 +438,16 @@ class GameActivity(Activity[PlayerT, TeamT]):
|
|||||||
assert classic is not None
|
assert classic is not None
|
||||||
continues_window = classic.continues_window
|
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
|
plus = babase.app.plus
|
||||||
try:
|
try:
|
||||||
if plus is not None and plus.get_v1_account_misc_read_val(
|
if (
|
||||||
'enableContinues', False
|
plus is not None
|
||||||
|
and plus.get_v1_account_misc_read_val('enableContinues', False)
|
||||||
|
and allow_continues
|
||||||
):
|
):
|
||||||
session = self.session
|
session = self.session
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import random
|
|||||||
import logging
|
import logging
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from bacommon.login import LoginType
|
||||||
import bascenev1 as bs
|
import bascenev1 as bs
|
||||||
import bauiv1 as bui
|
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_icon_color: Sequence[float] | None
|
||||||
self._game_service_achievements_texture: bui.Texture | None
|
self._game_service_achievements_texture: bui.Texture | None
|
||||||
self._game_service_leaderboards_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)
|
self._game_service_icon_color = (1.0, 1.0, 1.0)
|
||||||
icon = bui.gettexture('gameCenterIcon')
|
icon = bui.gettexture('gameCenterIcon')
|
||||||
self._game_service_achievements_texture = icon
|
self._game_service_achievements_texture = icon
|
||||||
self._game_service_leaderboards_texture = icon
|
self._game_service_leaderboards_texture = icon
|
||||||
self._account_has_achievements = True
|
self._account_has_achievements = True
|
||||||
elif self._account_type == 'Game Circle':
|
elif gpgs_active:
|
||||||
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':
|
|
||||||
self._game_service_icon_color = (0.8, 1.0, 0.6)
|
self._game_service_icon_color = (0.8, 1.0, 0.6)
|
||||||
self._game_service_achievements_texture = bui.gettexture(
|
self._game_service_achievements_texture = bui.gettexture(
|
||||||
'googlePlayAchievementsIcon'
|
'googlePlayAchievementsIcon'
|
||||||
|
|||||||
@ -65,6 +65,7 @@ from babase import (
|
|||||||
Keyboard,
|
Keyboard,
|
||||||
lock_all_input,
|
lock_all_input,
|
||||||
LoginAdapter,
|
LoginAdapter,
|
||||||
|
LoginInfo,
|
||||||
Lstr,
|
Lstr,
|
||||||
native_review_request,
|
native_review_request,
|
||||||
native_review_request_supported,
|
native_review_request_supported,
|
||||||
@ -191,6 +192,7 @@ __all__ = [
|
|||||||
'Keyboard',
|
'Keyboard',
|
||||||
'lock_all_input',
|
'lock_all_input',
|
||||||
'LoginAdapter',
|
'LoginAdapter',
|
||||||
|
'LoginInfo',
|
||||||
'Lstr',
|
'Lstr',
|
||||||
'Mesh',
|
'Mesh',
|
||||||
'native_review_request',
|
'native_review_request',
|
||||||
|
|||||||
@ -63,13 +63,6 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
1.0, bui.WeakCall(self._update), repeat=True
|
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
|
self._can_reset_achievements = False
|
||||||
|
|
||||||
app = bui.app
|
app = bui.app
|
||||||
@ -243,19 +236,13 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
# We expose GPGS-specific functionality only if it is 'active'
|
# We expose GPGS-specific functionality only if it is 'active'
|
||||||
# (meaning the current GPGS player matches one of our account's
|
# (meaning the current GPGS player matches one of our account's
|
||||||
# logins).
|
# logins).
|
||||||
gpgs_adapter = plus.accounts.login_adapters.get(LoginType.GPGS)
|
adapter = plus.accounts.login_adapters.get(LoginType.GPGS)
|
||||||
is_gpgs = (
|
gpgs_active = adapter is not None and adapter.is_back_end_active()
|
||||||
False if gpgs_adapter is None else gpgs_adapter.is_back_end_active()
|
|
||||||
)
|
|
||||||
|
|
||||||
# Ditto for Game Center.
|
# Ditto for Game Center.
|
||||||
game_center_adapter = plus.accounts.login_adapters.get(
|
adapter = plus.accounts.login_adapters.get(LoginType.GAME_CENTER)
|
||||||
LoginType.GAME_CENTER
|
game_center_active = (
|
||||||
)
|
adapter is not None and adapter.is_back_end_active()
|
||||||
is_game_center = (
|
|
||||||
False
|
|
||||||
if game_center_adapter is None
|
|
||||||
else game_center_adapter.is_back_end_active()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
show_signed_in_as = self._v1_signed_in
|
show_signed_in_as = self._v1_signed_in
|
||||||
@ -268,23 +255,26 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
# through that account.
|
# through that account.
|
||||||
via_space = 25.0
|
via_space = 25.0
|
||||||
if show_signed_in_as and bui.app.plus is not None:
|
if show_signed_in_as and bui.app.plus is not None:
|
||||||
primary_account = bui.app.plus.accounts.primary
|
accounts = bui.app.plus.accounts
|
||||||
if primary_account is not None:
|
if accounts.primary is not None:
|
||||||
# Show Google Play Games account name if the current account
|
# For these login types, we show 'via' IF there is a
|
||||||
# has such a login attached.
|
# login of that type attached to our account AND it is
|
||||||
lname = primary_account.logins.get(LoginType.GPGS)
|
# currently active (We don't want to show 'via Game
|
||||||
if lname is not None:
|
# Center' if we're signed out of Game Center or
|
||||||
icontxt = bui.charstr(
|
# currently running on Steam, even if there is a Game
|
||||||
bui.SpecialChar.GOOGLE_PLAY_GAMES_LOGO
|
# Center login attached to our account).
|
||||||
)
|
for ltype, lchar in [
|
||||||
via_lines.append(f'{icontxt}{lname}')
|
(LoginType.GPGS, bui.SpecialChar.GOOGLE_PLAY_GAMES_LOGO),
|
||||||
|
(LoginType.GAME_CENTER, bui.SpecialChar.GAME_CENTER_LOGO),
|
||||||
# Show Game Center account name if the current account
|
]:
|
||||||
# has such a login attached.
|
linfo = accounts.primary.logins.get(ltype)
|
||||||
lname = primary_account.logins.get(LoginType.GAME_CENTER)
|
ladapter = accounts.login_adapters.get(ltype)
|
||||||
if lname is not None:
|
if (
|
||||||
icontxt = bui.charstr(bui.SpecialChar.GAME_CENTER_LOGO)
|
linfo is not None
|
||||||
via_lines.append(f'{icontxt}{lname}')
|
and ladapter is not None
|
||||||
|
and ladapter.is_back_end_active()
|
||||||
|
):
|
||||||
|
via_lines.append(f'{bui.charstr(lchar)}{linfo.name}')
|
||||||
|
|
||||||
# TEMP TESTING
|
# TEMP TESTING
|
||||||
if bool(False):
|
if bool(False):
|
||||||
@ -326,9 +316,8 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
sign_in_button_space = 70.0
|
sign_in_button_space = 70.0
|
||||||
deprecated_space = 60
|
deprecated_space = 60
|
||||||
|
|
||||||
show_game_service_button = self._v1_signed_in and v1_account_type in [
|
# Game Center currently has a single UI for everything.
|
||||||
'Game Center'
|
show_game_service_button = game_center_active
|
||||||
]
|
|
||||||
game_service_button_space = 60.0
|
game_service_button_space = 60.0
|
||||||
|
|
||||||
show_what_is_v2 = self._v1_signed_in and v1_account_type == 'V2'
|
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
|
# Always show achievements except in the game-center case where
|
||||||
# its unified UI covers them.
|
# 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
|
achievements_button_space = 60.0
|
||||||
|
|
||||||
show_achievements_text = (
|
show_achievements_text = (
|
||||||
@ -346,7 +335,7 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
)
|
)
|
||||||
achievements_text_space = 27.0
|
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
|
leaderboards_button_space = 60.0
|
||||||
|
|
||||||
show_campaign_progress = self._v1_signed_in
|
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 [
|
show_sign_out_button = self._v1_signed_in and v1_account_type in [
|
||||||
'Local',
|
'Local',
|
||||||
'Google Play',
|
|
||||||
'V2',
|
'V2',
|
||||||
]
|
]
|
||||||
sign_out_button_space = 70.0
|
sign_out_button_space = 70.0
|
||||||
@ -548,7 +536,7 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
value='(${VIA}',
|
value='(${VIA}',
|
||||||
subs=[('${VIA}', bui.Lstr(resource='viaText'))],
|
subs=[('${VIA}', bui.Lstr(resource='viaText'))],
|
||||||
),
|
),
|
||||||
scale=0.6,
|
scale=0.5,
|
||||||
color=(0.4, 0.6, 0.4, 0.5),
|
color=(0.4, 0.6, 0.4, 0.5),
|
||||||
flatness=1.0,
|
flatness=1.0,
|
||||||
shadow=0.0,
|
shadow=0.0,
|
||||||
@ -560,7 +548,7 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
position=(self._sub_width * 0.5 + swidth * 0.5 + 10, v),
|
position=(self._sub_width * 0.5 + swidth * 0.5 + 10, v),
|
||||||
size=(0, 0),
|
size=(0, 0),
|
||||||
text=')',
|
text=')',
|
||||||
scale=0.6,
|
scale=0.5,
|
||||||
color=(0.4, 0.6, 0.4, 0.5),
|
color=(0.4, 0.6, 0.4, 0.5),
|
||||||
flatness=1.0,
|
flatness=1.0,
|
||||||
shadow=0.0,
|
shadow=0.0,
|
||||||
@ -869,14 +857,15 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
# the button to go to OS-Specific leaderboards/high-score-lists/etc.
|
# the button to go to OS-Specific leaderboards/high-score-lists/etc.
|
||||||
if show_game_service_button:
|
if show_game_service_button:
|
||||||
button_width = 300
|
button_width = 300
|
||||||
v -= game_service_button_space * 0.85
|
v -= game_service_button_space * 0.6
|
||||||
v1_account_type = plus.get_v1_account_type()
|
if game_center_active:
|
||||||
if v1_account_type == 'Game Center':
|
|
||||||
# Update: Apparently Game Center is just called 'Game Center'
|
# Update: Apparently Game Center is just called 'Game Center'
|
||||||
# in all languages. Can revisit if not true.
|
# in all languages. Can revisit if not true.
|
||||||
# https://developer.apple.com/forums/thread/725779
|
# https://developer.apple.com/forums/thread/725779
|
||||||
v1_account_type_name = bui.Lstr(value='Game Center')
|
game_service_button_label = bui.Lstr(
|
||||||
# v1_account_type_name = bui.Lstr(resource='gameCenterText')
|
value=bui.charstr(bui.SpecialChar.GAME_CENTER_LOGO)
|
||||||
|
+ 'Game Center'
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"unknown account type: '" + str(v1_account_type) + "'"
|
"unknown account type: '" + str(v1_account_type) + "'"
|
||||||
@ -889,7 +878,7 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
autoselect=True,
|
autoselect=True,
|
||||||
on_activate_call=self._on_game_service_button_press,
|
on_activate_call=self._on_game_service_button_press,
|
||||||
size=(button_width, 50),
|
size=(button_width, 50),
|
||||||
label=v1_account_type_name,
|
label=game_service_button_label,
|
||||||
)
|
)
|
||||||
if first_selectable is None:
|
if first_selectable is None:
|
||||||
first_selectable = btn
|
first_selectable = btn
|
||||||
@ -899,7 +888,7 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
right_widget=bui.get_special_widget('party_button'),
|
right_widget=bui.get_special_widget('party_button'),
|
||||||
)
|
)
|
||||||
bui.widget(edit=btn, left_widget=bbtn)
|
bui.widget(edit=btn, left_widget=bbtn)
|
||||||
v -= game_service_button_space * 0.15
|
v -= game_service_button_space * 0.4
|
||||||
else:
|
else:
|
||||||
self.game_service_button = None
|
self.game_service_button = None
|
||||||
|
|
||||||
@ -932,13 +921,15 @@ class AccountSettingsWindow(bui.Window):
|
|||||||
autoselect=True,
|
autoselect=True,
|
||||||
icon=bui.gettexture(
|
icon=bui.gettexture(
|
||||||
'googlePlayAchievementsIcon'
|
'googlePlayAchievementsIcon'
|
||||||
if is_gpgs
|
if gpgs_active
|
||||||
else 'achievementsIcon'
|
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=(
|
on_activate_call=(
|
||||||
self._on_custom_achievements_press
|
self._on_custom_achievements_press
|
||||||
if is_gpgs
|
if gpgs_active
|
||||||
else self._on_achievements_press
|
else self._on_achievements_press
|
||||||
),
|
),
|
||||||
size=(button_width, 50),
|
size=(button_width, 50),
|
||||||
|
|||||||
@ -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 = 21583;
|
const int kEngineBuildNumber = 21585;
|
||||||
const char* kEngineVersion = "1.7.28";
|
const char* kEngineVersion = "1.7.28";
|
||||||
const int kEngineApiVersion = 8;
|
const int kEngineApiVersion = 8;
|
||||||
|
|
||||||
|
|||||||
@ -2341,39 +2341,6 @@ static PyMethodDef PyUIBoundsDef = {
|
|||||||
"center remains onscreen.",
|
"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 -------------------------------
|
// ------------------------ show_online_score_ui -------------------------------
|
||||||
|
|
||||||
static auto PyShowOnlineScoreUI(PyObject* self, PyObject* args,
|
static auto PyShowOnlineScoreUI(PyObject* self, PyObject* args,
|
||||||
@ -2880,7 +2847,6 @@ auto PythonMethodsUIV1::GetMethods() -> std::vector<PyMethodDef> {
|
|||||||
PyShowAdDef,
|
PyShowAdDef,
|
||||||
PyShowAd2Def,
|
PyShowAd2Def,
|
||||||
PyShowOnlineScoreUIDef,
|
PyShowOnlineScoreUIDef,
|
||||||
PyFocusWindowDef,
|
|
||||||
PyButtonWidgetDef,
|
PyButtonWidgetDef,
|
||||||
PyCheckBoxWidgetDef,
|
PyCheckBoxWidgetDef,
|
||||||
PyImageWidgetDef,
|
PyImageWidgetDef,
|
||||||
|
|||||||
@ -43,8 +43,8 @@ class PyRequirement:
|
|||||||
# remove our custom module based stuff soon if nobody complains, which
|
# remove our custom module based stuff soon if nobody complains, which
|
||||||
# would free us to theoretically move to a requirements.txt based setup.
|
# would free us to theoretically move to a requirements.txt based setup.
|
||||||
PY_REQUIREMENTS = [
|
PY_REQUIREMENTS = [
|
||||||
|
PyRequirement(pipname='mypy', minversion=[1, 7, 0]),
|
||||||
PyRequirement(pipname='pylint', minversion=[3, 0, 2]),
|
PyRequirement(pipname='pylint', minversion=[3, 0, 2]),
|
||||||
PyRequirement(pipname='mypy', minversion=[1, 6, 1]),
|
|
||||||
PyRequirement(pipname='cpplint', minversion=[1, 6, 1]),
|
PyRequirement(pipname='cpplint', minversion=[1, 6, 1]),
|
||||||
PyRequirement(pipname='pytest', minversion=[7, 4, 2]),
|
PyRequirement(pipname='pytest', minversion=[7, 4, 2]),
|
||||||
PyRequirement(pipname='pytz', minversion=[2023, 3]),
|
PyRequirement(pipname='pytz', minversion=[2023, 3]),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user