From 111f0e65c5325b2060d1ed3950103da7cae1b5ad Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 9 Jun 2023 10:17:10 -0700 Subject: [PATCH] subsystems cleanup --- .efrocachemap | 90 ++++++------- CHANGELOG.md | 2 +- Makefile | 1 + config/featuresets/featureset_classic.py | 7 + config/featuresets/featureset_ui_v1.py | 3 + src/assets/.asset_manifest_public.json | 8 +- src/assets/Makefile | 8 +- .../ba_data/python/babase/_accountv2.py | 6 +- src/assets/ba_data/python/babase/_app.py | 87 ++++++++----- .../ba_data/python/babase/_appsubsystem.py | 12 +- src/assets/ba_data/python/babase/_hooks.py | 7 - src/assets/ba_data/python/babase/_login.py | 12 +- .../ba_data/python/baclassic/_accountv1.py | 2 +- .../ba_data/python/baclassic/_appdelegate.py | 4 +- src/assets/ba_data/python/baclassic/_music.py | 4 +- src/assets/ba_data/python/baclassic/_store.py | 2 +- .../ba_data/python/baclassic/_subsystem.py | 57 +-------- src/assets/ba_data/python/baenv.py | 2 +- .../ba_data/python/baplus/_subsystem.py | 7 +- .../python/bascenev1/_activitytypes.py | 2 +- .../ba_data/python/bascenev1/_gameactivity.py | 2 +- .../ba_data/python/bascenev1/_gameutils.py | 2 +- src/assets/ba_data/python/bascenev1/_hooks.py | 6 +- .../python/bascenev1lib/activity/coopscore.py | 2 +- .../bascenev1lib/activity/multiteamvictory.py | 2 +- .../python/bascenev1lib/game/runaround.py | 2 +- .../ba_data/python/bascenev1lib/mainmenu.py | 29 ++--- src/assets/ba_data/python/bauiv1/__init__.py | 5 +- src/assets/ba_data/python/bauiv1/_hooks.py | 12 +- .../_ui.py => bauiv1/_subsystem.py} | 69 ++++++++-- .../bauiv1/{ui/__init__.py => _uitypes.py} | 4 +- .../ba_data/python/bauiv1/onscreenkeyboard.py | 6 +- .../ba_data/python/bauiv1lib/account/link.py | 6 +- .../python/bauiv1lib/account/settings.py | 40 +++--- .../python/bauiv1lib/account/unlink.py | 4 +- .../python/bauiv1lib/account/v2proxy.py | 4 +- .../python/bauiv1lib/account/viewer.py | 12 +- .../ba_data/python/bauiv1lib/achievements.py | 2 +- .../ba_data/python/bauiv1lib/appinvite.py | 6 +- .../python/bauiv1lib/characterpicker.py | 2 +- .../ba_data/python/bauiv1lib/colorpicker.py | 4 +- .../ba_data/python/bauiv1lib/confirm.py | 4 +- .../ba_data/python/bauiv1lib/continues.py | 2 +- .../ba_data/python/bauiv1lib/coop/browser.py | 38 +++--- .../ba_data/python/bauiv1lib/coop/level.py | 4 +- .../ba_data/python/bauiv1lib/creditslist.py | 10 +- src/assets/ba_data/python/bauiv1lib/debug.py | 16 +-- .../ba_data/python/bauiv1lib/feedback.py | 4 +- .../ba_data/python/bauiv1lib/fileselector.py | 6 +- .../python/bauiv1lib/gather/__init__.py | 20 +-- .../python/bauiv1lib/gather/manualtab.py | 12 +- .../python/bauiv1lib/gather/privatetab.py | 12 +- .../python/bauiv1lib/gather/publictab.py | 8 +- .../ba_data/python/bauiv1lib/getcurrency.py | 6 +- .../ba_data/python/bauiv1lib/getremote.py | 2 +- src/assets/ba_data/python/bauiv1lib/helpui.py | 10 +- .../ba_data/python/bauiv1lib/iconpicker.py | 2 +- src/assets/ba_data/python/bauiv1lib/kiosk.py | 8 +- .../python/bauiv1lib/league/rankbutton.py | 2 +- .../python/bauiv1lib/league/rankwindow.py | 6 +- .../ba_data/python/bauiv1lib/mainmenu.py | 49 ++++--- src/assets/ba_data/python/bauiv1lib/party.py | 6 +- .../ba_data/python/bauiv1lib/partyqueue.py | 6 +- src/assets/ba_data/python/bauiv1lib/play.py | 32 +++-- .../python/bauiv1lib/playlist/addgame.py | 6 +- .../python/bauiv1lib/playlist/browser.py | 32 +++-- .../bauiv1lib/playlist/customizebrowser.py | 8 +- .../ba_data/python/bauiv1lib/playlist/edit.py | 10 +- .../bauiv1lib/playlist/editcontroller.py | 26 ++-- .../python/bauiv1lib/playlist/editgame.py | 8 +- .../python/bauiv1lib/playlist/mapselect.py | 10 +- .../python/bauiv1lib/playlist/share.py | 6 +- .../ba_data/python/bauiv1lib/playoptions.py | 8 +- src/assets/ba_data/python/bauiv1lib/popup.py | 2 +- .../python/bauiv1lib/profile/browser.py | 16 +-- .../ba_data/python/bauiv1lib/profile/edit.py | 24 ++-- .../python/bauiv1lib/profile/upgrade.py | 8 +- .../ba_data/python/bauiv1lib/promocode.py | 6 +- .../ba_data/python/bauiv1lib/purchase.py | 2 +- src/assets/ba_data/python/bauiv1lib/qrcode.py | 2 +- src/assets/ba_data/python/bauiv1lib/report.py | 2 +- .../python/bauiv1lib/resourcetypeinfo.py | 2 +- .../ba_data/python/bauiv1lib/serverdialog.py | 2 +- .../python/bauiv1lib/settings/advanced.py | 28 ++-- .../python/bauiv1lib/settings/allsettings.py | 28 ++-- .../python/bauiv1lib/settings/audio.py | 14 +- .../python/bauiv1lib/settings/controls.py | 34 ++--- .../python/bauiv1lib/settings/gamepad.py | 14 +- .../bauiv1lib/settings/gamepadadvanced.py | 4 +- .../bauiv1lib/settings/gamepadselect.py | 18 +-- .../python/bauiv1lib/settings/graphics.py | 20 +-- .../python/bauiv1lib/settings/keyboard.py | 12 +- .../python/bauiv1lib/settings/nettesting.py | 6 +- .../python/bauiv1lib/settings/plugins.py | 10 +- .../bauiv1lib/settings/pluginsettings.py | 6 +- .../python/bauiv1lib/settings/remoteapp.py | 6 +- .../python/bauiv1lib/settings/testing.py | 8 +- .../python/bauiv1lib/settings/touchscreen.py | 6 +- .../python/bauiv1lib/soundtrack/browser.py | 16 +-- .../python/bauiv1lib/soundtrack/edit.py | 12 +- .../bauiv1lib/soundtrack/entrytypeselect.py | 12 +- .../bauiv1lib/soundtrack/macmusicapp.py | 2 +- .../ba_data/python/bauiv1lib/specialoffer.py | 2 +- .../ba_data/python/bauiv1lib/store/browser.py | 18 +-- .../python/bauiv1lib/teamnamescolors.py | 2 +- .../python/bauiv1lib/tournamententry.py | 4 +- .../python/bauiv1lib/tournamentscores.py | 2 +- .../ba_data/python/bauiv1lib/trophies.py | 2 +- src/assets/ba_data/python/bauiv1lib/url.py | 6 +- .../ba_data/python/bauiv1lib/v2upgrade.py | 4 +- src/assets/ba_data/python/bauiv1lib/watch.py | 24 ++-- src/ballistica/base/graphics/graphics.cc | 43 +++++-- src/ballistica/shared/ballistica.cc | 2 +- src/meta/babasemeta/pyembed/binding_base.py | 1 - tools/batools/appmodule.py | 120 ++++++++++++++---- tools/batools/dummymodule.py | 13 +- tools/batools/featureset.py | 9 ++ 117 files changed, 795 insertions(+), 702 deletions(-) rename src/assets/ba_data/python/{baclassic/_ui.py => bauiv1/_subsystem.py} (75%) rename src/assets/ba_data/python/bauiv1/{ui/__init__.py => _uitypes.py} (98%) diff --git a/.efrocachemap b/.efrocachemap index a181ac2c..16fc5751 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4072,53 +4072,53 @@ "build/assets/workspace/ninjafightplug.py": "https://files.ballistica.net/cache/ba1/c5/09/4f10b8a21ba87aa5509cff7a164b", "build/assets/workspace/onslaughtplug.py": "https://files.ballistica.net/cache/ba1/ff/0a/a354984f9c074dab0676ac7e4877", "build/assets/workspace/runaroundplug.py": "https://files.ballistica.net/cache/ba1/2a/1c/9ee5db6d1bceca7fa6638fb8abde", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/8c/c5/1ab61baa2ab42107532a2066f703", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/16/ee/19f2761bda0f16e0aef2812c7404", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/56/b0/e44cfcc94d3cec25afda3f465e3e", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/3a/36/4eea8f47f1f95cc5d59785ecd5dd", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/23/60/927bef0741495968aaf6ff76d7fa", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/1b/1f/e305488cde988719cbdd809310be", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/78/5f/aa480b563fd76f78464187f253af", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/b7/8a/a2c43257db6b2fe719e42edc7f7c", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/c2/06/d670a8ce6cabe2a610a6b5ff1c3d", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/45/0c/e32dc75d2aae3b467dfd3ed8ec60", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/5c/9f/8598937d62c127e4acd63d62964c", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/32/8f/367e559358022cfc4fc89fdc33d9", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/ba/91/fd975fabcdb2d147c2f88332e24d", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/50/a3/08545f4a5e3ff16bd7b9cb264cc9", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/bd/df/a48bbb8b6ecd10c18cb40d674839", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/29/9b/67559ca332af03f6a0911db1b74a", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/28/51/b572feb62ba0889ce9edf42f7ad4", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/c5/1d/40b9757c75338e6523769cd46fe8", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/f2/25/636d5643d06a81c1c02c43747848", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/f0/2e/9f2abc81af086b32c1f8f12a1de7", - "build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/58/55/b6ae6dd4f3615fa87bb170a43233", - "build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/b9/f8/37285d0ced7794a82534d13c33ac", - "build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/c7/cc/0c5f0afbfa0ddabaea8d5838562a", - "build/prefab/lib/linux_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/95/cb/bd23376108f02e1b0fdbe3b878aa", - "build/prefab/lib/linux_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/cc/78/7e9380defb9cea4e8a69e42d8c05", - "build/prefab/lib/linux_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/50/b8/c87593b43bc1cf4e7bc7cb8c2b12", - "build/prefab/lib/linux_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/71/cf/469e8f60cee5ee8629abe50308a6", - "build/prefab/lib/linux_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/b2/50/d67d896575e16d5a28f933b48482", - "build/prefab/lib/mac_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/33/3a/d246df62f19be9f2a764bd7a013b", - "build/prefab/lib/mac_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/35/65/377250a2a44c8db0c3776ef5bc22", - "build/prefab/lib/mac_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/d7/72/47506e999cceddbc1d0f3aafe1c4", - "build/prefab/lib/mac_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/24/f6/3b47f98ae75b30c1b2babf242830", - "build/prefab/lib/mac_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/90/76/9cfa1c44d742382e5bdab9f0fa54", - "build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/96/2e/1b0ba43fe24fe9cc223a434db647", - "build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/f3/83/581b7df96f6516032a0747b83e15", - "build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/6a/6d/7aaf7617929eeff41bc5a574e6c8", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/75/20/54a441ddd17ff76dd104811b3a9e", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/12/be/87fd5bdbac03c1d83fb3ba22c720", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/b8/99/ff380157fbcfbf1401410d5c71e7", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/46/ca/68ffabc0270a5ac3fbe7fdeca2d6", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/6f/13/6bc8ed23710e9257fc6f4877d7a4", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/cf/26/5c062d2e911565aa5b9668e38613", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/ba/79/2fdbbeb60550a81d4af9386813ea", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/e6/79/77af4a1a7281cad9fcc501dac03d", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/7a/07/c4705a424f294fd9edd6b23d0b36", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/15/d0/28bb8ccda6ac709b134eca933bc1", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/d6/9f/eb5f169aaf9a683a603ee2e0d1b5", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/5f/b2/c364417b2b3a2a77140bc3f76a19", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/24/8b/003c2cf32712cf4b31614afc4e19", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/4b/0f/3935287e71cc6a0a329707f157b0", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/e9/90/66b477c087a7a5e123182ec4bbfa", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/34/d4/30dcd4b7cc36e00a0b24b4a4e638", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/f2/f1/89d36ee327de1da930edf5f6ba41", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/9d/e0/f1d9a6b64086c97314a07d612747", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/85/7f/f547e472c4fde1ed8488a926e84c", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/63/b4/081ae5a491ae7734142c322efdb1", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/17/a1/f424cdb674b5320c032afbf671b1", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/c5/f3/a191439ea2f83d5ba2402d0aa85b", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/30/14/0ea9faf33057d6adbf544ada0680", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/48/24/b6ba4eaa4c87f35c1b55b7c2be42", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/f5/3c/db8f2bf671f379fb301bac0d4d59", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/0c/51/f7e6da10c24601b55e4076cc5053", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/2b/6f/347ff35f0b7deb20aaf4ef22dd39", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/5f/ad/a306b072ae102fb92193d88d4f4a", + "build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/08/f1/36613a6c3ca87c93b4fbbe0de451", + "build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/08/67/849330893eeb104e5a4dd44db54d", + "build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/d4/63/436f0f9b3c22d669bbd6262dee66", + "build/prefab/lib/linux_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/d5/44/3ed0e031bd6c69146992c205dc63", + "build/prefab/lib/linux_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/dd/33/acb639ccf6bde9a5f5d7dae26d6d", + "build/prefab/lib/linux_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/11/99/c4ef35cc03c49dea52754fcbf5ea", + "build/prefab/lib/linux_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/73/22/6a60aec57ed125d029a0142a6b51", + "build/prefab/lib/linux_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/55/7d/d1640e390c3c7c2ecf489e02b5d6", + "build/prefab/lib/mac_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/ba/ae/cc4da45850521ff4220d3d1bb4cf", + "build/prefab/lib/mac_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/f1/3b/30dd20fd1a7c5394297957e4788c", + "build/prefab/lib/mac_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/2f/be/a883f9521e792865a06fd8a1b851", + "build/prefab/lib/mac_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/fd/da/6ac5ed28aac4435cbce3c4cf812e", + "build/prefab/lib/mac_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/42/4c/3477fb7ec067e90334719f5e487c", + "build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/0d/da/cf2b3140c0c83b3e368623f1d705", + "build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/94/6c/3489c9df42324ad7f089d6271c4b", + "build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/a6/0b/3ae5a82111a12bb75cd62252c2cc", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/46/0c/c77944f3b0a4012542de15d3b349", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/1b/94/b10456205880528c350e5a1d0c80", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/e1/23/9b002389e809ca4771777cc6c336", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/4e/3a/e02dfde664b36ac2764828c847ca", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/64/6d/69559ece8d1e5b98e6b6c438e20b", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/29/f0/65577466c5028765c2e34dcb8c14", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/f6/7c/6f0d3d4c17849246b305718eabe3", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/0d/a7/dd1a7478fef846c6f17dcc1a2a1a", "src/assets/ba_data/python/babase/_mgen/__init__.py": "https://files.ballistica.net/cache/ba1/52/c6/c11130af7b10d6c0321add5518fa", "src/assets/ba_data/python/babase/_mgen/enums.py": "https://files.ballistica.net/cache/ba1/38/c3/1dedd5e74f2508efc5974c8815a1", - "src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/75/9f/bcf597b362c9f2480cb348188bdd", + "src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/fe/d2/3be7462aaff43bd651b5b5ac9d04", "src/ballistica/base/mgen/pyembed/binding_base_app.inc": "https://files.ballistica.net/cache/ba1/ba/0a/f528c175ef4cea9d50431cd768a8", "src/ballistica/classic/mgen/pyembed/binding_classic.inc": "https://files.ballistica.net/cache/ba1/b2/fd/f5c362e9093b2d0721fb59fc0056", "src/ballistica/core/mgen/pyembed/binding_core.inc": "https://files.ballistica.net/cache/ba1/09/2b/17a249d6cfcb9a3774413f6e9156", diff --git a/CHANGELOG.md b/CHANGELOG.md index 857425f9..12331440 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.20 (build 21081, api 8, 2023-06-08) +### 1.7.20 (build 21084, api 8, 2023-06-09) - This seems like a good time for a `refactoring` release in anticipation of changes coming in 1.8. Basically this means that a lot of things will be diff --git a/Makefile b/Makefile index 379472b0..f24ec816 100644 --- a/Makefile +++ b/Makefile @@ -156,6 +156,7 @@ dummymodules: prereqs meta rm -rf build/dummymodules \&\& ./tools/pcommand gen_dummy_modules dummymodules-clean: + rm -f $(LAZYBUILDDIR)/dummymodules rm -rf build/dummymodules # Generate docs. diff --git a/config/featuresets/featureset_classic.py b/config/featuresets/featureset_classic.py index a95027c8..1f4f34e9 100644 --- a/config/featuresets/featureset_classic.py +++ b/config/featuresets/featureset_classic.py @@ -14,8 +14,15 @@ fset = FeatureSet.get_active() fset.requirements = {'core', 'base', 'scene_v1', 'scene_v1_lib', 'ui_v1'} +# We can make use of plus stuff but can live without it. +fset.soft_requirements = {'plus'} + # We provide 'babase.app.classic'. fset.has_python_app_subsystem = True +# If 'plus' is present, our subsystem should be inited after it +# (classic accounts key off of plus's v2 accounts) +fset.python_app_subsystem_dependencies = {'plus'} + # We want things to work without us. fset.allow_as_soft_requirement = True diff --git a/config/featuresets/featureset_ui_v1.py b/config/featuresets/featureset_ui_v1.py index d53c7a13..ccf30eb7 100644 --- a/config/featuresets/featureset_ui_v1.py +++ b/config/featuresets/featureset_ui_v1.py @@ -14,5 +14,8 @@ fset = FeatureSet.get_active() fset.requirements = {'core', 'base'} +# We provide 'babase.app.ui_v1'. +fset.has_python_app_subsystem = True + # We'd prefer our name's title form to be 'UI V1', not the default 'Ui V1'. fset.name_title = 'UI V1' diff --git a/src/assets/.asset_manifest_public.json b/src/assets/.asset_manifest_public.json index 8cb58fba..88c8dedb 100644 --- a/src/assets/.asset_manifest_public.json +++ b/src/assets/.asset_manifest_public.json @@ -76,7 +76,6 @@ "ba_data/python/baclassic/__pycache__/_subsystem.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_tips.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_tournament.cpython-311.opt-1.pyc", - "ba_data/python/baclassic/__pycache__/_ui.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/macmusicapp.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/osmusic.cpython-311.opt-1.pyc", "ba_data/python/baclassic/_accountv1.py", @@ -93,7 +92,6 @@ "ba_data/python/baclassic/_subsystem.py", "ba_data/python/baclassic/_tips.py", "ba_data/python/baclassic/_tournament.py", - "ba_data/python/baclassic/_ui.py", "ba_data/python/baclassic/macmusicapp.py", "ba_data/python/baclassic/osmusic.py", "ba_data/python/bacommon/__init__.py", @@ -348,11 +346,13 @@ "ba_data/python/bauiv1/__init__.py", "ba_data/python/bauiv1/__pycache__/__init__.cpython-311.opt-1.pyc", "ba_data/python/bauiv1/__pycache__/_hooks.cpython-311.opt-1.pyc", + "ba_data/python/bauiv1/__pycache__/_subsystem.cpython-311.opt-1.pyc", + "ba_data/python/bauiv1/__pycache__/_uitypes.cpython-311.opt-1.pyc", "ba_data/python/bauiv1/__pycache__/onscreenkeyboard.cpython-311.opt-1.pyc", "ba_data/python/bauiv1/_hooks.py", + "ba_data/python/bauiv1/_subsystem.py", + "ba_data/python/bauiv1/_uitypes.py", "ba_data/python/bauiv1/onscreenkeyboard.py", - "ba_data/python/bauiv1/ui/__init__.py", - "ba_data/python/bauiv1/ui/__pycache__/__init__.cpython-311.opt-1.pyc", "ba_data/python/bauiv1lib/__init__.py", "ba_data/python/bauiv1lib/__pycache__/__init__.cpython-311.opt-1.pyc", "ba_data/python/bauiv1lib/__pycache__/achievements.cpython-311.opt-1.pyc", diff --git a/src/assets/Makefile b/src/assets/Makefile index 8b389157..8f2140ea 100644 --- a/src/assets/Makefile +++ b/src/assets/Makefile @@ -190,7 +190,6 @@ SCRIPT_TARGETS_PY_PUBLIC = \ $(BUILD_DIR)/ba_data/python/baclassic/_subsystem.py \ $(BUILD_DIR)/ba_data/python/baclassic/_tips.py \ $(BUILD_DIR)/ba_data/python/baclassic/_tournament.py \ - $(BUILD_DIR)/ba_data/python/baclassic/_ui.py \ $(BUILD_DIR)/ba_data/python/baclassic/macmusicapp.py \ $(BUILD_DIR)/ba_data/python/baclassic/osmusic.py \ $(BUILD_DIR)/ba_data/python/baenv.py \ @@ -311,8 +310,9 @@ SCRIPT_TARGETS_PY_PUBLIC = \ $(BUILD_DIR)/ba_data/python/batemplatefs/_subsystem.py \ $(BUILD_DIR)/ba_data/python/bauiv1/__init__.py \ $(BUILD_DIR)/ba_data/python/bauiv1/_hooks.py \ + $(BUILD_DIR)/ba_data/python/bauiv1/_subsystem.py \ + $(BUILD_DIR)/ba_data/python/bauiv1/_uitypes.py \ $(BUILD_DIR)/ba_data/python/bauiv1/onscreenkeyboard.py \ - $(BUILD_DIR)/ba_data/python/bauiv1/ui/__init__.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/__init__.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/account/__init__.py \ $(BUILD_DIR)/ba_data/python/bauiv1lib/account/link.py \ @@ -462,7 +462,6 @@ SCRIPT_TARGETS_PYC_PUBLIC = \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_subsystem.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_tips.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_tournament.cpython-311.opt-1.pyc \ - $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_ui.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/macmusicapp.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/osmusic.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/__pycache__/baenv.cpython-311.opt-1.pyc \ @@ -583,8 +582,9 @@ SCRIPT_TARGETS_PYC_PUBLIC = \ $(BUILD_DIR)/ba_data/python/batemplatefs/__pycache__/_subsystem.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/__init__.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/_hooks.cpython-311.opt-1.pyc \ + $(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/_subsystem.cpython-311.opt-1.pyc \ + $(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/_uitypes.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/onscreenkeyboard.cpython-311.opt-1.pyc \ - $(BUILD_DIR)/ba_data/python/bauiv1/ui/__pycache__/__init__.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/__pycache__/__init__.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/account/__pycache__/__init__.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bauiv1lib/account/__pycache__/link.cpython-311.opt-1.pyc \ diff --git a/src/assets/ba_data/python/babase/_accountv2.py b/src/assets/ba_data/python/babase/_accountv2.py index 575d710e..e0efc839 100644 --- a/src/assets/ba_data/python/babase/_accountv2.py +++ b/src/assets/ba_data/python/babase/_accountv2.py @@ -56,11 +56,11 @@ class AccountV2Subsystem: self.login_adapters[LoginType.GPGS] = LoginAdapterGPGS() - def on_app_launching(self) -> None: - """Should be called at standard on_app_launching time.""" + def on_app_loading(self) -> None: + """Should be called at standard on_app_loading time.""" for adapter in self.login_adapters.values(): - adapter.on_app_launching() + adapter.on_app_loading() def set_primary_credentials(self, credentials: str | None) -> None: """Set credentials for the primary app account.""" diff --git a/src/assets/ba_data/python/babase/_app.py b/src/assets/ba_data/python/babase/_app.py index 239a5611..e70a377a 100644 --- a/src/assets/ba_data/python/babase/_app.py +++ b/src/assets/ba_data/python/babase/_app.py @@ -34,6 +34,7 @@ if TYPE_CHECKING: from baclassic import ClassicSubsystem from baplus import PlusSubsystem + from bauiv1 import UIV1Subsystem # __FEATURESET_APP_SUBSYSTEM_IMPORTS_END__ @@ -241,6 +242,7 @@ class App: self._called_on_app_loading = False self._called_on_app_running = False self._app_paused = False + self._subsystem_registration_ended = False # Config. self.config_file_healthy = False @@ -306,10 +308,9 @@ class App: # reached the 'running' state. This ensures that all subsystems # receive a consistent set of callbacks starting with # on_app_running(). - if self._called_on_app_running: + if self._subsystem_registration_ended: raise RuntimeError( - 'Subsystems cannot be registered after the' - ' app has reached the running state.' + 'Subsystems can no longer be registered at this point.' ) self._subsystems.append(subsystem) @@ -361,6 +362,14 @@ class App: logging.exception('Error importing baplus.') return None + @cached_property + def ui_v1(self) -> UIV1Subsystem: + """Our ui_v1 subsystem (always available).""" + + from bauiv1 import UIV1Subsystem + + return UIV1Subsystem() + # __FEATURESET_APP_SUBSYSTEM_PROPERTIES_END__ def set_intent(self, intent: AppIntent) -> None: @@ -481,12 +490,12 @@ class App: # pylint: disable=cyclic-import from babase import _asyncio from babase import _appconfig - from babase._apputils import log_dumped_app_state, AppHealthMonitor - import babase._env + from babase._apputils import AppHealthMonitor + from babase import _env assert _babase.in_logic_thread() - babase._env.on_app_launching() + _env.on_app_launching() self._aioloop = _asyncio.setup_asyncio() self.health_monitor = AppHealthMonitor() @@ -504,34 +513,19 @@ class App: # to disk. _appconfig.commit_app_config(force=True) - # Get meta-system scanning built-in stuff in the bg. - self.meta.start_scan(scan_complete_cb=self.on_meta_scan_complete) + # __FEATURESET_APP_SUBSYSTEM_CREATE_BEGIN__ + # This section generated by batools.appmodule; do not edit. - if self.plus is not None: - self.plus.on_app_launching() + # Poke these attrs to create all our subsystems. + _ = self.plus + _ = self.classic + _ = self.ui_v1 - # Make sure this runs after we init our plus, since - # classic accounts here key off of our v2 ones in plus. - if self.classic is not None: - self.classic.on_app_launching() - - # If any traceback dumps happened last run, log and clear them. - log_dumped_app_state() + # __FEATURESET_APP_SUBSYSTEM_CREATE_END__ self._launch_completed = True self._update_state() - def on_meta_scan_complete(self) -> None: - """Called when meta-scan is done doing its thing.""" - assert _babase.in_logic_thread() - - # Now that we know what's out there, build our final plugin set. - self.plugins.on_meta_scan_complete() - - assert not self._meta_scan_completed - self._meta_scan_completed = True - self._update_state() - def on_app_loading(self) -> None: """Called when the app enters the loading state. @@ -541,14 +535,44 @@ class App: download workspaces, and otherwise prepare itself to really 'run'. """ + from babase._apputils import log_dumped_app_state + assert _babase.in_logic_thread() + # Get meta-system scanning built-in stuff in the bg. + self.meta.start_scan(scan_complete_cb=self.on_meta_scan_complete) + + # If any traceback dumps happened last run, log and clear them. + log_dumped_app_state() + + # Inform all app subsystems in the same order they were inited. + # Operate on a copy here because subsystems can still be added + # at this point. + for subsystem in self._subsystems.copy(): + try: + subsystem.on_app_loading() + except Exception: + logging.exception( + 'Error in on_app_loading for subsystem %s.', subsystem + ) + # Normally plus tells us when initial sign-in is done. If it's # not present, however, we just do that ourself so we can # proceed on to the running state. if self.plus is None: _babase.pushcall(self.on_initial_sign_in_completed) + def on_meta_scan_complete(self) -> None: + """Called when meta-scan is done doing its thing.""" + assert _babase.in_logic_thread() + + # Now that we know what's out there, build our final plugin set. + self.plugins.on_meta_scan_complete() + + assert not self._meta_scan_completed + self._meta_scan_completed = True + self._update_state() + def on_app_running(self) -> None: """Called when the app enters the running state. @@ -565,7 +589,9 @@ class App: self.mode_selector = self.DefaultAppModeSelector() # Inform all app subsystems in the same order they were inited. - for subsystem in self._subsystems: + # Operate on a copy here because subsystems can still be added + # at this point. + for subsystem in self._subsystems.copy(): try: subsystem.on_app_running() except Exception: @@ -573,6 +599,9 @@ class App: 'Error in on_app_running for subsystem %s.', subsystem ) + # Cut off new subsystem additions at this point. + self._subsystem_registration_ended = True + # If 'exec' code was provided to the app, always kick that off # here as an intent. exec_cmd = _babase.exec_arg() diff --git a/src/assets/ba_data/python/babase/_appsubsystem.py b/src/assets/ba_data/python/babase/_appsubsystem.py index 311bb2be..97f08b2b 100644 --- a/src/assets/ba_data/python/babase/_appsubsystem.py +++ b/src/assets/ba_data/python/babase/_appsubsystem.py @@ -21,13 +21,21 @@ class AppSubsystem: building one out of this base class provides some conveniences such as predefined callbacks during app state changes. - Subsystems must be registered with the app before it reaches the - 'running' state. + Subsystems must be registered with the app before it completes its + transition to the 'running' state. """ def __init__(self) -> None: _babase.app.register_subsystem(self) + def on_app_loading(self) -> None: + """Called when the app reaches the loading state. + + Note that subsystems created after the app switches to the + loading state will not receive this callback. Subsystems created + by plugins are an example of this. + """ + def on_app_running(self) -> None: """Called when the app reaches the running state.""" diff --git a/src/assets/ba_data/python/babase/_hooks.py b/src/assets/ba_data/python/babase/_hooks.py index 2062ecb7..68d8f028 100644 --- a/src/assets/ba_data/python/babase/_hooks.py +++ b/src/assets/ba_data/python/babase/_hooks.py @@ -235,13 +235,6 @@ def purchases_restored_message() -> None: ) -def dismiss_wii_remotes_window() -> None: - assert _babase.app.classic is not None - call = _babase.app.classic.ui.dismiss_wii_remotes_window_call - if call is not None: - call() - - def unavailable_message() -> None: from babase._language import Lstr diff --git a/src/assets/ba_data/python/babase/_login.py b/src/assets/ba_data/python/babase/_login.py index 1fd17bd3..850a8288 100644 --- a/src/assets/ba_data/python/babase/_login.py +++ b/src/assets/ba_data/python/babase/_login.py @@ -50,7 +50,7 @@ class LoginAdapter: self._implicit_login_state: LoginAdapter.ImplicitLoginState | None = ( None ) - self._on_app_launching_called = False + self._on_app_loading_called = False self._implicit_login_state_dirty = False self._back_end_active = False @@ -61,11 +61,11 @@ class LoginAdapter: self._last_sign_in_time: float | None = None self._last_sign_in_desc: str | None = None - def on_app_launching(self) -> None: - """Should be called for each adapter in on_app_launching.""" + def on_app_loading(self) -> None: + """Should be called for each adapter in on_app_loading.""" - assert not self._on_app_launching_called - self._on_app_launching_called = True + assert not self._on_app_loading_called + self._on_app_loading_called = True # Any implicit state we received up until now needs to be pushed # to the app account subsystem. @@ -297,7 +297,7 @@ class LoginAdapter: # sent along to the app. We wait until on-app-launch 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_launching_called: + if self._implicit_login_state_dirty and self._on_app_loading_called: from babase._general import Call if DEBUG_LOG: diff --git a/src/assets/ba_data/python/baclassic/_accountv1.py b/src/assets/ba_data/python/baclassic/_accountv1.py index ae28d30e..f618786b 100644 --- a/src/assets/ba_data/python/baclassic/_accountv1.py +++ b/src/assets/ba_data/python/baclassic/_accountv1.py @@ -35,7 +35,7 @@ class AccountV1Subsystem: # not be signed in yet; go ahead and queue them up in that case. self.pending_promo_codes: list[str] = [] - def on_app_launching(self) -> None: + def on_app_loading(self) -> None: """Called when the app is done bootstrapping.""" # Auto-sign-in to a local account in a moment if we're set to. diff --git a/src/assets/ba_data/python/baclassic/_appdelegate.py b/src/assets/ba_data/python/baclassic/_appdelegate.py index e8dcd67d..ab3fe0df 100644 --- a/src/assets/ba_data/python/baclassic/_appdelegate.py +++ b/src/assets/ba_data/python/baclassic/_appdelegate.py @@ -35,8 +35,8 @@ class AppDelegate: from bauiv1lib.playlist.editgame import PlaylistEditGameWindow assert _babase.app.classic is not None - _babase.app.classic.ui.clear_main_menu_window(transition='out_left') - _babase.app.classic.ui.set_main_menu_window( + _babase.app.ui_v1.clear_main_menu_window(transition='out_left') + _babase.app.ui_v1.set_main_menu_window( PlaylistEditGameWindow( gameclass, sessiontype, diff --git a/src/assets/ba_data/python/baclassic/_music.py b/src/assets/ba_data/python/baclassic/_music.py index 7059d6d0..6225e7b1 100644 --- a/src/assets/ba_data/python/baclassic/_music.py +++ b/src/assets/ba_data/python/baclassic/_music.py @@ -112,8 +112,8 @@ class MusicSubsystem: self._music_player_type = MacMusicAppMusicPlayer - def on_app_launching(self) -> None: - """Should be called by app on_app_launching().""" + def on_app_loading(self) -> None: + """Should be called by app on_app_loading().""" # If we're using a non-default playlist, lets go ahead and get our # music-player going since it may hitch (better while we're faded diff --git a/src/assets/ba_data/python/baclassic/_store.py b/src/assets/ba_data/python/baclassic/_store.py index 846d6ebd..38d48a81 100644 --- a/src/assets/ba_data/python/baclassic/_store.py +++ b/src/assets/ba_data/python/baclassic/_store.py @@ -65,7 +65,7 @@ class StoreSubsystem: 0.72 if ( _babase.app.config.get('Merch Link') - and _babase.app.classic.ui.uiscale is UIScale.SMALL + and _babase.app.ui_v1.uiscale is UIScale.SMALL ) else 0.85 ) diff --git a/src/assets/ba_data/python/baclassic/_subsystem.py b/src/assets/ba_data/python/baclassic/_subsystem.py index aa4855f3..50040931 100644 --- a/src/assets/ba_data/python/baclassic/_subsystem.py +++ b/src/assets/ba_data/python/baclassic/_subsystem.py @@ -4,7 +4,6 @@ from __future__ import annotations import random -import weakref import logging from typing import TYPE_CHECKING @@ -25,7 +24,6 @@ from baclassic._net import MasterServerResponseType, MasterServerV1CallThread from baclassic._achievement import AchievementSubsystem from baclassic._tips import get_all_tips from baclassic._store import StoreSubsystem -from baclassic._ui import UISubsystem from baclassic import _input if TYPE_CHECKING: @@ -69,7 +67,6 @@ class ClassicSubsystem(AppSubsystem): self.ach = AchievementSubsystem() self.store = StoreSubsystem() self.music = MusicSubsystem() - self.ui = UISubsystem() # Co-op Campaigns. self.campaigns: dict[str, bascenev1.Campaign] = {} @@ -122,7 +119,6 @@ class ClassicSubsystem(AppSubsystem): self.first_main_menu = True # FIXME: Move to mainmenu class. self.did_menu_intro = False # FIXME: Move to mainmenu class. self.main_menu_window_refresh_check_count = 0 # FIXME: Mv to mainmenu. - self.main_menu_resume_callbacks: list = [] # Can probably go away. self.invite_confirm_windows: list[Any] = [] # FIXME: Don't use Any. self.delegate: AppDelegate | None = None @@ -157,18 +153,7 @@ class ClassicSubsystem(AppSubsystem): assert isinstance(self._env['user_agent_string'], str) return self._env['user_agent_string'] - def add_main_menu_close_callback(self, call: Callable[[], Any]) -> None: - """(internal)""" - - # If there's no main menu up, just call immediately. - if not self.ui.has_main_menu_window(): - with _babase.ContextRef.empty(): - call() - else: - self.main_menu_resume_callbacks.append(call) - - def on_app_launching(self) -> None: - """Called when the app is first entering the launching state.""" + def on_app_loading(self) -> None: # pylint: disable=too-many-locals from bascenev1 import _campaign from bascenev1 import _map @@ -183,8 +168,7 @@ class ClassicSubsystem(AppSubsystem): cfg = _babase.app.config - self.ui.on_app_launching() - self.music.on_app_launching() + self.music.on_app_loading() self.delegate = AppDelegate() @@ -256,7 +240,7 @@ class ClassicSubsystem(AppSubsystem): # master-server and/or get rid of it. handle_leftover_v1_cloud_log_file() - self.accounts.on_app_launching() + self.accounts.on_app_loading() def on_app_pause(self) -> None: self.accounts.on_app_pause() @@ -398,7 +382,7 @@ class ClassicSubsystem(AppSubsystem): assert plus is not None if reset_ui: - self.ui.clear_main_menu_window() + _babase.app.ui_v1.clear_main_menu_window() if isinstance(bascenev1.get_foreground_host_session(), MainMenuSession): # It may be possible we're on the main menu but the screen is faded @@ -691,39 +675,6 @@ class ClassicSubsystem(AppSubsystem): origin_widget=_bauiv1.get_special_widget('tickets_info_button') ) - def party_icon_activate(self, origin: Sequence[float]) -> None: - """(internal)""" - from bauiv1lib.party import PartyWindow - from babase import app - - assert not app.headless_mode - - _bauiv1.getsound('swish').play() - - # If it exists, dismiss it; otherwise make a new one. - if ( - self.ui.party_window is not None - and self.ui.party_window() is not None - ): - self.ui.party_window().close() - else: - self.ui.party_window = weakref.ref(PartyWindow(origin=origin)) - - def device_menu_press(self, device_id: int | None) -> None: - """(internal)""" - from bauiv1lib.mainmenu import MainMenuWindow - from bauiv1 import set_ui_input_device - - assert _babase.app is not None - in_main_menu = self.ui.has_main_menu_window() - if not in_main_menu: - set_ui_input_device(device_id) - - if not _babase.app.headless_mode: - _bauiv1.getsound('swish').play() - - self.ui.set_main_menu_window(MainMenuWindow().get_root_widget()) - def show_url_window(self, address: str) -> None: """(internal)""" from bauiv1lib.url import ShowURLWindow diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 476fb141..d1d62599 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -28,7 +28,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21081 +TARGET_BALLISTICA_BUILD = 21084 TARGET_BALLISTICA_VERSION = '1.7.20' _g_env_config: EnvConfig | None = None diff --git a/src/assets/ba_data/python/baplus/_subsystem.py b/src/assets/ba_data/python/baplus/_subsystem.py index 6eae6244..18d8f14d 100644 --- a/src/assets/ba_data/python/baplus/_subsystem.py +++ b/src/assets/ba_data/python/baplus/_subsystem.py @@ -33,10 +33,9 @@ class PlusSubsystem(AppSubsystem): accounts: AccountV2Subsystem cloud: CloudSubsystem - def on_app_launching(self) -> None: - """(internal)""" - _baplus.on_app_launching() - self.accounts.on_app_launching() + def on_app_loading(self) -> None: + _baplus.on_app_loading() + self.accounts.on_app_loading() @staticmethod def add_v1_account_transaction( diff --git a/src/assets/ba_data/python/bascenev1/_activitytypes.py b/src/assets/ba_data/python/bascenev1/_activitytypes.py index 3b54b043..743f10e3 100644 --- a/src/assets/ba_data/python/bascenev1/_activitytypes.py +++ b/src/assets/ba_data/python/bascenev1/_activitytypes.py @@ -188,7 +188,7 @@ class ScoreScreenActivity(Activity[EmptyPlayer, EmptyTeam]): # min-view-time show a 'press any button to continue..' # thing after a bit. assert _babase.app.classic is not None - if _babase.app.classic.ui.uiscale is UIScale.LARGE: + if _babase.app.ui_v1.uiscale is UIScale.LARGE: # FIXME: Need a better way to determine whether we've probably # got a keyboard. sval = _language.Lstr(resource='pressAnyKeyButtonText') diff --git a/src/assets/ba_data/python/bascenev1/_gameactivity.py b/src/assets/ba_data/python/bascenev1/_gameactivity.py index aa2c97b9..faea3fb1 100644 --- a/src/assets/ba_data/python/bascenev1/_gameactivity.py +++ b/src/assets/ba_data/python/bascenev1/_gameactivity.py @@ -460,7 +460,7 @@ class GameActivity(Activity[PlayerT, TeamT]): # Only attempt this if we're not currently paused # and there appears to be no UI. assert _babase.app.classic is not None - hmmw = _babase.app.classic.ui.has_main_menu_window() + hmmw = _babase.app.ui_v1.has_main_menu_window() if not gnode.paused and not hmmw: self._is_waiting_for_continue = True with _babase.ContextRef.empty(): diff --git a/src/assets/ba_data/python/bascenev1/_gameutils.py b/src/assets/ba_data/python/bascenev1/_gameutils.py index 212e83aa..995b1c59 100644 --- a/src/assets/ba_data/python/bascenev1/_gameutils.py +++ b/src/assets/ba_data/python/bascenev1/_gameutils.py @@ -189,7 +189,7 @@ def show_damage_count( # (connected clients may have differing configs so they won't # get the intended results). assert app.classic is not None - do_big = app.classic.ui.uiscale is UIScale.SMALL or app.vr_mode + do_big = app.ui_v1.uiscale is UIScale.SMALL or app.vr_mode txtnode = _bascenev1.newnode( 'text', attrs={ diff --git a/src/assets/ba_data/python/bascenev1/_hooks.py b/src/assets/ba_data/python/bascenev1/_hooks.py index 949a31fa..39546e7a 100644 --- a/src/assets/ba_data/python/bascenev1/_hooks.py +++ b/src/assets/ba_data/python/bascenev1/_hooks.py @@ -47,7 +47,7 @@ def filter_chat_message(msg: str, client_id: int) -> str | None: def local_chat_message(msg: str) -> None: assert _babase.app.classic is not None if ( - _babase.app.classic.ui.party_window is not None - and _babase.app.classic.ui.party_window() is not None + _babase.app.ui_v1.party_window is not None + and _babase.app.ui_v1.party_window() is not None ): - _babase.app.classic.ui.party_window().on_chat_message(msg) + _babase.app.ui_v1.party_window().on_chat_message(msg) diff --git a/src/assets/ba_data/python/bascenev1lib/activity/coopscore.py b/src/assets/ba_data/python/bascenev1lib/activity/coopscore.py index d9a36992..55808f64 100644 --- a/src/assets/ba_data/python/bascenev1lib/activity/coopscore.py +++ b/src/assets/ba_data/python/bascenev1lib/activity/coopscore.py @@ -341,7 +341,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]): # main menu up, so instead we add a callback for when the menu # closes; if we're still alive, we'll come up then. # If there's no main menu this gets called immediately. - bui.app.classic.add_main_menu_close_callback(bui.WeakCall(self.show_ui)) + bui.app.ui_v1.add_main_menu_close_callback(bui.WeakCall(self.show_ui)) def show_ui(self) -> None: """Show the UI for restarting, playing the next Level, etc.""" diff --git a/src/assets/ba_data/python/bascenev1lib/activity/multiteamvictory.py b/src/assets/ba_data/python/bascenev1lib/activity/multiteamvictory.py index 42e0e638..64493e77 100644 --- a/src/assets/ba_data/python/bascenev1lib/activity/multiteamvictory.py +++ b/src/assets/ba_data/python/bascenev1lib/activity/multiteamvictory.py @@ -41,7 +41,7 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity): else 'Teams Series Victory Screen' ) assert babase.app.classic is not None - if babase.app.classic.ui.uiscale is babase.UIScale.LARGE: + if babase.app.ui_v1.uiscale is babase.UIScale.LARGE: sval = babase.Lstr(resource='pressAnyKeyButtonPlayAgainText') else: sval = babase.Lstr(resource='pressAnyButtonPlayAgainText') diff --git a/src/assets/ba_data/python/bascenev1lib/game/runaround.py b/src/assets/ba_data/python/bascenev1lib/game/runaround.py index 356769d9..fb9d8dc5 100644 --- a/src/assets/ba_data/python/bascenev1lib/game/runaround.py +++ b/src/assets/ba_data/python/bascenev1lib/game/runaround.py @@ -453,7 +453,7 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): # Make sure to stay out of the way of menu/party buttons in the corner. assert bs.app.classic is not None - uiscale = bs.app.classic.ui.uiscale + uiscale = bs.app.ui_v1.uiscale l_offs = ( -80 if uiscale is bs.UIScale.SMALL diff --git a/src/assets/ba_data/python/bascenev1lib/mainmenu.py b/src/assets/ba_data/python/bascenev1lib/mainmenu.py index d1e74f63..a14709a9 100644 --- a/src/assets/ba_data/python/bascenev1lib/mainmenu.py +++ b/src/assets/ba_data/python/bascenev1lib/mainmenu.py @@ -67,7 +67,7 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): # FIXME: Need a node attr for vr-specific-scale. scale = ( 0.9 - if (app.classic.ui.uiscale is bs.UIScale.SMALL or vr_mode) + if (app.ui_v1.uiscale is bs.UIScale.SMALL or vr_mode) else 0.7 ) self.my_name = bs.NodeActor( @@ -118,7 +118,7 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): # Any differences need to happen at the engine level so everyone sees # things in their own optimal way. vr_mode = app.vr_mode - uiscale = app.classic.ui.uiscale + uiscale = app.ui_v1.uiscale # In cases where we're doing lots of dev work lets always show the # build number. @@ -322,11 +322,11 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): assert bs.app.classic is not None if bool(False): - uicontroller = bs.app.classic.ui.controller + uicontroller = bs.app.ui_v1.controller assert uicontroller is not None uicontroller.show_main_menu() else: - main_menu_location = bs.app.classic.ui.get_main_menu_location() + main_menu_location = bs.app.ui_v1.get_main_menu_location() # When coming back from a kiosk-mode game, jump to # the kiosk start screen. @@ -334,7 +334,7 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): # pylint: disable=cyclic-import from bauiv1lib.kiosk import KioskWindow - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( KioskWindow().get_root_widget() ) # ..or in normal cases go back to the main menu @@ -343,14 +343,14 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): # pylint: disable=cyclic-import from bauiv1lib.gather import GatherWindow - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( GatherWindow(transition=None).get_root_widget() ) elif main_menu_location == 'Watch': # pylint: disable=cyclic-import from bauiv1lib.watch import WatchWindow - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( WatchWindow(transition=None).get_root_widget() ) elif main_menu_location == 'Team Game Select': @@ -359,7 +359,7 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): PlaylistBrowserWindow, ) - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( PlaylistBrowserWindow( sessiontype=bs.DualTeamSession, transition=None ).get_root_widget() @@ -370,7 +370,7 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): PlaylistBrowserWindow, ) - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( PlaylistBrowserWindow( sessiontype=bs.FreeForAllSession, transition=None, @@ -380,21 +380,21 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]): # pylint: disable=cyclic-import from bauiv1lib.coop.browser import CoopBrowserWindow - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( CoopBrowserWindow(transition=None).get_root_widget() ) elif main_menu_location == 'Benchmarks & Stress Tests': # pylint: disable=cyclic-import from bauiv1lib.debug import DebugWindow - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( DebugWindow(transition=None).get_root_widget() ) else: # pylint: disable=cyclic-import from bauiv1lib.mainmenu import MainMenuWindow - bs.app.classic.ui.set_main_menu_window( + bs.app.ui_v1.set_main_menu_window( MainMenuWindow(transition=None).get_root_widget() ) @@ -982,10 +982,7 @@ class NewsDisplay: assert bs.app.classic is not None scl = ( 1.2 - if ( - bs.app.classic.ui.uiscale is bs.UIScale.SMALL - or bs.app.vr_mode - ) + if (bs.app.ui_v1.uiscale is bs.UIScale.SMALL or bs.app.vr_mode) else 0.8 ) diff --git a/src/assets/ba_data/python/bauiv1/__init__.py b/src/assets/ba_data/python/bauiv1/__init__.py index be23bed7..c1bccc6e 100644 --- a/src/assets/ba_data/python/bauiv1/__init__.py +++ b/src/assets/ba_data/python/bauiv1/__init__.py @@ -82,7 +82,6 @@ from babase._mgen.enums import ( ) from babase._text import timestring - from _bauiv1 import ( uibounds, set_party_window_open, @@ -112,7 +111,8 @@ from _bauiv1 import ( Widget, widget, ) -from bauiv1.ui import Window, uicleanupcheck +from bauiv1._uitypes import Window, uicleanupcheck +from bauiv1._subsystem import UIV1Subsystem __all__ = [ @@ -209,6 +209,7 @@ __all__ = [ 'AppIntentDefault', 'AppIntentExec', 'AppMode', + 'UIV1Subsystem', ] # We want stuff to show up as bauiv1.Foo instead of bauiv1._sub.Foo. diff --git a/src/assets/ba_data/python/bauiv1/_hooks.py b/src/assets/ba_data/python/bauiv1/_hooks.py index 3e2dd533..c702b64d 100644 --- a/src/assets/ba_data/python/bauiv1/_hooks.py +++ b/src/assets/ba_data/python/bauiv1/_hooks.py @@ -51,11 +51,7 @@ def friends_button_press() -> None: def party_icon_activate(origin: Sequence[float]) -> None: from babase import app - if app.classic is None: - logging.exception('Classic not present.') - return - - app.classic.party_icon_activate(origin) + app.ui_v1.party_icon_activate(origin) def quit_window() -> None: @@ -71,11 +67,7 @@ def quit_window() -> None: def device_menu_press(device_id: int | None) -> None: from babase import app - if app.classic is None: - logging.exception('Classic not present.') - return - - app.classic.device_menu_press(device_id) + app.ui_v1.device_menu_press(device_id) def show_url_window(address: str) -> None: diff --git a/src/assets/ba_data/python/baclassic/_ui.py b/src/assets/ba_data/python/bauiv1/_subsystem.py similarity index 75% rename from src/assets/ba_data/python/baclassic/_ui.py rename to src/assets/ba_data/python/bauiv1/_subsystem.py index 7e0b8e88..4924e590 100644 --- a/src/assets/ba_data/python/baclassic/_ui.py +++ b/src/assets/ba_data/python/bauiv1/_subsystem.py @@ -5,19 +5,22 @@ from __future__ import annotations from typing import TYPE_CHECKING +import weakref -import bauiv1 as bui import _babase from babase._mgen.enums import UIScale +from babase._appsubsystem import AppSubsystem +import _bauiv1 +import bauiv1 if TYPE_CHECKING: - from typing import Any, Callable + from typing import Any, Callable, Sequence - from bauiv1.ui import UICleanupCheck, UIController + from bauiv1._uitypes import UICleanupCheck, UIController import babase -class UISubsystem: +class UIV1Subsystem(AppSubsystem): """Consolidated UI functionality for the app. Category: **App Classes** @@ -26,13 +29,17 @@ class UISubsystem: """ def __init__(self) -> None: + super().__init__() env = _babase.env() self.controller: UIController | None = None - self._main_menu_window: bui.Widget | None = None + self._main_menu_window: bauiv1.Widget | None = None self._main_menu_location: str | None = None + # From classic. + self.main_menu_resume_callbacks: list = [] # Can probably go away. + self._uiscale: babase.UIScale interfacetype = env['ui_scale'] @@ -49,7 +56,6 @@ class UISubsystem: self.main_menu_selection: str | None = None # FIXME: Kill this. self.have_party_queue_window = False self.quit_window: Any = None - self.dismiss_wii_remotes_window_call: (Callable[[], Any] | None) = None self.cleanupchecks: list[UICleanupCheck] = [] self.upkeeptimer: babase.AppTimer | None = None self.use_toolbars = env.get('toolbar_test', True) @@ -68,9 +74,8 @@ class UISubsystem: """Current ui scale for the app.""" return self._uiscale - def on_app_launching(self) -> None: - """Should be run on app launch.""" - from bauiv1.ui import UIController, ui_upkeep + def on_app_loading(self) -> None: + from bauiv1._uitypes import UIController, ui_upkeep # IMPORTANT: If tweaking UI stuff, make sure it behaves for small, # medium, and large UI modes. (doesn't run off screen, etc). @@ -104,7 +109,7 @@ class UISubsystem: # FIXME: Can probably kill this if we do immediate UI death checks. self.upkeeptimer = _babase.AppTimer(2.6543, ui_upkeep, repeat=True) - def set_main_menu_window(self, window: bui.Widget) -> None: + def set_main_menu_window(self, window: bauiv1.Widget) -> None: """Set the current 'main' window, replacing any existing.""" existing = self._main_menu_window from inspect import currentframe, getframeinfo @@ -145,19 +150,29 @@ class UISubsystem: ) existing.delete() - bui.apptimer(1.0, _delay_kill) + bauiv1.apptimer(1.0, _delay_kill) self._main_menu_window = window def clear_main_menu_window(self, transition: str | None = None) -> None: """Clear any existing 'main' window with the provided transition.""" if self._main_menu_window: if transition is not None: - bui.containerwidget( + bauiv1.containerwidget( edit=self._main_menu_window, transition=transition ) else: self._main_menu_window.delete() + def add_main_menu_close_callback(self, call: Callable[[], Any]) -> None: + """(internal)""" + + # If there's no main menu up, just call immediately. + if not self.has_main_menu_window(): + with _babase.ContextRef.empty(): + call() + else: + self.main_menu_resume_callbacks.append(call) + def has_main_menu_window(self) -> bool: """Return whether a main menu window is present.""" return bool(self._main_menu_window) @@ -169,3 +184,33 @@ class UISubsystem: def get_main_menu_location(self) -> str | None: """Return the current named main menu location, if any.""" return self._main_menu_location + + def party_icon_activate(self, origin: Sequence[float]) -> None: + """(internal)""" + from bauiv1lib.party import PartyWindow + from babase import app + + assert not app.headless_mode + + _bauiv1.getsound('swish').play() + + # If it exists, dismiss it; otherwise make a new one. + if self.party_window is not None and self.party_window() is not None: + self.party_window().close() + else: + self.party_window = weakref.ref(PartyWindow(origin=origin)) + + def device_menu_press(self, device_id: int | None) -> None: + """(internal)""" + from bauiv1lib.mainmenu import MainMenuWindow + from bauiv1 import set_ui_input_device + + assert _babase.app is not None + in_main_menu = self.has_main_menu_window() + if not in_main_menu: + set_ui_input_device(device_id) + + if not _babase.app.headless_mode: + _bauiv1.getsound('swish').play() + + self.set_main_menu_window(MainMenuWindow().get_root_widget()) diff --git a/src/assets/ba_data/python/bauiv1/ui/__init__.py b/src/assets/ba_data/python/bauiv1/_uitypes.py similarity index 98% rename from src/assets/ba_data/python/bauiv1/ui/__init__.py rename to src/assets/ba_data/python/bauiv1/_uitypes.py index 94a98a9b..2aafd3c4 100644 --- a/src/assets/ba_data/python/bauiv1/ui/__init__.py +++ b/src/assets/ba_data/python/bauiv1/_uitypes.py @@ -201,7 +201,7 @@ def uicleanupcheck(obj: Any, widget: bauiv1.Widget) -> None: widget.add_delete_callback(foobar) assert _babase.app.classic is not None - _babase.app.classic.ui.cleanupchecks.append( + _babase.app.ui_v1.cleanupchecks.append( UICleanupCheck( obj=weakref.ref(obj), widget=widget, widget_death_time=None ) @@ -211,7 +211,7 @@ def uicleanupcheck(obj: Any, widget: bauiv1.Widget) -> None: def ui_upkeep() -> None: """Run UI cleanup checks, etc. should be called periodically.""" assert _babase.app.classic is not None - ui = _babase.app.classic.ui + ui = _babase.app.ui_v1 remainingchecks = [] now = _babase.apptime() for check in ui.cleanupchecks: diff --git a/src/assets/ba_data/python/bauiv1/onscreenkeyboard.py b/src/assets/ba_data/python/bauiv1/onscreenkeyboard.py index db7f647f..9c614c7a 100644 --- a/src/assets/ba_data/python/bauiv1/onscreenkeyboard.py +++ b/src/assets/ba_data/python/bauiv1/onscreenkeyboard.py @@ -12,7 +12,7 @@ from typing import TYPE_CHECKING import babase from _babase import screenmessage import _bauiv1 -from bauiv1.ui import Window +from bauiv1._uitypes import Window if TYPE_CHECKING: import bauiv1 as bui @@ -26,7 +26,7 @@ class OnScreenKeyboardWindow(Window): self._width = 700 self._height = 400 assert babase.app.classic is not None - uiscale = babase.app.classic.ui.uiscale + uiscale = babase.app.ui_v1.uiscale top_extra = 20 if uiscale is babase.UIScale.SMALL else 0 super().__init__( root_widget=_bauiv1.containerwidget( @@ -71,7 +71,7 @@ class OnScreenKeyboardWindow(Window): scale=0.95, text=label, maxwidth=self._width - 140, - color=babase.app.classic.ui.title_color, + color=babase.app.ui_v1.title_color, h_align='center', v_align='center', ) diff --git a/src/assets/ba_data/python/bauiv1lib/account/link.py b/src/assets/ba_data/python/bauiv1lib/account/link.py index 517e26ef..3f1ceb77 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/link.py +++ b/src/assets/ba_data/python/bauiv1lib/account/link.py @@ -34,7 +34,7 @@ class AccountLinkWindow(bui.Window): self._width = 560 self._height = 420 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale base_scale = ( 1.65 if uiscale is bui.UIScale.SMALL @@ -77,7 +77,7 @@ class AccountLinkWindow(bui.Window): subs=[('${COUNT}', str(maxlinks))], ), maxwidth=self._width * 0.9, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, max_height=self._height * 0.6, h_align='center', v_align='center', @@ -150,7 +150,7 @@ class AccountLinkCodeWindow(bui.Window): self._width = 350 self._height = 200 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), diff --git a/src/assets/ba_data/python/bauiv1lib/account/settings.py b/src/assets/ba_data/python/bauiv1lib/account/settings.py index 649ca2a1..b0e56c1e 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/settings.py +++ b/src/assets/ba_data/python/bauiv1lib/account/settings.py @@ -73,7 +73,7 @@ class AccountSettingsWindow(bui.Window): app = bui.app assert app.classic is not None - uiscale = app.classic.ui.uiscale + uiscale = app.ui_v1.uiscale self._width = 760 if uiscale is bui.UIScale.SMALL else 660 x_offs = 50 if uiscale is bui.UIScale.SMALL else 0 @@ -124,7 +124,7 @@ class AccountSettingsWindow(bui.Window): else (0, 0), ) ) - if uiscale is bui.UIScale.SMALL and app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and app.ui_v1.use_toolbars: self._back_button = None bui.containerwidget( edit=self._root_widget, on_cancel_call=self._back @@ -157,7 +157,7 @@ class AccountSettingsWindow(bui.Window): position=(self._width * 0.5, self._height - 41), size=(0, 0), text=bui.Lstr(resource=self._r + '.titleText'), - color=app.classic.ui.title_color, + color=app.ui_v1.title_color, maxwidth=self._width - 340, h_align='center', v_align='center', @@ -419,7 +419,7 @@ class AccountSettingsWindow(bui.Window): size=(0, 0), text=txt, scale=0.9, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=self._sub_width * 0.9, h_align='center', v_align='center', @@ -563,7 +563,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -618,7 +618,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -687,7 +687,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -712,7 +712,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -735,7 +735,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -765,7 +765,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -818,7 +818,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -849,7 +849,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -927,7 +927,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -992,7 +992,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -1024,7 +1024,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -1094,7 +1094,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -1115,7 +1115,7 @@ class AccountSettingsWindow(bui.Window): ) if first_selectable is None: first_selectable = btn - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -1537,7 +1537,7 @@ class AccountSettingsWindow(bui.Window): if not self._modal: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) @@ -1551,14 +1551,14 @@ class AccountSettingsWindow(bui.Window): else: raise ValueError('unrecognized selection') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name except Exception: logging.exception('Error saving state for %s.', self) def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) if sel_name == 'Back': sel = self._back_button elif sel_name == 'Scroll': diff --git a/src/assets/ba_data/python/bauiv1lib/account/unlink.py b/src/assets/ba_data/python/bauiv1lib/account/unlink.py index 8a7dd418..aa1a9937 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/unlink.py +++ b/src/assets/ba_data/python/bauiv1lib/account/unlink.py @@ -35,7 +35,7 @@ class AccountUnlinkWindow(bui.Window): self._scroll_width = 400 self._scroll_height = 200 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale base_scale = ( 2.0 if uiscale is bui.UIScale.SMALL @@ -74,7 +74,7 @@ class AccountUnlinkWindow(bui.Window): resource='accountSettingsWindow.unlinkAccountsInstructionsText' ), maxwidth=self._width * 0.7, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, h_align='center', v_align='center', ) diff --git a/src/assets/ba_data/python/bauiv1lib/account/v2proxy.py b/src/assets/ba_data/python/bauiv1lib/account/v2proxy.py index 6cb56169..8f69dc32 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/v2proxy.py +++ b/src/assets/ba_data/python/bauiv1lib/account/v2proxy.py @@ -23,7 +23,7 @@ class V2ProxySignInWindow(bui.Window): self._proxykey: str | None = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -107,7 +107,7 @@ class V2ProxySignInWindow(bui.Window): text=bui.Lstr( resource='accountSettingsWindow.v2LinkInstructionsText' ), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=self._width * 0.9, h_align='center', v_align='center', diff --git a/src/assets/ba_data/python/bauiv1lib/account/viewer.py b/src/assets/ba_data/python/bauiv1lib/account/viewer.py index f0291f31..6c5c4800 100644 --- a/src/assets/ba_data/python/bauiv1lib/account/viewer.py +++ b/src/assets/ba_data/python/bauiv1lib/account/viewer.py @@ -36,7 +36,7 @@ class AccountViewerWindow(PopupWindow): self._account_id = account_id self._profile_id = profile_id - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 2.6 @@ -178,7 +178,7 @@ class AccountViewerWindow(PopupWindow): choices_display.append(bui.Lstr(resource='banThisPlayerText')) assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale PopupMenuWindow( position=self._extras_menu_button.get_screen_space_center(), scale=( @@ -344,7 +344,7 @@ class AccountViewerWindow(PopupWindow): h_align='center', v_align='center', scale=title_scale, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, text=account_title, maxwidth=sub_width * maxwidth_scale, ) @@ -376,7 +376,7 @@ class AccountViewerWindow(PopupWindow): h_align='center', v_align='center', scale=title_scale, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, text=bui.Lstr(resource='rankText'), maxwidth=sub_width * maxwidth_scale, ) @@ -532,7 +532,7 @@ class AccountViewerWindow(PopupWindow): h_align='center', v_align='center', scale=title_scale, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, text=bui.Lstr(resource='achievementsText'), maxwidth=sub_width * maxwidth_scale, ) @@ -566,7 +566,7 @@ class AccountViewerWindow(PopupWindow): h_align='center', v_align='center', scale=title_scale, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, flatness=1.0, text=bui.Lstr( resource='trophiesThisSeasonText', diff --git a/src/assets/ba_data/python/bauiv1lib/achievements.py b/src/assets/ba_data/python/bauiv1lib/achievements.py index 08f5fd0b..1c8cc673 100644 --- a/src/assets/ba_data/python/bauiv1lib/achievements.py +++ b/src/assets/ba_data/python/bauiv1lib/achievements.py @@ -16,7 +16,7 @@ class AchievementsWindow(PopupWindow): ): # pylint: disable=too-many-locals assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 2.3 diff --git a/src/assets/ba_data/python/bauiv1lib/appinvite.py b/src/assets/ba_data/python/bauiv1lib/appinvite.py index bce7c79d..06305e36 100644 --- a/src/assets/ba_data/python/bauiv1lib/appinvite.py +++ b/src/assets/ba_data/python/bauiv1lib/appinvite.py @@ -22,7 +22,7 @@ class ShowFriendCodeWindow(bui.Window): self._width = 650 self._height = 400 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -61,7 +61,7 @@ class ShowFriendCodeWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height * 0.8), size=(0, 0), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, scale=1.0, flatness=1.0, h_align='center', @@ -94,7 +94,7 @@ class ShowFriendCodeWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height * 0.37), size=(0, 0), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, scale=1.0, flatness=1.0, h_align='center', diff --git a/src/assets/ba_data/python/bauiv1lib/characterpicker.py b/src/assets/ba_data/python/bauiv1lib/characterpicker.py index fe9405cf..b4bdd635 100644 --- a/src/assets/ba_data/python/bauiv1lib/characterpicker.py +++ b/src/assets/ba_data/python/bauiv1lib/characterpicker.py @@ -34,7 +34,7 @@ class CharacterPicker(PopupWindow): assert bui.app.classic is not None del parent # unused here - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 1.85 diff --git a/src/assets/ba_data/python/bauiv1lib/colorpicker.py b/src/assets/ba_data/python/bauiv1lib/colorpicker.py index 67bff95f..904c9e33 100644 --- a/src/assets/ba_data/python/bauiv1lib/colorpicker.py +++ b/src/assets/ba_data/python/bauiv1lib/colorpicker.py @@ -36,7 +36,7 @@ class ColorPicker(PopupWindow): assert len(c_raw) == 16 self.colors = [c_raw[0:4], c_raw[4:8], c_raw[8:12], c_raw[12:16]] - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 2.3 @@ -198,7 +198,7 @@ class ColorPickerExact(PopupWindow): assert len(c_raw) == 16 self.colors = [c_raw[0:4], c_raw[4:8], c_raw[8:12], c_raw[12:16]] - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 2.3 diff --git a/src/assets/ba_data/python/bauiv1lib/confirm.py b/src/assets/ba_data/python/bauiv1lib/confirm.py index 82bccef0..cc67c010 100644 --- a/src/assets/ba_data/python/bauiv1lib/confirm.py +++ b/src/assets/ba_data/python/bauiv1lib/confirm.py @@ -52,7 +52,7 @@ class ConfirmWindow: transition = 'in_right' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self.root_widget = bui.containerwidget( size=(width, height), transition=transition, @@ -158,7 +158,7 @@ class QuitWindow: origin_widget: bui.Widget | None = None, ): assert bui.app.classic is not None - ui = bui.app.classic.ui + ui = bui.app.ui_v1 app = bui.app self._back = back diff --git a/src/assets/ba_data/python/bauiv1lib/continues.py b/src/assets/ba_data/python/bauiv1lib/continues.py index 7457e606..a3637d75 100644 --- a/src/assets/ba_data/python/bauiv1lib/continues.py +++ b/src/assets/ba_data/python/bauiv1lib/continues.py @@ -100,7 +100,7 @@ class ContinuesWindow(bui.Window): self._tickets_text_base: str | None self._tickets_text: bui.Widget | None - if not bui.app.classic.ui.use_toolbars: + if not bui.app.ui_v1.use_toolbars: self._tickets_text_base = bui.Lstr( resource='getTicketsWindow.youHaveShortText', fallback_resource='getTicketsWindow.youHaveText', diff --git a/src/assets/ba_data/python/bauiv1lib/coop/browser.py b/src/assets/ba_data/python/bauiv1lib/coop/browser.py index 1dfa0bd2..215af697 100644 --- a/src/assets/ba_data/python/bauiv1lib/coop/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/coop/browser.py @@ -84,7 +84,7 @@ class CoopBrowserWindow(bui.Window): self._campaign_percent_text: bui.Widget | None = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 1320 if uiscale is bui.UIScale.SMALL else 1120 self._x_inset = x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -94,7 +94,7 @@ class CoopBrowserWindow(bui.Window): if uiscale is bui.UIScale.MEDIUM else 800 ) - app.classic.ui.set_main_menu_location('Coop Select') + app.ui_v1.set_main_menu_location('Coop Select') self._r = 'coopSelectWindow' top_extra = 20 if uiscale is bui.UIScale.SMALL else 0 @@ -127,7 +127,7 @@ class CoopBrowserWindow(bui.Window): ) ) - if app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: self._back_button = None else: self._back_button = bui.buttonwidget( @@ -150,7 +150,7 @@ class CoopBrowserWindow(bui.Window): self._store_button_widget: bui.Widget | None self._league_rank_button_widget: bui.Widget | None - if not app.classic.ui.use_toolbars: + if not app.ui_v1.use_toolbars: prb = self._league_rank_button = LeagueRankButton( parent=self._root_widget, position=( @@ -232,13 +232,13 @@ class CoopBrowserWindow(bui.Window): fallback_resource='playModes.coopText', ), h_align='center', - color=app.classic.ui.title_color, + color=app.ui_v1.title_color, scale=1.5, maxwidth=500, v_align='center', ) - if app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: bui.textwidget(edit=txt, text='') if self._back_button is not None: @@ -261,7 +261,7 @@ class CoopBrowserWindow(bui.Window): self._scroll_width = self._width - (130 + 2 * x_inset) self._scroll_height = self._height - ( 190 - if uiscale is bui.UIScale.SMALL and app.classic.ui.use_toolbars + if uiscale is bui.UIScale.SMALL and app.ui_v1.use_toolbars else 160 ) @@ -272,7 +272,7 @@ class CoopBrowserWindow(bui.Window): parent=self._root_widget, highlight=False, position=(65 + x_inset, 120) - if uiscale is bui.UIScale.SMALL and app.classic.ui.use_toolbars + if uiscale is bui.UIScale.SMALL and app.ui_v1.use_toolbars else (65 + x_inset, 70), size=(self._scroll_width, self._scroll_height), simple_culling_v=10.0, @@ -322,7 +322,7 @@ class CoopBrowserWindow(bui.Window): def _update_corner_button_positions(self) -> None: assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale offs = ( -55 if uiscale is bui.UIScale.SMALL and bui.is_party_icon_visible() @@ -734,7 +734,7 @@ class CoopBrowserWindow(bui.Window): text='', h_align='left', v_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=1.1, ) @@ -784,7 +784,7 @@ class CoopBrowserWindow(bui.Window): text=txt, h_align='left', v_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=1.1, ) self._tournament_info_button = bui.buttonwidget( @@ -826,7 +826,7 @@ class CoopBrowserWindow(bui.Window): text=unavailable_text, h_align='left', v_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=0.9, ) v -= 40 @@ -890,7 +890,7 @@ class CoopBrowserWindow(bui.Window): ), h_align='left', v_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=1.1, ) @@ -1029,7 +1029,7 @@ class CoopBrowserWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_left') assert self._league_rank_button is not None assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( LeagueRankWindow( origin_widget=self._league_rank_button.get_button() ).get_root_widget() @@ -1053,7 +1053,7 @@ class CoopBrowserWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_left') assert self._store_button is not None assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( StoreBrowserWindow( origin_widget=self._store_button.get_button(), show_tab=show_tab, @@ -1224,7 +1224,7 @@ class CoopBrowserWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlayWindow(transition='in_left').get_root_widget() ) @@ -1243,9 +1243,7 @@ class CoopBrowserWindow(bui.Window): else: raise ValueError('unrecognized selection') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = { - 'sel_name': sel_name - } + bui.app.ui_v1.window_states[type(self)] = {'sel_name': sel_name} except Exception: logging.exception('Error saving state for %s.', self) @@ -1257,7 +1255,7 @@ class CoopBrowserWindow(bui.Window): def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self), {}).get( + sel_name = bui.app.ui_v1.window_states.get(type(self), {}).get( 'sel_name' ) if sel_name == 'Back': diff --git a/src/assets/ba_data/python/bauiv1lib/coop/level.py b/src/assets/ba_data/python/bauiv1lib/coop/level.py index 3c6148b0..b3e6d477 100644 --- a/src/assets/ba_data/python/bauiv1lib/coop/level.py +++ b/src/assets/ba_data/python/bauiv1lib/coop/level.py @@ -15,7 +15,7 @@ class CoopLevelLockedWindow(bui.Window): height = 250.0 lock_tex = bui.gettexture('lock') assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(width, height), @@ -53,7 +53,7 @@ class CoopLevelLockedWindow(bui.Window): subs=[('${LEVEL}', dep_name)], ), maxwidth=400, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, scale=0.8, ) bui.imagewidget( diff --git a/src/assets/ba_data/python/bauiv1lib/creditslist.py b/src/assets/ba_data/python/bauiv1lib/creditslist.py index 1a9d3236..869d410f 100644 --- a/src/assets/ba_data/python/bauiv1lib/creditslist.py +++ b/src/assets/ba_data/python/bauiv1lib/creditslist.py @@ -36,7 +36,7 @@ class CreditsListWindow(bui.Window): transition = 'in_right' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale width = 870 if uiscale is bui.UIScale.SMALL else 670 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 height = 398 if uiscale is bui.UIScale.SMALL else 500 @@ -61,7 +61,7 @@ class CreditsListWindow(bui.Window): ) ) - if bui.app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: bui.containerwidget( edit=self._root_widget, on_cancel_call=self._back ) @@ -101,7 +101,7 @@ class CreditsListWindow(bui.Window): subs=[('${APP_NAME}', bui.Lstr(resource='titleText'))], ), h_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=330, v_align='center', ) @@ -113,7 +113,7 @@ class CreditsListWindow(bui.Window): capture_arrows=True, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=scroll, right_widget=bui.get_special_widget('party_button'), @@ -360,6 +360,6 @@ class CreditsListWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/debug.py b/src/assets/ba_data/python/bauiv1lib/debug.py index 2c90827d..7cd5e5d2 100644 --- a/src/assets/ba_data/python/bauiv1lib/debug.py +++ b/src/assets/ba_data/python/bauiv1lib/debug.py @@ -19,8 +19,8 @@ class DebugWindow(bui.Window): from bauiv1lib import popup assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_location('Benchmarks & Stress Tests') - uiscale = bui.app.classic.ui.uiscale + bui.app.ui_v1.set_main_menu_location('Benchmarks & Stress Tests') + uiscale = bui.app.ui_v1.uiscale self._width = width = 580 self._height = height = ( 350 @@ -42,7 +42,7 @@ class DebugWindow(bui.Window): self._stress_test_round_duration = 30 self._r = 'debugWindow' - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(width, height), @@ -76,7 +76,7 @@ class DebugWindow(bui.Window): size=(width, 30), text=bui.Lstr(resource=self._r + '.titleText'), h_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, v_align='center', maxwidth=260, ) @@ -136,7 +136,7 @@ class DebugWindow(bui.Window): size=(0, 0), text=bui.Lstr(resource=self._r + '.stressTestTitleText'), maxwidth=200, - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, scale=0.85, h_align='center', v_align='center', @@ -150,7 +150,7 @@ class DebugWindow(bui.Window): size=(0, 0), text=bui.Lstr(resource=self._r + '.stressTestPlaylistTypeText'), maxwidth=130, - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, scale=0.65, h_align='right', v_align='center', @@ -180,7 +180,7 @@ class DebugWindow(bui.Window): size=(0, 0), text=bui.Lstr(resource=self._r + '.stressTestPlaylistNameText'), maxwidth=130, - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, scale=0.65, h_align='right', v_align='center', @@ -381,6 +381,6 @@ class DebugWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AdvancedSettingsWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/feedback.py b/src/assets/ba_data/python/bauiv1lib/feedback.py index e8ca493a..d3074aca 100644 --- a/src/assets/ba_data/python/bauiv1lib/feedback.py +++ b/src/assets/ba_data/python/bauiv1lib/feedback.py @@ -26,7 +26,7 @@ def ask_for_rating() -> bui.Widget | None: height = 400 spacing = 40 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale dlg = bui.containerwidget( size=(width, height), transition='in_right', @@ -51,7 +51,7 @@ def ask_for_rating() -> bui.Widget | None: parent=dlg, position=(15, v - 55), size=(width - 30, 30), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, text=bui.Lstr( resource='pleaseRateText', subs=[('${APP_NAME}', bui.Lstr(resource='titleText'))], diff --git a/src/assets/ba_data/python/bauiv1lib/fileselector.py b/src/assets/ba_data/python/bauiv1lib/fileselector.py index 5492b577..17263119 100644 --- a/src/assets/ba_data/python/bauiv1lib/fileselector.py +++ b/src/assets/ba_data/python/bauiv1lib/fileselector.py @@ -30,7 +30,7 @@ class FileSelectorWindow(bui.Window): if valid_file_extensions is None: valid_file_extensions = [] assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 700 if uiscale is bui.UIScale.SMALL else 600 self._x_inset = x_inset = 50 if uiscale is bui.UIScale.SMALL else 0 self._height = 365 if uiscale is bui.UIScale.SMALL else 418 @@ -68,7 +68,7 @@ class FileSelectorWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 42), size=(0, 0), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', text=bui.Lstr(resource=self._r + '.titleFolderText') @@ -121,7 +121,7 @@ class FileSelectorWindow(bui.Window): parent=self._root_widget, position=(self._folder_center, self._height - 98), size=(0, 0), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', text=self._path, diff --git a/src/assets/ba_data/python/bauiv1lib/gather/__init__.py b/src/assets/ba_data/python/bauiv1lib/gather/__init__.py index 04611e6e..3b5f02d6 100644 --- a/src/assets/ba_data/python/bauiv1lib/gather/__init__.py +++ b/src/assets/ba_data/python/bauiv1lib/gather/__init__.py @@ -91,9 +91,9 @@ class GatherWindow(bui.Window): self._transition_out = 'out_right' scale_origin = None assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_location('Gather') + bui.app.ui_v1.set_main_menu_location('Gather') bui.set_party_icon_always_visible(True) - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 1240 if uiscale is bui.UIScale.SMALL else 1040 x_offs = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -128,7 +128,7 @@ class GatherWindow(bui.Window): ) ) - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars: bui.containerwidget( edit=self._root_widget, on_cancel_call=self._back ) @@ -161,7 +161,7 @@ class GatherWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 42 + t_offs_y), size=(0, 0), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=( 1.5 if not condensed @@ -224,7 +224,7 @@ class GatherWindow(bui.Window): if tabtype is not None: self._tabs[tab_id] = tabtype(self) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=self._tab_row.tabs[tabdefs[-1][0]].button, right_widget=bui.get_special_widget('party_button'), @@ -273,8 +273,8 @@ class GatherWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.selecting_private_party_playlist = True - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.selecting_private_party_playlist = True + bui.app.ui_v1.set_main_menu_window( PlayWindow(origin_widget=origin_widget).get_root_widget() ) @@ -334,7 +334,7 @@ class GatherWindow(bui.Window): else: raise ValueError(f'unrecognized selection: \'{sel}\'') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = { + bui.app.ui_v1.window_states[type(self)] = { 'sel_name': sel_name, } except Exception: @@ -349,7 +349,7 @@ class GatherWindow(bui.Window): sel: bui.Widget | None assert bui.app.classic is not None - winstate = bui.app.classic.ui.window_states.get(type(self), {}) + winstate = bui.app.ui_v1.window_states.get(type(self), {}) sel_name = winstate.get('sel_name', None) assert isinstance(sel_name, (str, type(None))) current_tab = self.TabID.ABOUT @@ -388,6 +388,6 @@ class GatherWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py b/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py index cfb0ff4f..5d4714c9 100644 --- a/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py +++ b/src/assets/ba_data/python/bauiv1lib/gather/manualtab.py @@ -179,13 +179,11 @@ class ManualGatherTab(GatherTab): def save_state(self) -> None: assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = State( - sub_tab=self._sub_tab - ) + bui.app.ui_v1.window_states[type(self)] = State(sub_tab=self._sub_tab) def restore_state(self) -> None: assert bui.app.classic is not None - state = bui.app.classic.ui.window_states.get(type(self)) + state = bui.app.ui_v1.window_states.get(type(self)) if state is None: state = State() assert isinstance(state, State) @@ -342,7 +340,7 @@ class ManualGatherTab(GatherTab): v = c_height - 35 - 25 - 30 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 1240 if uiscale is bui.UIScale.SMALL else 1040 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -405,7 +403,7 @@ class ManualGatherTab(GatherTab): label=bui.Lstr(resource='gatherWindow.manualConnectText'), autoselect=True, ) - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars: bui.widget( edit=btn1, left_widget=bui.get_special_widget('back_button'), @@ -484,7 +482,7 @@ class ManualGatherTab(GatherTab): c_width = 600 c_height = 310 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._favorite_edit_window = cnt = bui.containerwidget( scale=( 1.8 diff --git a/src/assets/ba_data/python/bauiv1lib/gather/privatetab.py b/src/assets/ba_data/python/bauiv1lib/gather/privatetab.py index abc0a2d8..c96d7db9 100644 --- a/src/assets/ba_data/python/bauiv1lib/gather/privatetab.py +++ b/src/assets/ba_data/python/bauiv1lib/gather/privatetab.py @@ -539,7 +539,7 @@ class PrivateGatherTab(GatherTab): and hostingstate.party_code is None and hostingstate.tickets_to_host_now != 0 ): - if not bui.app.classic.ui.use_toolbars: + if not bui.app.ui_v1.use_toolbars: if bui.app.classic.allow_ticket_purchases: self._get_tickets_button = bui.buttonwidget( parent=self._container, @@ -615,12 +615,12 @@ class PrivateGatherTab(GatherTab): # If it appears we're coming back from playlist selection, # re-select our playlist button. - if bui.app.classic.ui.selecting_private_party_playlist: + if bui.app.ui_v1.selecting_private_party_playlist: bui.containerwidget( edit=self._container, selected_child=self._host_playlist_button, ) - bui.app.classic.ui.selecting_private_party_playlist = False + bui.app.ui_v1.selecting_private_party_playlist = False else: # We've got a current party; show its info. bui.textwidget( @@ -994,13 +994,11 @@ class PrivateGatherTab(GatherTab): def save_state(self) -> None: assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = copy.deepcopy( - self._state - ) + bui.app.ui_v1.window_states[type(self)] = copy.deepcopy(self._state) def restore_state(self) -> None: assert bui.app.classic is not None - state = bui.app.classic.ui.window_states.get(type(self)) + state = bui.app.ui_v1.window_states.get(type(self)) if state is None: state = State() assert isinstance(state, State) diff --git a/src/assets/ba_data/python/bauiv1lib/gather/publictab.py b/src/assets/ba_data/python/bauiv1lib/gather/publictab.py index e0072279..d8b1e2b1 100644 --- a/src/assets/ba_data/python/bauiv1lib/gather/publictab.py +++ b/src/assets/ba_data/python/bauiv1lib/gather/publictab.py @@ -481,7 +481,7 @@ class PublicGatherTab(GatherTab): # be enough to make things feel nice and crisp while we do a full # server re-query or whatnot. assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = State( + bui.app.ui_v1.window_states[type(self)] = State( sub_tab=self._sub_tab, parties=[(i, copy.copy(p)) for i, p in self._parties_sorted[:40]], next_entry_index=self._next_entry_index, @@ -492,7 +492,7 @@ class PublicGatherTab(GatherTab): def restore_state(self) -> None: assert bui.app.classic is not None - state = bui.app.classic.ui.window_states.get(type(self)) + state = bui.app.ui_v1.window_states.get(type(self)) if state is None: state = State() assert isinstance(state, State) @@ -695,7 +695,7 @@ class PublicGatherTab(GatherTab): v_align='center', maxwidth=200, scale=0.8, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, position=(210, v - 9), text=party_name_text, ) @@ -722,7 +722,7 @@ class PublicGatherTab(GatherTab): v_align='center', maxwidth=200, scale=0.8, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, position=(210, v - 9), text=bui.Lstr( resource='maxPartySizeText', diff --git a/src/assets/ba_data/python/bauiv1lib/getcurrency.py b/src/assets/ba_data/python/bauiv1lib/getcurrency.py index 40c18b0f..2127864b 100644 --- a/src/assets/ba_data/python/bauiv1lib/getcurrency.py +++ b/src/assets/ba_data/python/bauiv1lib/getcurrency.py @@ -52,7 +52,7 @@ class GetCurrencyWindow(bui.Window): scale_origin = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 1000.0 if uiscale is bui.UIScale.SMALL else 800.0 x_inset = 100.0 if uiscale is bui.UIScale.SMALL else 0.0 self._height = 480.0 @@ -99,7 +99,7 @@ class GetCurrencyWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 55), size=(0, 0), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=1.2, h_align='center', v_align='center', @@ -745,7 +745,7 @@ class GetCurrencyWindow(bui.Window): ).get_root_widget() if not self._from_modal_store: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window(window) + bui.app.ui_v1.set_main_menu_window(window) self._transitioning_out = True diff --git a/src/assets/ba_data/python/bauiv1lib/getremote.py b/src/assets/ba_data/python/bauiv1lib/getremote.py index 55cde251..194725f7 100644 --- a/src/assets/ba_data/python/bauiv1lib/getremote.py +++ b/src/assets/ba_data/python/bauiv1lib/getremote.py @@ -14,7 +14,7 @@ class GetBSRemoteWindow(PopupWindow): def __init__(self) -> None: position = (0.0, 0.0) assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale scale = ( 2.3 if uiscale is bui.UIScale.SMALL diff --git a/src/assets/ba_data/python/bauiv1lib/helpui.py b/src/assets/ba_data/python/bauiv1lib/helpui.py index 75ebe3f2..e9e57e69 100644 --- a/src/assets/ba_data/python/bauiv1lib/helpui.py +++ b/src/assets/ba_data/python/bauiv1lib/helpui.py @@ -35,7 +35,7 @@ class HelpWindow(bui.Window): self._main_menu = main_menu assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale width = 950 if uiscale is bui.UIScale.SMALL else 750 x_offs = 100 if uiscale is bui.UIScale.SMALL else 0 height = ( @@ -75,7 +75,7 @@ class HelpWindow(bui.Window): resource=self._r + '.titleText', subs=[('${APP_NAME}', bui.Lstr(resource='titleText'))], ), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='top', ) @@ -91,7 +91,7 @@ class HelpWindow(bui.Window): capture_arrows=True, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=self._scrollwidget, right_widget=bui.get_special_widget('party_button'), @@ -102,7 +102,7 @@ class HelpWindow(bui.Window): # ugly: create this last so it gets first dibs at touch events (since # we have it close to the scroll widget) - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars: bui.containerwidget( edit=self._root_widget, on_cancel_call=self._close ) @@ -706,6 +706,6 @@ class HelpWindow(bui.Window): ) if self._main_menu: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/iconpicker.py b/src/assets/ba_data/python/bauiv1lib/iconpicker.py index 7caf04be..e3cace22 100644 --- a/src/assets/ba_data/python/bauiv1lib/iconpicker.py +++ b/src/assets/ba_data/python/bauiv1lib/iconpicker.py @@ -33,7 +33,7 @@ class IconPicker(PopupWindow): del tint_color # unused_here del tint2_color # unused here assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 1.85 diff --git a/src/assets/ba_data/python/bauiv1lib/kiosk.py b/src/assets/ba_data/python/bauiv1lib/kiosk.py index 2ef77bac..335ea69d 100644 --- a/src/assets/ba_data/python/bauiv1lib/kiosk.py +++ b/src/assets/ba_data/python/bauiv1lib/kiosk.py @@ -355,7 +355,7 @@ class KioskWindow(bui.Window): def _restore_state(self) -> None: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) sel: bui.Widget | None if sel_name == 'b1': sel = self._b1 @@ -395,7 +395,7 @@ class KioskWindow(bui.Window): else: sel_name = 'b1' assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name def _update(self) -> None: plus = bui.app.plus @@ -506,6 +506,4 @@ class KioskWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') bui.app.classic.did_menu_intro = True # prevent delayed transition-in - bui.app.classic.ui.set_main_menu_window( - MainMenuWindow().get_root_widget() - ) + bui.app.ui_v1.set_main_menu_window(MainMenuWindow().get_root_widget()) diff --git a/src/assets/ba_data/python/bauiv1lib/league/rankbutton.py b/src/assets/ba_data/python/bauiv1lib/league/rankbutton.py index 58fd4731..d9528273 100644 --- a/src/assets/ba_data/python/bauiv1lib/league/rankbutton.py +++ b/src/assets/ba_data/python/bauiv1lib/league/rankbutton.py @@ -351,7 +351,7 @@ class LeagueRankButton: fallback_resource='coopSelectWindow.powerRankingText', ) assert bui.app.classic is not None - t_color = bui.app.classic.ui.title_color + t_color = bui.app.ui_v1.title_color bui.textwidget(edit=self._title_text, text=txt, color=t_color) bui.textwidget(edit=self._value_text, text=status_text) diff --git a/src/assets/ba_data/python/bauiv1lib/league/rankwindow.py b/src/assets/ba_data/python/bauiv1lib/league/rankwindow.py index 4314bf7c..d108cbb3 100644 --- a/src/assets/ba_data/python/bauiv1lib/league/rankwindow.py +++ b/src/assets/ba_data/python/bauiv1lib/league/rankwindow.py @@ -57,7 +57,7 @@ class LeagueRankWindow(bui.Window): scale_origin = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 1320 if uiscale is bui.UIScale.SMALL else 1120 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -119,7 +119,7 @@ class LeagueRankWindow(bui.Window): fallback_resource='coopSelectWindow.powerRankingText', ), h_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=1.4, maxwidth=600, v_align='center', @@ -1148,6 +1148,6 @@ class LeagueRankWindow(bui.Window): ) if not self._modal: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( CoopBrowserWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/mainmenu.py b/src/assets/ba_data/python/bauiv1lib/mainmenu.py index 61cc94d3..3f82c276 100644 --- a/src/assets/ba_data/python/bauiv1lib/mainmenu.py +++ b/src/assets/ba_data/python/bauiv1lib/mainmenu.py @@ -212,12 +212,9 @@ class MainMenuWindow(bui.Window): app = bui.app assert app.classic is not None - self._have_quit_button = ( - app.classic.ui.uiscale is bui.UIScale.LARGE - or ( - app.classic.platform == 'windows' - and app.classic.subplatform == 'oculus' - ) + self._have_quit_button = app.ui_v1.uiscale is bui.UIScale.LARGE or ( + app.classic.platform == 'windows' + and app.classic.subplatform == 'oculus' ) self._have_store_button = not self._in_game @@ -345,7 +342,7 @@ class MainMenuWindow(bui.Window): ) self._store_button = store_button = sbtn.get_button() assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale icon_size = ( 55 if uiscale is bui.UIScale.SMALL @@ -440,7 +437,7 @@ class MainMenuWindow(bui.Window): b_buffer = 10.0 t_scale = 0.75 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if uiscale is bui.UIScale.SMALL: b_size *= 0.6 b_buffer *= 1.0 @@ -574,7 +571,7 @@ class MainMenuWindow(bui.Window): b_count += 1 if self._have_store_button: b_count += 1 - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if uiscale is bui.UIScale.SMALL: root_widget_scale = 1.6 play_button_width = self._button_width * 0.65 @@ -646,7 +643,7 @@ class MainMenuWindow(bui.Window): ) else: self._demo_menu_button = None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale foof = ( -1 if uiscale is bui.UIScale.SMALL @@ -890,7 +887,7 @@ class MainMenuWindow(bui.Window): # In this case we have a leave *and* a disconnect button. self._height += 50 self._height += 50 * (len(custom_menu_entries)) - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale bui.containerwidget( edit=self._root_widget, size=(self._width, self._height), @@ -1053,7 +1050,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( KioskWindow(transition='in_left').get_root_widget() ) @@ -1064,7 +1061,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AccountSettingsWindow( origin_widget=self._account_button ).get_root_widget() @@ -1084,7 +1081,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( StoreBrowserWindow( origin_widget=self._store_button ).get_root_widget() @@ -1172,7 +1169,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( CreditsListWindow( origin_widget=self._credits_button ).get_root_widget() @@ -1185,7 +1182,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( HelpWindow( main_menu=True, origin_widget=self._how_to_play_button ).get_root_widget() @@ -1198,7 +1195,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AllSettingsWindow( origin_widget=self._settings_button ).get_root_widget() @@ -1220,7 +1217,7 @@ class MainMenuWindow(bui.Window): if self._in_game: return assert bui.app.classic is not None - ui = bui.app.classic.ui + ui = bui.app.ui_v1 sel = self._root_widget.get_selected_child() if sel == self._start_button: ui.main_menu_selection = 'Start' @@ -1253,7 +1250,7 @@ class MainMenuWindow(bui.Window): if self._in_game: return assert bui.app.classic is not None - sel_name = bui.app.classic.ui.main_menu_selection + sel_name = bui.app.ui_v1.main_menu_selection sel: bui.Widget | None if sel_name is None: sel_name = 'Start' @@ -1287,7 +1284,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( GatherWindow(origin_widget=self._gather_button).get_root_widget() ) @@ -1298,7 +1295,7 @@ class MainMenuWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( WatchWindow(origin_widget=self._watch_button).get_root_widget() ) @@ -1310,8 +1307,8 @@ class MainMenuWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.selecting_private_party_playlist = False - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.selecting_private_party_playlist = False + bui.app.ui_v1.set_main_menu_window( PlayWindow(origin_widget=self._start_button).get_root_widget() ) @@ -1320,9 +1317,9 @@ class MainMenuWindow(bui.Window): bui.app.classic.resume() if self._root_widget: bui.containerwidget(edit=self._root_widget, transition='out_right') - bui.app.classic.ui.clear_main_menu_window() + bui.app.ui_v1.clear_main_menu_window() # If there's callbacks waiting for this window to go away, call them. - for call in bui.app.classic.main_menu_resume_callbacks: + for call in bui.app.ui_v1.main_menu_resume_callbacks: call() - del bui.app.classic.main_menu_resume_callbacks[:] + del bui.app.ui_v1.main_menu_resume_callbacks[:] diff --git a/src/assets/ba_data/python/bauiv1lib/party.py b/src/assets/ba_data/python/bauiv1lib/party.py index e096a670..0a22cf4e 100644 --- a/src/assets/ba_data/python/bauiv1lib/party.py +++ b/src/assets/ba_data/python/bauiv1lib/party.py @@ -32,7 +32,7 @@ class PartyWindow(bui.Window): self._popup_party_member_is_host: bool | None = None self._width = 500 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._height = ( 365 if uiscale is bui.UIScale.SMALL @@ -219,7 +219,7 @@ class PartyWindow(bui.Window): def _on_menu_button_press(self) -> None: is_muted = bui.app.config.resolve('Chat Muted') assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale PopupMenuWindow( position=self._menu_button.get_screen_space_center(), scale=( @@ -472,7 +472,7 @@ class PartyWindow(bui.Window): return kick_str = bui.Lstr(resource='kickVoteText') assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale PopupMenuWindow( position=widget.get_screen_space_center(), scale=( diff --git a/src/assets/ba_data/python/bauiv1lib/partyqueue.py b/src/assets/ba_data/python/bauiv1lib/partyqueue.py index ac89d80f..f0f2e6ac 100644 --- a/src/assets/ba_data/python/bauiv1lib/partyqueue.py +++ b/src/assets/ba_data/python/bauiv1lib/partyqueue.py @@ -224,7 +224,7 @@ class PartyQueueWindow(bui.Window): def __init__(self, queue_id: str, address: str, port: int): assert bui.app.classic is not None - bui.app.classic.ui.have_party_queue_window = True + bui.app.ui_v1.have_party_queue_window = True self._address = address self._port = port self._queue_id = queue_id @@ -266,7 +266,7 @@ class PartyQueueWindow(bui.Window): self._line_image: bui.Widget | None = None self.eyes_mesh: bui.Mesh = bui.getmesh('plasticEyesTransparent') self._white_tex = bui.gettexture('white') - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -333,7 +333,7 @@ class PartyQueueWindow(bui.Window): assert plus is not None assert bui.app.classic is not None - bui.app.classic.ui.have_party_queue_window = False + bui.app.ui_v1.have_party_queue_window = False plus.add_v1_account_transaction( {'type': 'PARTY_QUEUE_REMOVE', 'q': self._queue_id} ) diff --git a/src/assets/ba_data/python/bauiv1lib/play.py b/src/assets/ba_data/python/bauiv1lib/play.py index 0a8043b6..27d5bca5 100644 --- a/src/assets/ba_data/python/bauiv1lib/play.py +++ b/src/assets/ba_data/python/bauiv1lib/play.py @@ -29,11 +29,9 @@ class PlayWindow(bui.Window): # We can currently be used either for main menu duty or for selecting # playlists (should make this more elegant/general). assert bui.app.classic is not None - self._is_main_menu = ( - not bui.app.classic.ui.selecting_private_party_playlist - ) + self._is_main_menu = not bui.app.ui_v1.selecting_private_party_playlist - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale width = 1000 if uiscale is bui.UIScale.SMALL else 800 x_offs = 100 if uiscale is bui.UIScale.SMALL else 0 height = 550 @@ -92,7 +90,7 @@ class PlayWindow(bui.Window): scale=1.7, res_scale=2.0, maxwidth=400, - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, h_align='center', v_align='center', ) @@ -103,7 +101,7 @@ class PlayWindow(bui.Window): size=(60, 60), label=bui.charstr(bui.SpecialChar.BACK), ) - if bui.app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: bui.textwidget(edit=txt, text='') v = height - (110 if self._is_main_menu else 90) @@ -112,7 +110,7 @@ class PlayWindow(bui.Window): v -= 280 if self._is_main_menu else 180 v += ( 30 - if bui.app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL + if bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL else 0 ) hoffs = x_offs + 80 if self._is_main_menu else x_offs - 100 @@ -155,7 +153,7 @@ class PlayWindow(bui.Window): on_activate_call=self._coop, ) - if bui.app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: bui.widget( edit=btn, left_widget=bui.get_special_widget('back_button'), @@ -258,7 +256,7 @@ class PlayWindow(bui.Window): on_activate_call=self._team_tourney, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, up_widget=bui.get_special_widget('tickets_plus_button'), @@ -491,7 +489,7 @@ class PlayWindow(bui.Window): color=clr, ) - if bui.app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: back_button.delete() bui.containerwidget( edit=self._root_widget, @@ -528,7 +526,7 @@ class PlayWindow(bui.Window): self._save_state() assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) bui.containerwidget( @@ -539,7 +537,7 @@ class PlayWindow(bui.Window): self._save_state() assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( GatherWindow(transition='in_left').get_root_widget() ) bui.containerwidget( @@ -560,7 +558,7 @@ class PlayWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( CoopBrowserWindow(origin_widget=self._coop_button).get_root_widget() ) @@ -571,7 +569,7 @@ class PlayWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistBrowserWindow( origin_widget=self._teams_button, sessiontype=bs.DualTeamSession ).get_root_widget() @@ -584,7 +582,7 @@ class PlayWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistBrowserWindow( origin_widget=self._free_for_all_button, sessiontype=bs.FreeForAllSession, @@ -723,14 +721,14 @@ class PlayWindow(bui.Window): else: raise ValueError(f'unrecognized selection {sel}') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name except Exception: logging.exception('Error saving state for %s.', self) def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) if sel_name == 'Team Games': sel = self._teams_button elif sel_name == 'Co-op Games' and self._coop_button is not None: diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/addgame.py b/src/assets/ba_data/python/bauiv1lib/playlist/addgame.py index 71c889e2..47450726 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/addgame.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/addgame.py @@ -24,7 +24,7 @@ class PlaylistAddGameWindow(bui.Window): self._editcontroller = editcontroller self._r = 'addGameWindow' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 750 if uiscale is bui.UIScale.SMALL else 650 x_inset = 50 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -74,7 +74,7 @@ class PlaylistAddGameWindow(bui.Window): on_activate_call=self._add, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=select_button, right_widget=bui.get_special_widget('party_button'), @@ -87,7 +87,7 @@ class PlaylistAddGameWindow(bui.Window): scale=1.0, text=bui.Lstr(resource=self._r + '.titleText'), h_align='center', - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=250, v_align='center', ) diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/browser.py b/src/assets/ba_data/python/bauiv1lib/playlist/browser.py index 0a82b5b2..819aa91c 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/browser.py @@ -39,12 +39,10 @@ class PlaylistBrowserWindow(bui.Window): # Store state for when we exit the next game. if issubclass(sessiontype, bs.DualTeamSession): - bui.app.classic.ui.set_main_menu_location('Team Game Select') + bui.app.ui_v1.set_main_menu_location('Team Game Select') bui.set_analytics_screen('Teams Window') elif issubclass(sessiontype, bs.FreeForAllSession): - bui.app.classic.ui.set_main_menu_location( - 'Free-for-All Game Select' - ) + bui.app.ui_v1.set_main_menu_location('Free-for-All Game Select') bui.set_analytics_screen('FreeForAll Window') else: raise TypeError(f'Invalid sessiontype: {sessiontype}.') @@ -63,7 +61,7 @@ class PlaylistBrowserWindow(bui.Window): self._pvars.config_name + ' Playlist Selection' ) - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 900.0 if uiscale is bui.UIScale.SMALL else 800.0 x_inset = 50 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -115,11 +113,11 @@ class PlaylistBrowserWindow(bui.Window): text=self._pvars.window_title_name, scale=1.3, res_scale=1.5, - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, h_align='center', v_align='center', ) - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars: bui.textwidget(edit=txt, text='') bui.buttonwidget( @@ -130,7 +128,7 @@ class PlaylistBrowserWindow(bui.Window): label=bui.charstr(bui.SpecialChar.BACK), ) - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars: self._back_button.delete() self._back_button = None bui.containerwidget( @@ -142,7 +140,7 @@ class PlaylistBrowserWindow(bui.Window): self._scroll_width = self._width - (100 + 2 * x_inset) self._scroll_height = self._height - ( 146 - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars else 136 ) self._scrollwidget = bui.scrollwidget( @@ -387,7 +385,7 @@ class PlaylistBrowserWindow(bui.Window): size=(0, 0), scale=1.0, maxwidth=400, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='left', v_align='center', ) @@ -402,7 +400,7 @@ class PlaylistBrowserWindow(bui.Window): h_offs = 225 if count == 1 else 115 if count == 2 else 0 h_offs_bottom = 0 - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale for y in range(rows): for x in range(columns): name = items[index][0] @@ -427,7 +425,7 @@ class PlaylistBrowserWindow(bui.Window): if ( x == 0 - and bui.app.classic.ui.use_toolbars + and bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL ): bui.widget( @@ -436,7 +434,7 @@ class PlaylistBrowserWindow(bui.Window): ) if ( x == columns - 1 - and bui.app.classic.ui.use_toolbars + and bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL ): bui.widget( @@ -690,7 +688,7 @@ class PlaylistBrowserWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistCustomizeBrowserWindow( origin_widget=self._customize_button, sessiontype=self._sessiontype, @@ -718,7 +716,7 @@ class PlaylistBrowserWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlayWindow(transition='in_left').get_root_widget() ) @@ -737,14 +735,14 @@ class PlaylistBrowserWindow(bui.Window): else: raise RuntimeError('Unrecognized selected widget.') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name except Exception: logging.exception('Error saving state for %s.', self) def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) if sel_name == 'Back': sel = self._back_button elif sel_name == 'Scroll': diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/customizebrowser.py b/src/assets/ba_data/python/bauiv1lib/playlist/customizebrowser.py index fe9beb16..789e7f2e 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/customizebrowser.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/customizebrowser.py @@ -46,7 +46,7 @@ class PlaylistCustomizeBrowserWindow(bui.Window): self._max_playlists = 30 self._r = 'gameListWindow' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 750.0 if uiscale is bui.UIScale.SMALL else 650.0 x_inset = 50.0 if uiscale is bui.UIScale.SMALL else 0.0 self._height = ( @@ -95,7 +95,7 @@ class PlaylistCustomizeBrowserWindow(bui.Window): resource=self._r + '.titleText', subs=[('${TYPE}', self._pvars.window_title_name)], ), - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, maxwidth=290, h_align='center', v_align='center', @@ -286,7 +286,7 @@ class PlaylistCustomizeBrowserWindow(bui.Window): edit=scrollwidget, left_widget=new_button, right_widget=bui.get_special_widget('party_button') - if bui.app.classic.ui.use_toolbars + if bui.app.ui_v1.use_toolbars else None, ) @@ -334,7 +334,7 @@ class PlaylistCustomizeBrowserWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( browser.PlaylistBrowserWindow( transition='in_left', sessiontype=self._sessiontype ).get_root_widget() diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/edit.py b/src/assets/ba_data/python/bauiv1lib/playlist/edit.py index a8b3c715..1b971514 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/edit.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/edit.py @@ -30,7 +30,7 @@ class PlaylistEditWindow(bui.Window): prev_selection = self._editcontroller.get_edit_ui_selection() assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 770 if uiscale is bui.UIScale.SMALL else 670 x_inset = 50 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -78,7 +78,7 @@ class PlaylistEditWindow(bui.Window): text_scale=1.2, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -95,7 +95,7 @@ class PlaylistEditWindow(bui.Window): position=(-10, self._height - 50), size=(self._width, 25), text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=1.05, h_align='center', v_align='center', @@ -286,7 +286,7 @@ class PlaylistEditWindow(bui.Window): bui.getsound('powerdown01').play() bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistCustomizeBrowserWindow( transition='in_left', sessiontype=self._editcontroller.get_session_type(), @@ -375,7 +375,7 @@ class PlaylistEditWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_right') bui.getsound('gunCocking').play() assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistCustomizeBrowserWindow( transition='in_left', sessiontype=self._editcontroller.get_session_type(), diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/editcontroller.py b/src/assets/ba_data/python/bauiv1lib/playlist/editcontroller.py index c145df0c..6ccb401d 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/editcontroller.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/editcontroller.py @@ -89,7 +89,7 @@ class PlaylistEditController: self._edit_ui_selection = 'add_button' assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistEditWindow( editcontroller=self, transition=transition ).get_root_widget() @@ -148,8 +148,8 @@ class PlaylistEditController: from bauiv1lib.playlist.addgame import PlaylistAddGameWindow assert bui.app.classic is not None - bui.app.classic.ui.clear_main_menu_window(transition='out_left') - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.clear_main_menu_window(transition='out_left') + bui.app.ui_v1.set_main_menu_window( PlaylistAddGameWindow(editcontroller=self).get_root_widget() ) @@ -171,8 +171,8 @@ class PlaylistEditController: from bauiv1lib.playlist.edit import PlaylistEditWindow assert bui.app.classic is not None - bui.app.classic.ui.clear_main_menu_window(transition='out_right') - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.clear_main_menu_window(transition='out_right') + bui.app.ui_v1.set_main_menu_window( PlaylistEditWindow( editcontroller=self, transition='in_left' ).get_root_widget() @@ -201,10 +201,8 @@ class PlaylistEditController: # If we were editing, go back to our list. if self._editing_game: bui.getsound('powerdown01').play() - bui.app.classic.ui.clear_main_menu_window( - transition='out_right' - ) - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.clear_main_menu_window(transition='out_right') + bui.app.ui_v1.set_main_menu_window( PlaylistEditWindow( editcontroller=self, transition='in_left' ).get_root_widget() @@ -212,10 +210,8 @@ class PlaylistEditController: # Otherwise we were adding; go back to the add type choice list. else: - bui.app.classic.ui.clear_main_menu_window( - transition='out_right' - ) - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.clear_main_menu_window(transition='out_right') + bui.app.ui_v1.set_main_menu_window( PlaylistAddGameWindow( editcontroller=self, transition='in_left' ).get_root_widget() @@ -236,8 +232,8 @@ class PlaylistEditController: self._selected_index = insert_index bui.getsound('gunCocking').play() - bui.app.classic.ui.clear_main_menu_window(transition='out_right') - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.clear_main_menu_window(transition='out_right') + bui.app.ui_v1.set_main_menu_window( PlaylistEditWindow( editcontroller=self, transition='in_left' ).get_root_widget() diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/editgame.py b/src/assets/ba_data/python/bauiv1lib/playlist/editgame.py index fabab810..3e50ceb2 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/editgame.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/editgame.py @@ -102,7 +102,7 @@ class PlaylistEditGameWindow(bui.Window): self._choice_selections: dict[str, int] = {} - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale width = 720 if uiscale is bui.UIScale.SMALL else 620 x_inset = 50 if uiscale is bui.UIScale.SMALL else 0 height = ( @@ -165,7 +165,7 @@ class PlaylistEditGameWindow(bui.Window): else bui.Lstr(resource='doneText'), ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: pbtn = bui.get_special_widget('party_button') bui.widget(edit=add_button, right_widget=pbtn, up_widget=pbtn) @@ -174,7 +174,7 @@ class PlaylistEditGameWindow(bui.Window): position=(-8, height - 70 + y_extra2), size=(width, 25), text=gametype.get_display_string(), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=235, scale=1.1, h_align='center', @@ -517,7 +517,7 @@ class PlaylistEditGameWindow(bui.Window): # Replace ourself with the map-select UI. bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistMapSelectWindow( self._gametype, self._sessiontype, diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/mapselect.py b/src/assets/ba_data/python/bauiv1lib/playlist/mapselect.py index 0291c50b..9061da2e 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/mapselect.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/mapselect.py @@ -43,7 +43,7 @@ class PlaylistMapSelectWindow(bui.Window): self._previous_map = '' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale width = 715 if uiscale is bui.UIScale.SMALL else 615 x_inset = 50 if uiscale is bui.UIScale.SMALL else 0 height = ( @@ -94,7 +94,7 @@ class PlaylistMapSelectWindow(bui.Window): resource='mapSelectTitleText', subs=[('${GAME}', self._gametype.get_display_string())], ), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', ) @@ -202,7 +202,7 @@ class PlaylistMapSelectWindow(bui.Window): bui.widget(edit=btn, left_widget=self._cancel_button) if y == 0: bui.widget(edit=btn, up_widget=self._cancel_button) - if x == columns - 1 and bui.app.classic.ui.use_toolbars: + if x == columns - 1 and bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -276,7 +276,7 @@ class PlaylistMapSelectWindow(bui.Window): self._config['settings']['map'] = map_name bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistEditGameWindow( self._gametype, self._sessiontype, @@ -298,7 +298,7 @@ class PlaylistMapSelectWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PlaylistEditGameWindow( self._gametype, self._sessiontype, diff --git a/src/assets/ba_data/python/bauiv1lib/playlist/share.py b/src/assets/ba_data/python/bauiv1lib/playlist/share.py index d50d9775..d52d1e7f 100644 --- a/src/assets/ba_data/python/bauiv1lib/playlist/share.py +++ b/src/assets/ba_data/python/bauiv1lib/playlist/share.py @@ -81,7 +81,7 @@ class SharePlaylistResultsWindow(bui.Window): self._width = 450 self._height = 300 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -119,7 +119,7 @@ class SharePlaylistResultsWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height * 0.745), size=(0, 0), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, scale=1.0, flatness=1.0, h_align='center', @@ -134,7 +134,7 @@ class SharePlaylistResultsWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height * 0.645), size=(0, 0), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, scale=0.6, flatness=1.0, h_align='center', diff --git a/src/assets/ba_data/python/bauiv1lib/playoptions.py b/src/assets/ba_data/python/bauiv1lib/playoptions.py index e13a70fe..769a0c10 100644 --- a/src/assets/ba_data/python/bauiv1lib/playoptions.py +++ b/src/assets/ba_data/python/bauiv1lib/playoptions.py @@ -40,9 +40,7 @@ class PlayOptionsWindow(PopupWindow): # We behave differently if we're being used for playlist selection # vs starting a game directly (should make this more elegant). assert bui.app.classic is not None - self._selecting_mode = ( - bui.app.classic.ui.selecting_private_party_playlist - ) + self._selecting_mode = bui.app.ui_v1.selecting_private_party_playlist self._do_randomize_val = bui.app.config.get( self._pvars.config_name + ' Playlist Randomize', 0 @@ -142,7 +140,7 @@ class PlayOptionsWindow(PopupWindow): self._height += 40 # Creates our _root_widget. - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale scale = ( 1.69 if uiscale is bui.UIScale.SMALL @@ -479,7 +477,7 @@ class PlayOptionsWindow(PopupWindow): cfg['Private Party Host Session Type'] = typename bui.getsound('gunCocking').play() assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( GatherWindow(transition='in_right').get_root_widget() ) self._transition_out(transition='out_left') diff --git a/src/assets/ba_data/python/bauiv1lib/popup.py b/src/assets/ba_data/python/bauiv1lib/popup.py index 6e6f1595..97a9fc2e 100644 --- a/src/assets/ba_data/python/bauiv1lib/popup.py +++ b/src/assets/ba_data/python/bauiv1lib/popup.py @@ -310,7 +310,7 @@ class PopupMenu: if choices_display is None: choices_display = [] assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 2.3 diff --git a/src/assets/ba_data/python/bauiv1lib/profile/browser.py b/src/assets/ba_data/python/bauiv1lib/profile/browser.py index 192369c1..2f438f7b 100644 --- a/src/assets/ba_data/python/bauiv1lib/profile/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/profile/browser.py @@ -32,7 +32,7 @@ class ProfileBrowserWindow(bui.Window): else: back_label = bui.Lstr(resource='doneText') assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 700.0 if uiscale is bui.UIScale.SMALL else 600.0 x_inset = 50.0 if uiscale is bui.UIScale.SMALL else 0.0 self._height = ( @@ -102,7 +102,7 @@ class ProfileBrowserWindow(bui.Window): size=(0, 0), text=bui.Lstr(resource=self._r + '.titleText'), maxwidth=300, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=0.9, h_align='center', v_align='center', @@ -176,7 +176,7 @@ class ProfileBrowserWindow(bui.Window): position=(self._width * 0.5, self._height - 71), size=(0, 0), text=bui.Lstr(resource=self._r + '.explanationText'), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, maxwidth=self._width * 0.83, scale=0.6, h_align='center', @@ -249,7 +249,7 @@ class ProfileBrowserWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( EditProfileWindow( existing_profile=None, in_main_menu=self._in_main_menu ).get_root_widget() @@ -310,7 +310,7 @@ class ProfileBrowserWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( EditProfileWindow( self._selected_profile, in_main_menu=self._in_main_menu ).get_root_widget() @@ -332,7 +332,7 @@ class ProfileBrowserWindow(bui.Window): ) if self._in_main_menu: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AccountSettingsWindow(transition='in_left').get_root_widget() ) @@ -434,14 +434,14 @@ class ProfileBrowserWindow(bui.Window): else: sel_name = 'Back' assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name except Exception: logging.exception('Error saving state for %s.', self) def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) if sel_name == 'Scroll': sel = self._scrollwidget elif sel_name == 'New': diff --git a/src/assets/ba_data/python/bauiv1lib/profile/edit.py b/src/assets/ba_data/python/bauiv1lib/profile/edit.py index ae6c9b8a..a61e137b 100644 --- a/src/assets/ba_data/python/bauiv1lib/profile/edit.py +++ b/src/assets/ba_data/python/bauiv1lib/profile/edit.py @@ -20,7 +20,7 @@ class EditProfileWindow(bui.Window): """Transitions out and recreates ourself.""" bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( EditProfileWindow( self.getname(), self._in_main_menu ).get_root_widget() @@ -53,7 +53,7 @@ class EditProfileWindow(bui.Window): self._color, self._highlight, ) = bui.app.classic.get_player_profile_colors(existing_profile) - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = width = 780.0 if uiscale is bui.UIScale.SMALL else 680.0 self._x_inset = x_inset = 50.0 if uiscale is bui.UIScale.SMALL else 0.0 self._height = height = ( @@ -112,7 +112,7 @@ class EditProfileWindow(bui.Window): if existing_profile is None else bui.Lstr(resource=self._r + '.titleEditText') ), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=290, scale=1.0, h_align='center', @@ -235,7 +235,7 @@ class EditProfileWindow(bui.Window): position=(self._width * 0.5, v - 39), size=(0, 0), scale=0.6, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, text=txtl, maxwidth=270, h_align='center', @@ -286,7 +286,7 @@ class EditProfileWindow(bui.Window): draw_controller=btn, text=bui.Lstr(resource=self._r + '.iconText'), scale=0.7, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=120, ) @@ -315,7 +315,7 @@ class EditProfileWindow(bui.Window): position=(self._width * 0.5, v - 39), size=(0, 0), scale=0.6, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, text=txtl, maxwidth=240, h_align='center', @@ -362,7 +362,7 @@ class EditProfileWindow(bui.Window): position=(self._width * 0.5, v - 43), size=(0, 0), scale=0.6, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, text=txtl, maxwidth=270, h_align='center', @@ -423,7 +423,7 @@ class EditProfileWindow(bui.Window): draw_controller=btn, text=bui.Lstr(resource=self._r + '.colorText'), scale=0.7, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=120, ) @@ -451,7 +451,7 @@ class EditProfileWindow(bui.Window): draw_controller=btn, text=bui.Lstr(resource=self._r + '.characterText'), scale=0.7, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=130, ) @@ -493,7 +493,7 @@ class EditProfileWindow(bui.Window): draw_controller=btn, text=bui.Lstr(resource=self._r + '.highlightText'), scale=0.7, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=120, ) self._update_character() @@ -655,7 +655,7 @@ class EditProfileWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ProfileBrowserWindow( 'in_left', selected_profile=self._existing_profile, @@ -801,7 +801,7 @@ class EditProfileWindow(bui.Window): plus.run_v1_account_transactions() bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ProfileBrowserWindow( 'in_left', selected_profile=new_name, diff --git a/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py b/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py index b1fccd3c..61fe52ae 100644 --- a/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py +++ b/src/assets/ba_data/python/bauiv1lib/profile/upgrade.py @@ -35,7 +35,7 @@ class ProfileUpgradeWindow(bui.Window): self._width = 680 self._height = 350 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._base_scale = ( 2.05 if uiscale is bui.UIScale.SMALL @@ -90,7 +90,7 @@ class ProfileUpgradeWindow(bui.Window): position=(self._width * 0.5, self._height - 38), size=(0, 0), text=bui.Lstr(resource=self._r + '.upgradeToGlobalProfileText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=self._width * 0.45, scale=1.0, h_align='center', @@ -103,7 +103,7 @@ class ProfileUpgradeWindow(bui.Window): position=(self._width * 0.5, self._height - 100), size=(0, 0), text=bui.Lstr(resource=self._r + '.upgradeProfileInfoText'), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, maxwidth=self._width * 0.8, scale=0.7, h_align='center', @@ -138,7 +138,7 @@ class ProfileUpgradeWindow(bui.Window): ) self._tickets_text: bui.Widget | None - if not bui.app.classic.ui.use_toolbars: + if not bui.app.ui_v1.use_toolbars: self._tickets_text = bui.textwidget( parent=self._root_widget, position=(self._width * 0.9 - 5, self._height - 30), diff --git a/src/assets/ba_data/python/bauiv1lib/promocode.py b/src/assets/ba_data/python/bauiv1lib/promocode.py index 5e8b73ba..ae8d0549 100644 --- a/src/assets/ba_data/python/bauiv1lib/promocode.py +++ b/src/assets/ba_data/python/bauiv1lib/promocode.py @@ -32,7 +32,7 @@ class PromoCodeWindow(bui.Window): self._r = 'promoCodeWindow' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(width, height), @@ -113,7 +113,7 @@ class PromoCodeWindow(bui.Window): ) if not self._modal: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AdvancedSettingsWindow(transition='in_left').get_root_widget() ) @@ -132,7 +132,7 @@ class PromoCodeWindow(bui.Window): ) if not self._modal: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AdvancedSettingsWindow(transition='in_left').get_root_widget() ) plus.add_v1_account_transaction( diff --git a/src/assets/ba_data/python/bauiv1lib/purchase.py b/src/assets/ba_data/python/bauiv1lib/purchase.py index cc8edafe..1bb0a9a5 100644 --- a/src/assets/ba_data/python/bauiv1lib/purchase.py +++ b/src/assets/ba_data/python/bauiv1lib/purchase.py @@ -39,7 +39,7 @@ class PurchaseWindow(bui.Window): self._items = list(items) self._width = 580 self._height = 520 - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), diff --git a/src/assets/ba_data/python/bauiv1lib/qrcode.py b/src/assets/ba_data/python/bauiv1lib/qrcode.py index 91b97740..3d92eaf8 100644 --- a/src/assets/ba_data/python/bauiv1lib/qrcode.py +++ b/src/assets/ba_data/python/bauiv1lib/qrcode.py @@ -13,7 +13,7 @@ class QRCodeWindow(PopupWindow): def __init__(self, origin_widget: bui.Widget, qr_tex: bui.Texture): position = origin_widget.get_screen_space_center() assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale scale = ( 2.3 if uiscale is bui.UIScale.SMALL diff --git a/src/assets/ba_data/python/bauiv1lib/report.py b/src/assets/ba_data/python/bauiv1lib/report.py index a56dca19..1b00e116 100644 --- a/src/assets/ba_data/python/bauiv1lib/report.py +++ b/src/assets/ba_data/python/bauiv1lib/report.py @@ -19,7 +19,7 @@ class ReportPlayerWindow(bui.Window): overlay_stack = bui.get_special_widget('overlay_stack') assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), diff --git a/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py b/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py index 8d447390..c40b708d 100644 --- a/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py +++ b/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py @@ -13,7 +13,7 @@ class ResourceTypeInfoWindow(PopupWindow): def __init__(self, origin_widget: bui.Widget): assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale scale = ( 2.3 if uiscale is bui.UIScale.SMALL diff --git a/src/assets/ba_data/python/bauiv1lib/serverdialog.py b/src/assets/ba_data/python/bauiv1lib/serverdialog.py index 4c0c49dd..acd86938 100644 --- a/src/assets/ba_data/python/bauiv1lib/serverdialog.py +++ b/src/assets/ba_data/python/bauiv1lib/serverdialog.py @@ -43,7 +43,7 @@ class ServerDialogWindow(bui.Window): self._width = 500 self._height = 160 + min(200, txt_height) assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), diff --git a/src/assets/ba_data/python/bauiv1lib/settings/advanced.py b/src/assets/ba_data/python/bauiv1lib/settings/advanced.py index 1b3c96d3..b12e9217 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/advanced.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/advanced.py @@ -46,7 +46,7 @@ class AdvancedSettingsWindow(bui.Window): self._transition_out = 'out_right' scale_origin = None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 870.0 if uiscale is bui.UIScale.SMALL else 670.0 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -116,7 +116,7 @@ class AdvancedSettingsWindow(bui.Window): self._r = 'settingsWindowAdvanced' - if app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: bui.containerwidget( edit=self._root_widget, on_cancel_call=self._do_back ) @@ -141,7 +141,7 @@ class AdvancedSettingsWindow(bui.Window): position=(0, self._height - 52), size=(self._width, 25), text=bui.Lstr(resource=f'{self._r}.titleText'), - color=app.classic.ui.title_color, + color=app.ui_v1.title_color, h_align='center', v_align='top', ) @@ -307,7 +307,7 @@ class AdvancedSettingsWindow(bui.Window): text=bui.Lstr(resource=f'{self._r}.languageText'), maxwidth=150, scale=0.95, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='right', v_align='center', ) @@ -638,7 +638,7 @@ class AdvancedSettingsWindow(bui.Window): for child in self._subcontainer.get_children(): bui.widget(edit=child, show_buffer_bottom=30, show_buffer_top=20) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: pbtn = bui.get_special_widget('party_button') bui.widget(edit=self._scrollwidget, right_widget=pbtn) if self._back_button is None: @@ -669,7 +669,7 @@ class AdvancedSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( VRTestingWindow(transition='in_right').get_root_widget() ) @@ -689,7 +689,7 @@ class AdvancedSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( NetTestingWindow(transition='in_right').get_root_widget() ) @@ -711,7 +711,7 @@ class AdvancedSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PluginWindow(origin_widget=self._plugins_button).get_root_widget() ) @@ -729,7 +729,7 @@ class AdvancedSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PromoCodeWindow( origin_widget=self._promo_code_button ).get_root_widget() @@ -741,7 +741,7 @@ class AdvancedSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( DebugWindow(transition='in_right').get_root_widget() ) @@ -798,9 +798,7 @@ class AdvancedSettingsWindow(bui.Window): else: raise ValueError(f'unrecognized selection \'{sel}\'') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = { - 'sel_name': sel_name - } + bui.app.ui_v1.window_states[type(self)] = {'sel_name': sel_name} except Exception: logging.exception('Error saving state for %s.', self) @@ -809,7 +807,7 @@ class AdvancedSettingsWindow(bui.Window): # pylint: disable=too-many-branches try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self), {}).get( + sel_name = bui.app.ui_v1.window_states.get(type(self), {}).get( 'sel_name' ) if sel_name == 'Back': @@ -895,6 +893,6 @@ class AdvancedSettingsWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AllSettingsWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/allsettings.py b/src/assets/ba_data/python/bauiv1lib/settings/allsettings.py index 7077526c..42a8d8c2 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/allsettings.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/allsettings.py @@ -39,14 +39,14 @@ class AllSettingsWindow(bui.Window): self._transition_out = 'out_right' scale_origin = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale width = 900 if uiscale is bui.UIScale.SMALL else 580 x_inset = 75 if uiscale is bui.UIScale.SMALL else 0 height = 435 self._r = 'settingsWindow' top_extra = 20 if uiscale is bui.UIScale.SMALL else 0 - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(width, height + top_extra), @@ -66,7 +66,7 @@ class AllSettingsWindow(bui.Window): ) ) - if bui.app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: self._back_button = None bui.containerwidget( edit=self._root_widget, on_cancel_call=self._do_back @@ -90,7 +90,7 @@ class AllSettingsWindow(bui.Window): position=(0, height - 44), size=(width, 25), text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', maxwidth=130, @@ -141,7 +141,7 @@ class AllSettingsWindow(bui.Window): label='', on_activate_call=self._do_controllers, ) - if bui.app.classic.ui.use_toolbars and self._back_button is None: + if bui.app.ui_v1.use_toolbars and self._back_button is None: bbtn = bui.get_special_widget('back_button') bui.widget(edit=ctb, left_widget=bbtn) _b_title( @@ -165,7 +165,7 @@ class AllSettingsWindow(bui.Window): label='', on_activate_call=self._do_graphics, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: pbtn = bui.get_special_widget('party_button') bui.widget(edit=gfxb, up_widget=pbtn, right_widget=pbtn) _b_title(x_offs3, v, gfxb, bui.Lstr(resource=self._r + '.graphicsText')) @@ -240,7 +240,7 @@ class AllSettingsWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) @@ -251,7 +251,7 @@ class AllSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ControlsSettingsWindow( origin_widget=self._controllers_button ).get_root_widget() @@ -264,7 +264,7 @@ class AllSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( GraphicsSettingsWindow( origin_widget=self._graphics_button ).get_root_widget() @@ -277,7 +277,7 @@ class AllSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AudioSettingsWindow( origin_widget=self._audio_button ).get_root_widget() @@ -290,7 +290,7 @@ class AllSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AdvancedSettingsWindow( origin_widget=self._advanced_button ).get_root_widget() @@ -312,16 +312,14 @@ class AllSettingsWindow(bui.Window): else: raise ValueError(f'unrecognized selection \'{sel}\'') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = { - 'sel_name': sel_name - } + bui.app.ui_v1.window_states[type(self)] = {'sel_name': sel_name} except Exception: logging.exception('Error saving state for %s.', self) def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self), {}).get( + sel_name = bui.app.ui_v1.window_states.get(type(self), {}).get( 'sel_name' ) sel: bui.Widget | None diff --git a/src/assets/ba_data/python/bauiv1lib/settings/audio.py b/src/assets/ba_data/python/bauiv1lib/settings/audio.py index 0c3841ad..bfe71e40 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/audio.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/audio.py @@ -59,7 +59,7 @@ class AudioSettingsWindow(bui.Window): show_soundtracks = True height += spacing * 2.0 - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale base_scale = ( 2.05 if uiscale is bui.UIScale.SMALL @@ -100,7 +100,7 @@ class AudioSettingsWindow(bui.Window): position=(width * 0.5, height - 32), size=(0, 0), text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=180, h_align='center', v_align='center', @@ -123,7 +123,7 @@ class AudioSettingsWindow(bui.Window): maxval=1.0, increment=0.1, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=svne.plusbutton, right_widget=bui.get_special_widget('party_button'), @@ -251,7 +251,7 @@ class AudioSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( stb.SoundtrackBrowserWindow( origin_widget=self._soundtrack_button ).get_root_widget() @@ -266,7 +266,7 @@ class AudioSettingsWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( allsettings.AllSettingsWindow( transition='in_left' ).get_root_widget() @@ -292,14 +292,14 @@ class AudioSettingsWindow(bui.Window): else: raise ValueError(f'unrecognized selection \'{sel}\'') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name except Exception: logging.exception('Error saving state for %s.', self) def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) sel: bui.Widget | None if sel_name == 'SoundMinus': sel = self._sound_volume_numedit.minusbutton diff --git a/src/assets/ba_data/python/bauiv1lib/settings/controls.py b/src/assets/ba_data/python/bauiv1lib/settings/controls.py index 8fecc695..f23ecda6 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/controls.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/controls.py @@ -109,7 +109,7 @@ class ControlsSettingsWindow(bui.Window): height += spacing assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale smallscale = 1.7 if show_keyboard else 2.2 super().__init__( root_widget=bui.containerwidget( @@ -153,7 +153,7 @@ class ControlsSettingsWindow(bui.Window): position=(0, height - 49), size=(width, 25), text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='top', ) @@ -176,7 +176,7 @@ class ControlsSettingsWindow(bui.Window): label=bui.Lstr(resource=self._r + '.configureTouchText'), on_activate_call=self._do_touchscreen, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -200,7 +200,7 @@ class ControlsSettingsWindow(bui.Window): label=bui.Lstr(resource=self._r + '.configureControllersText'), on_activate_call=self._do_gamepads, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -229,7 +229,7 @@ class ControlsSettingsWindow(bui.Window): label=bui.Lstr(resource=self._r + '.configureKeyboardText'), on_activate_call=self._config_keyboard, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -264,7 +264,7 @@ class ControlsSettingsWindow(bui.Window): label=bui.Lstr(resource=self._r + '.configureMobileText'), on_activate_call=self._do_mobile_devices, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=btn, right_widget=bui.get_special_widget('party_button'), @@ -307,7 +307,7 @@ class ControlsSettingsWindow(bui.Window): scale=0.5, h_align='center', v_align='center', - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, maxwidth=width * 0.8, ) v -= spacing @@ -337,7 +337,7 @@ class ControlsSettingsWindow(bui.Window): scale=1.0, h_align='right', v_align='center', - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, maxwidth=180, ) bui.textwidget( @@ -348,7 +348,7 @@ class ControlsSettingsWindow(bui.Window): scale=0.5, h_align='center', v_align='center', - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, maxwidth=width * 0.8, ) v -= spacing * 1.5 @@ -366,7 +366,7 @@ class ControlsSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ConfigKeyboardWindow( bs.getinputdevice('Keyboard', '#1') ).get_root_widget() @@ -379,7 +379,7 @@ class ControlsSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ConfigKeyboardWindow( bs.getinputdevice('Keyboard', '#2') ).get_root_widget() @@ -392,7 +392,7 @@ class ControlsSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( RemoteAppSettingsWindow().get_root_widget() ) @@ -403,7 +403,7 @@ class ControlsSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( GamepadSelectWindow().get_root_widget() ) @@ -414,7 +414,7 @@ class ControlsSettingsWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( TouchscreenSettingsWindow().get_root_widget() ) @@ -433,11 +433,11 @@ class ControlsSettingsWindow(bui.Window): else: sel_name = 'Back' assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name def _restore_state(self) -> None: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) if sel_name == 'GamePads': sel = self._gamepads_button elif sel_name == 'Touch': @@ -467,6 +467,6 @@ class ControlsSettingsWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AllSettingsWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py b/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py index aecd4450..22a993ba 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/gamepad.py @@ -46,7 +46,7 @@ class GamepadSettingsWindow(bui.Window): self._height = 440 if self._is_secondary else 450 self._spacing = 40 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -206,7 +206,7 @@ class GamepadSettingsWindow(bui.Window): position=(0, v + 5), size=(self._width, 25), text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=310, h_align='center', v_align='center', @@ -218,7 +218,7 @@ class GamepadSettingsWindow(bui.Window): position=(0, v + 3), size=(self._width, 25), text=self._name, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, maxwidth=self._width * 0.9, h_align='center', v_align='center', @@ -245,7 +245,7 @@ class GamepadSettingsWindow(bui.Window): position=(0, v + 5), size=(self._width, 25), text=bui.Lstr(resource=self._r + '.secondaryText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=300, h_align='center', v_align='center', @@ -794,7 +794,7 @@ class GamepadSettingsWindow(bui.Window): ) if self._is_main_menu: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ControlsSettingsWindow(transition='in_left').get_root_widget() ) @@ -845,7 +845,7 @@ class GamepadSettingsWindow(bui.Window): from bauiv1lib.settings.controls import ControlsSettingsWindow assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ControlsSettingsWindow(transition='in_left').get_root_widget() ) @@ -871,7 +871,7 @@ class AwaitGamepadInputWindow(bui.Window): width = 400 height = 150 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( scale=( diff --git a/src/assets/ba_data/python/bauiv1lib/settings/gamepadadvanced.py b/src/assets/ba_data/python/bauiv1lib/settings/gamepadadvanced.py index 14412046..fae272ae 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/gamepadadvanced.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/gamepadadvanced.py @@ -28,7 +28,7 @@ class GamepadAdvancedSettingsWindow(bui.Window): self._r = parent_window.get_r() assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 900 if uiscale is bui.UIScale.SMALL else 700 self._x_inset = x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = 402 if uiscale is bui.UIScale.SMALL else 512 @@ -62,7 +62,7 @@ class GamepadAdvancedSettingsWindow(bui.Window): size=(0, 0), text=bui.Lstr(resource=self._r + '.advancedTitleText'), maxwidth=320, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', ) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/gamepadselect.py b/src/assets/ba_data/python/bauiv1lib/settings/gamepadselect.py index 817314ed..9534ec8d 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/gamepadselect.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/gamepadselect.py @@ -24,7 +24,7 @@ def gamepad_configure_callback(event: dict[str, Any]) -> None: bs.release_gamepad_input() assert bui.app.classic is not None try: - bui.app.classic.ui.clear_main_menu_window(transition='out_left') + bui.app.ui_v1.clear_main_menu_window(transition='out_left') except Exception: logging.exception('Error transitioning out main_menu_window.') bui.getsound('activateBeep').play() @@ -32,14 +32,14 @@ def gamepad_configure_callback(event: dict[str, Any]) -> None: inputdevice = event['input_device'] assert isinstance(inputdevice, bs.InputDevice) if inputdevice.allows_configuring: - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( gamepad.GamepadSettingsWindow(inputdevice).get_root_widget() ) else: width = 700 height = 200 button_width = 100 - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale dlg = bui.containerwidget( scale=( 1.7 @@ -51,7 +51,7 @@ def gamepad_configure_callback(event: dict[str, Any]) -> None: size=(width, height), transition='in_right', ) - bui.app.classic.ui.set_main_menu_window(dlg) + bui.app.ui_v1.set_main_menu_window(dlg) device_name = inputdevice.name if device_name == 'iDevice': msg = bui.Lstr( @@ -78,7 +78,7 @@ def gamepad_configure_callback(event: dict[str, Any]) -> None: bui.containerwidget(edit=dlg, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( controls.ControlsSettingsWindow( transition='in_left' ).get_root_widget() @@ -105,7 +105,7 @@ class GamepadSelectWindow(bui.Window): self._r = 'configGamepadSelectWindow' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( scale=( @@ -142,7 +142,7 @@ class GamepadSelectWindow(bui.Window): size=(width, 25), text=bui.Lstr(resource=self._r + '.titleText'), maxwidth=250, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', ) @@ -163,7 +163,7 @@ class GamepadSelectWindow(bui.Window): scale=0.8, text=bui.Lstr(resource=self._r + '.pressAnyButtonText'), maxwidth=width * 0.95, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, h_align='center', v_align='top', ) @@ -189,7 +189,7 @@ class GamepadSelectWindow(bui.Window): bs.release_gamepad_input() bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( controls.ControlsSettingsWindow( transition='in_left' ).get_root_widget() diff --git a/src/assets/ba_data/python/bauiv1lib/settings/graphics.py b/src/assets/ba_data/python/bauiv1lib/settings/graphics.py index 8971a2f7..06ea503b 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/graphics.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/graphics.py @@ -39,7 +39,7 @@ class GraphicsSettingsWindow(bui.Window): spacing = 32 self._have_selected_child = False - uiscale = app.classic.ui.uiscale + uiscale = app.ui_v1.uiscale width = 450.0 height = 302.0 @@ -68,7 +68,7 @@ class GraphicsSettingsWindow(bui.Window): ) assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale base_scale = ( 2.4 if uiscale is bui.UIScale.SMALL @@ -110,7 +110,7 @@ class GraphicsSettingsWindow(bui.Window): position=(0, height - 44), size=(width, 25), text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='top', ) @@ -161,7 +161,7 @@ class GraphicsSettingsWindow(bui.Window): xoffset=-70, textscale=0.85, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=gmc.plusbutton, right_widget=bui.get_special_widget('party_button'), @@ -182,7 +182,7 @@ class GraphicsSettingsWindow(bui.Window): position=(60, v), size=(160, 25), text=bui.Lstr(resource=self._r + '.visualsText'), - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, scale=0.65, maxwidth=150, h_align='center', @@ -214,7 +214,7 @@ class GraphicsSettingsWindow(bui.Window): position=(230, v), size=(160, 25), text=bui.Lstr(resource=self._r + '.texturesText'), - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, scale=0.65, maxwidth=150, h_align='center', @@ -235,7 +235,7 @@ class GraphicsSettingsWindow(bui.Window): current_choice=bui.app.config.resolve('Texture Quality'), on_value_change_call=self._set_textures, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: bui.widget( edit=textures_popup.get_button(), right_widget=bui.get_special_widget('party_button'), @@ -251,7 +251,7 @@ class GraphicsSettingsWindow(bui.Window): position=(h_offs + 60, v), size=(160, 25), text=bui.Lstr(resource=self._r + '.resolutionText'), - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, scale=0.65, maxwidth=150, h_align='center', @@ -366,7 +366,7 @@ class GraphicsSettingsWindow(bui.Window): position=(230, v), size=(160, 25), text=bui.Lstr(resource=self._r + '.verticalSyncText'), - color=bui.app.classic.ui.heading_color, + color=bui.app.ui_v1.heading_color, scale=0.65, maxwidth=150, h_align='center', @@ -433,7 +433,7 @@ class GraphicsSettingsWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( allsettings.AllSettingsWindow( transition='in_left' ).get_root_widget() diff --git a/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py b/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py index e81bac87..9835aebf 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/keyboard.py @@ -32,7 +32,7 @@ class ConfigKeyboardWindow(bui.Window): self._height = 375 self._spacing = 40 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -113,7 +113,7 @@ class ConfigKeyboardWindow(bui.Window): resource=self._r + '.configuringText', subs=[('${DEVICE}', self._displayname)], ), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', maxwidth=270, @@ -132,7 +132,7 @@ class ConfigKeyboardWindow(bui.Window): scale=0.7, maxwidth=self._width * 0.75, max_height=110, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, h_align='center', v_align='top', ) @@ -267,7 +267,7 @@ class ConfigKeyboardWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ControlsSettingsWindow(transition='in_left').get_root_widget() ) @@ -307,7 +307,7 @@ class ConfigKeyboardWindow(bui.Window): }, ) bui.app.config.apply_and_commit() - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( ControlsSettingsWindow(transition='in_left').get_root_widget() ) @@ -323,7 +323,7 @@ class AwaitKeyboardInputWindow(bui.Window): width = 400 height = 150 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(width, height), diff --git a/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py b/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py index c0884706..101d0f7c 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/nettesting.py @@ -30,7 +30,7 @@ class NetTestingWindow(bui.Window): self._height = 500 self._printed_lines: list[str] = [] assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -135,7 +135,7 @@ class NetTestingWindow(bui.Window): def _show_val_testing(self) -> None: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( NetValTestingWindow().get_root_widget() ) bui.containerwidget(edit=self._root_widget, transition='out_left') @@ -145,7 +145,7 @@ class NetTestingWindow(bui.Window): from bauiv1lib.settings.advanced import AdvancedSettingsWindow assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AdvancedSettingsWindow(transition='in_left').get_root_widget() ) bui.containerwidget(edit=self._root_widget, transition='out_right') diff --git a/src/assets/ba_data/python/bauiv1lib/settings/plugins.py b/src/assets/ba_data/python/bauiv1lib/settings/plugins.py index 2c8f153b..89707cc5 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/plugins.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/plugins.py @@ -35,7 +35,7 @@ class PluginWindow(bui.Window): scale_origin = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 870.0 if uiscale is bui.UIScale.SMALL else 670.0 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -71,7 +71,7 @@ class PluginWindow(bui.Window): self._sub_height = 724.0 assert app.classic is not None - if app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: bui.containerwidget( edit=self._root_widget, on_cancel_call=self._do_back ) @@ -96,7 +96,7 @@ class PluginWindow(bui.Window): position=(0, self._height - 52), size=(self._width, 25), text=bui.Lstr(resource='pluginsText'), - color=app.classic.ui.title_color, + color=app.ui_v1.title_color, h_align='center', v_align='top', ) @@ -244,7 +244,7 @@ class PluginWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PluginSettingsWindow(transition='in_right').get_root_widget() ) @@ -263,6 +263,6 @@ class PluginWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( AdvancedSettingsWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/pluginsettings.py b/src/assets/ba_data/python/bauiv1lib/settings/pluginsettings.py index b25eefbf..03e9e9e8 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/pluginsettings.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/pluginsettings.py @@ -17,7 +17,7 @@ class PluginSettingsWindow(bui.Window): scale_origin = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale width = 470.0 if uiscale is bui.UIScale.SMALL else 470.0 height = ( 365.0 @@ -66,7 +66,7 @@ class PluginSettingsWindow(bui.Window): position=(0, height - 52), size=(width, 25), text=bui.Lstr(resource='pluginSettingsText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='top', ) @@ -165,6 +165,6 @@ class PluginSettingsWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( PluginWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/remoteapp.py b/src/assets/ba_data/python/bauiv1lib/settings/remoteapp.py index 60fca2b5..03b1c611 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/remoteapp.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/remoteapp.py @@ -16,7 +16,7 @@ class RemoteAppSettingsWindow(bui.Window): height = 390 spacing = 40 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(width, height), @@ -52,7 +52,7 @@ class RemoteAppSettingsWindow(bui.Window): size=(0, 0), text=bui.Lstr(resource=self._r + '.titleText'), maxwidth=370, - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=0.8, h_align='center', v_align='center', @@ -140,7 +140,7 @@ class RemoteAppSettingsWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( controls.ControlsSettingsWindow( transition='in_left' ).get_root_widget() diff --git a/src/assets/ba_data/python/bauiv1lib/settings/testing.py b/src/assets/ba_data/python/bauiv1lib/settings/testing.py index d3c9f45b..c4bcd58a 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/testing.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/testing.py @@ -24,7 +24,7 @@ class TestingWindow(bui.Window): back_call: Callable[[], bui.Window] | None = None, ): assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 600 self._height = 324 if uiscale is bui.UIScale.SMALL else 400 self._entries = copy.deepcopy(entries) @@ -60,7 +60,7 @@ class TestingWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 35), size=(0, 0), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', maxwidth=245, @@ -78,7 +78,7 @@ class TestingWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 75), size=(0, 0), - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, h_align='center', v_align='center', maxwidth=self._width * 0.75, @@ -224,4 +224,4 @@ class TestingWindow(bui.Window): else AdvancedSettingsWindow(transition='in_left') ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window(backwin.get_root_widget()) + bui.app.ui_v1.set_main_menu_window(backwin.get_root_widget()) diff --git a/src/assets/ba_data/python/bauiv1lib/settings/touchscreen.py b/src/assets/ba_data/python/bauiv1lib/settings/touchscreen.py index d5a8a3e9..61041bbd 100644 --- a/src/assets/ba_data/python/bauiv1lib/settings/touchscreen.py +++ b/src/assets/ba_data/python/bauiv1lib/settings/touchscreen.py @@ -27,7 +27,7 @@ class TouchscreenSettingsWindow(bui.Window): bs.set_touchscreen_editing(True) assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), @@ -58,7 +58,7 @@ class TouchscreenSettingsWindow(bui.Window): position=(25, self._height - 50), size=(self._width, 25), text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=280, h_align='center', v_align='center', @@ -278,7 +278,7 @@ class TouchscreenSettingsWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_right') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( controls.ControlsSettingsWindow( transition='in_left' ).get_root_widget() diff --git a/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py b/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py index 7b883e8c..021942e6 100644 --- a/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/soundtrack/browser.py @@ -37,7 +37,7 @@ class SoundtrackBrowserWindow(bui.Window): self._r = 'editSoundtrackWindow' assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 800 if uiscale is bui.UIScale.SMALL else 600 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -71,7 +71,7 @@ class SoundtrackBrowserWindow(bui.Window): ) assert bui.app.classic is not None - if bui.app.classic.ui.use_toolbars and uiscale is bui.UIScale.SMALL: + if bui.app.ui_v1.use_toolbars and uiscale is bui.UIScale.SMALL: self._back_button = None else: self._back_button = bui.buttonwidget( @@ -95,7 +95,7 @@ class SoundtrackBrowserWindow(bui.Window): size=(0, 0), maxwidth=300, text=bui.Lstr(resource=self._r + '.titleText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', ) @@ -246,7 +246,7 @@ class SoundtrackBrowserWindow(bui.Window): edit=self._scrollwidget, left_widget=self._new_button, right_widget=bui.get_special_widget('party_button') - if bui.app.classic.ui.use_toolbars + if bui.app.ui_v1.use_toolbars else self._scrollwidget, ) self._col = bui.columnwidget(parent=scrollwidget, border=2, margin=0) @@ -399,7 +399,7 @@ class SoundtrackBrowserWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( audio.AudioSettingsWindow(transition='in_left').get_root_widget() ) @@ -440,7 +440,7 @@ class SoundtrackBrowserWindow(bui.Window): self._save_state() bui.containerwidget(edit=self._root_widget, transition='out_left') assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( SoundtrackEditWindow( existing_soundtrack=self._selected_soundtrack ).get_root_widget() @@ -567,14 +567,14 @@ class SoundtrackBrowserWindow(bui.Window): else: raise ValueError(f'unrecognized selection \'{sel}\'') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = sel_name + bui.app.ui_v1.window_states[type(self)] = sel_name except Exception: logging.exception('Error saving state for %s.', self) def _restore_state(self) -> None: try: assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self)) + sel_name = bui.app.ui_v1.window_states.get(type(self)) if sel_name == 'Scroll': sel = self._scrollwidget elif sel_name == 'New': diff --git a/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py b/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py index 87215c06..0e1088b4 100644 --- a/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py +++ b/src/assets/ba_data/python/bauiv1lib/soundtrack/edit.py @@ -29,7 +29,7 @@ class SoundtrackEditWindow(bui.Window): self._folder_tex = bui.gettexture('folder') self._file_tex = bui.gettexture('file') assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 848 if uiscale is bui.UIScale.SMALL else 648 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -87,7 +87,7 @@ class SoundtrackEditWindow(bui.Window): else '.newSoundtrackText' ) ), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', maxwidth=280, @@ -350,7 +350,7 @@ class SoundtrackEditWindow(bui.Window): else: soundtrack[musictype] = entry - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( cls(state, transition='in_left').get_root_widget() ) @@ -368,7 +368,7 @@ class SoundtrackEditWindow(bui.Window): 'last_edited_song_type': song_type, } bui.containerwidget(edit=self._root_widget, transition='out_left') - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( music.get_music_player() .select_entry( bui.Call(self._restore_editor, state, song_type), @@ -428,7 +428,7 @@ class SoundtrackEditWindow(bui.Window): # Resets music back to normal. music.set_music_play_mode(bui.app.classic.MusicPlayMode.REGULAR) bui.containerwidget(edit=self._root_widget, transition='out_right') - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( stb.SoundtrackBrowserWindow(transition='in_left').get_root_widget() ) @@ -482,7 +482,7 @@ class SoundtrackEditWindow(bui.Window): bui.app.classic.MusicPlayMode.REGULAR, force_restart=True ) - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( stb.SoundtrackBrowserWindow(transition='in_left').get_root_widget() ) diff --git a/src/assets/ba_data/python/bauiv1lib/soundtrack/entrytypeselect.py b/src/assets/ba_data/python/bauiv1lib/soundtrack/entrytypeselect.py index 2f5d3d8e..d861b7c6 100644 --- a/src/assets/ba_data/python/bauiv1lib/soundtrack/entrytypeselect.py +++ b/src/assets/ba_data/python/bauiv1lib/soundtrack/entrytypeselect.py @@ -49,7 +49,7 @@ class SoundtrackEntryTypeSelectWindow(bui.Window): if do_music_folder: self._height += spacing - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale # NOTE: When something is selected, we close our UI and kick off # another window which then calls us back when its done, so the @@ -85,7 +85,7 @@ class SoundtrackEntryTypeSelectWindow(bui.Window): position=(self._width * 0.5, self._height - 32), size=(0, 0), text=bui.Lstr(resource=self._r + '.selectASourceText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, maxwidth=230, h_align='center', v_align='center', @@ -96,7 +96,7 @@ class SoundtrackEntryTypeSelectWindow(bui.Window): position=(self._width * 0.5, self._height - 56), size=(0, 0), text=selection_target_name, - color=bui.app.classic.ui.infotextcolor, + color=bui.app.ui_v1.infotextcolor, scale=0.7, maxwidth=230, h_align='center', @@ -178,7 +178,7 @@ class SoundtrackEntryTypeSelectWindow(bui.Window): ) else: current_playlist_entry = None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MacMusicAppPlaylistSelectWindow( self._callback, current_playlist_entry, self._current_entry ).get_root_widget() @@ -192,7 +192,7 @@ class SoundtrackEntryTypeSelectWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_left') base_path = android_get_external_files_dir() assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( FileSelectorWindow( base_path, callback=self._music_file_selector_cb, @@ -211,7 +211,7 @@ class SoundtrackEntryTypeSelectWindow(bui.Window): bui.containerwidget(edit=self._root_widget, transition='out_left') base_path = android_get_external_files_dir() assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( FileSelectorWindow( base_path, callback=self._music_folder_selector_cb, diff --git a/src/assets/ba_data/python/bauiv1lib/soundtrack/macmusicapp.py b/src/assets/ba_data/python/bauiv1lib/soundtrack/macmusicapp.py index c2e07403..de556d95 100644 --- a/src/assets/ba_data/python/bauiv1lib/soundtrack/macmusicapp.py +++ b/src/assets/ba_data/python/bauiv1lib/soundtrack/macmusicapp.py @@ -53,7 +53,7 @@ class MacMusicAppPlaylistSelectWindow(bui.Window): position=(20, self._height - 54), size=(self._width, 25), text=bui.Lstr(resource=self._r + '.selectAPlaylistText'), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, h_align='center', v_align='center', maxwidth=200, diff --git a/src/assets/ba_data/python/bauiv1lib/specialoffer.py b/src/assets/ba_data/python/bauiv1lib/specialoffer.py index f4435992..4dc7efd6 100644 --- a/src/assets/ba_data/python/bauiv1lib/specialoffer.py +++ b/src/assets/ba_data/python/bauiv1lib/specialoffer.py @@ -78,7 +78,7 @@ class SpecialOfferWindow(bui.Window): self._offer = copy.deepcopy(offer) self._width = 580 self._height = 590 - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height), diff --git a/src/assets/ba_data/python/bauiv1lib/store/browser.py b/src/assets/ba_data/python/bauiv1lib/store/browser.py index e2e1415c..778077f6 100644 --- a/src/assets/ba_data/python/bauiv1lib/store/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/store/browser.py @@ -52,7 +52,7 @@ class StoreBrowserWindow(bui.Window): app = bui.app assert app.classic is not None - uiscale = app.classic.ui.uiscale + uiscale = app.ui_v1.uiscale bui.set_analytics_screen('Store Window') @@ -189,7 +189,7 @@ class StoreBrowserWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 44), size=(0, 0), - color=app.classic.ui.title_color, + color=app.ui_v1.title_color, scale=1.5, h_align='center', v_align='center', @@ -326,7 +326,7 @@ class StoreBrowserWindow(bui.Window): def _update_get_tickets_button_pos(self) -> None: assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale pos = ( self._width - 252 @@ -890,7 +890,7 @@ class StoreBrowserWindow(bui.Window): self._height: float | None = None assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale # Pre-calc a few things and add them to store-data. for section in self._sections: @@ -1268,7 +1268,7 @@ class StoreBrowserWindow(bui.Window): else: raise ValueError(f'unrecognized selection \'{sel}\'') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = { + bui.app.ui_v1.window_states[type(self)] = { 'sel_name': sel_name, } except Exception: @@ -1280,7 +1280,7 @@ class StoreBrowserWindow(bui.Window): try: sel: bui.Widget | None assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self), {}).get( + sel_name = bui.app.ui_v1.window_states.get(type(self), {}).get( 'sel_name' ) assert isinstance(sel_name, (str, type(None))) @@ -1342,7 +1342,7 @@ class StoreBrowserWindow(bui.Window): ).get_root_widget() if not self._modal: assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window(window) + bui.app.ui_v1.set_main_menu_window(window) def _back(self) -> None: # pylint: disable=cyclic-import @@ -1356,11 +1356,11 @@ class StoreBrowserWindow(bui.Window): if not self._modal: assert bui.app.classic is not None if self._back_location == 'CoopBrowserWindow': - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( CoopBrowserWindow(transition='in_left').get_root_widget() ) else: - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) if self._on_close_call is not None: diff --git a/src/assets/ba_data/python/bauiv1lib/teamnamescolors.py b/src/assets/ba_data/python/bauiv1lib/teamnamescolors.py index b1654c66..16f04485 100644 --- a/src/assets/ba_data/python/bauiv1lib/teamnamescolors.py +++ b/src/assets/ba_data/python/bauiv1lib/teamnamescolors.py @@ -27,7 +27,7 @@ class TeamNamesColorsWindow(PopupWindow): # Creates our _root_widget. assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale scale = ( 1.69 if uiscale is bui.UIScale.SMALL diff --git a/src/assets/ba_data/python/bauiv1lib/tournamententry.py b/src/assets/ba_data/python/bauiv1lib/tournamententry.py index 2c2b293e..fcba3e99 100644 --- a/src/assets/ba_data/python/bauiv1lib/tournamententry.py +++ b/src/assets/ba_data/python/bauiv1lib/tournamententry.py @@ -66,7 +66,7 @@ class TournamentEntryWindow(PopupWindow): self._on_close_call = on_close_call if scale is None: - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale scale = ( 2.3 if uiscale is bui.UIScale.SMALL @@ -249,7 +249,7 @@ class TournamentEntryWindow(PopupWindow): self._get_tickets_button: bui.Widget | None = None self._ticket_count_text: bui.Widget | None = None - if not bui.app.classic.ui.use_toolbars: + if not bui.app.ui_v1.use_toolbars: if bui.app.classic.allow_ticket_purchases: self._get_tickets_button = bui.buttonwidget( parent=self.root_widget, diff --git a/src/assets/ba_data/python/bauiv1lib/tournamentscores.py b/src/assets/ba_data/python/bauiv1lib/tournamentscores.py index 6fe2f288..9d756318 100644 --- a/src/assets/ba_data/python/bauiv1lib/tournamentscores.py +++ b/src/assets/ba_data/python/bauiv1lib/tournamentscores.py @@ -41,7 +41,7 @@ class TournamentScoresWindow(PopupWindow): self._subcontainer: bui.Widget | None = None self._on_close_call = on_close_call assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 2.3 diff --git a/src/assets/ba_data/python/bauiv1lib/trophies.py b/src/assets/ba_data/python/bauiv1lib/trophies.py index 6cf3a6f2..fab8e729 100644 --- a/src/assets/ba_data/python/bauiv1lib/trophies.py +++ b/src/assets/ba_data/python/bauiv1lib/trophies.py @@ -24,7 +24,7 @@ class TrophiesWindow(popup.PopupWindow): ): self._data = data assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if scale is None: scale = ( 2.3 diff --git a/src/assets/ba_data/python/bauiv1lib/url.py b/src/assets/ba_data/python/bauiv1lib/url.py index a9355a00..2e9b8335 100644 --- a/src/assets/ba_data/python/bauiv1lib/url.py +++ b/src/assets/ba_data/python/bauiv1lib/url.py @@ -15,7 +15,7 @@ class ShowURLWindow(bui.Window): # (for long URLs especially) app = bui.app assert app.classic is not None - uiscale = app.classic.ui.uiscale + uiscale = app.ui_v1.uiscale self._address = address self._width = 800 @@ -37,7 +37,7 @@ class ShowURLWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 10), size=(0, 0), - color=app.classic.ui.title_color, + color=app.ui_v1.title_color, h_align='center', v_align='center', text=bui.Lstr(resource='directBrowserToURLText'), @@ -48,7 +48,7 @@ class ShowURLWindow(bui.Window): position=(self._width * 0.5, self._height - 60), size=(0, 0), scale=1.3, - color=app.classic.ui.infotextcolor, + color=app.ui_v1.infotextcolor, h_align='center', v_align='center', text=address, diff --git a/src/assets/ba_data/python/bauiv1lib/v2upgrade.py b/src/assets/ba_data/python/bauiv1lib/v2upgrade.py index 72ba17c0..de398221 100644 --- a/src/assets/ba_data/python/bauiv1lib/v2upgrade.py +++ b/src/assets/ba_data/python/bauiv1lib/v2upgrade.py @@ -15,7 +15,7 @@ class V2UpgradeWindow(bui.Window): app = bui.app assert app.classic is not None - uiscale = app.classic.ui.uiscale + uiscale = app.ui_v1.uiscale self._code = code @@ -40,7 +40,7 @@ class V2UpgradeWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 46), size=(0, 0), - color=app.classic.ui.title_color, + color=app.ui_v1.title_color, h_align='center', v_align='center', text=bui.Lstr( diff --git a/src/assets/ba_data/python/bauiv1lib/watch.py b/src/assets/ba_data/python/bauiv1lib/watch.py index 6d10fde1..1bdd4fb3 100644 --- a/src/assets/ba_data/python/bauiv1lib/watch.py +++ b/src/assets/ba_data/python/bauiv1lib/watch.py @@ -44,7 +44,7 @@ class WatchWindow(bui.Window): self._transition_out = 'out_right' scale_origin = None assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_location('Watch') + bui.app.ui_v1.set_main_menu_location('Watch') self._tab_data: dict[str, Any] = {} self._my_replays_scroll_width: float | None = None self._my_replays_watch_replay_button: bui.Widget | None = None @@ -54,7 +54,7 @@ class WatchWindow(bui.Window): self._my_replays_rename_window: bui.Widget | None = None self._my_replay_rename_text: bui.Widget | None = None self._r = 'watchWindow' - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._width = 1240 if uiscale is bui.UIScale.SMALL else 1040 x_inset = 100 if uiscale is bui.UIScale.SMALL else 0 self._height = ( @@ -88,7 +88,7 @@ class WatchWindow(bui.Window): ) ) - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars: bui.containerwidget( edit=self._root_widget, on_cancel_call=self._back ) @@ -116,7 +116,7 @@ class WatchWindow(bui.Window): parent=self._root_widget, position=(self._width * 0.5, self._height - 38), size=(0, 0), - color=bui.app.classic.ui.title_color, + color=bui.app.ui_v1.title_color, scale=1.5, h_align='center', v_align='center', @@ -143,7 +143,7 @@ class WatchWindow(bui.Window): on_select_call=self._set_tab, ) - if bui.app.classic.ui.use_toolbars: + if bui.app.ui_v1.use_toolbars: first_tab = self._tab_row.tabs[tabdefs[0][0]] last_tab = self._tab_row.tabs[tabdefs[-1][0]] bui.widget( @@ -204,7 +204,7 @@ class WatchWindow(bui.Window): self._tab_data = {} assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale if tab_id is self.TabID.MY_REPLAYS: c_width = self._scroll_width c_height = self._scroll_height - 20 @@ -291,7 +291,7 @@ class WatchWindow(bui.Window): ) bui.widget(edit=btn1, up_widget=self._tab_row.tabs[tab_id].button) assert bui.app.classic is not None - if uiscale is bui.UIScale.SMALL and bui.app.classic.ui.use_toolbars: + if uiscale is bui.UIScale.SMALL and bui.app.ui_v1.use_toolbars: bui.widget( edit=btn1, left_widget=bui.get_special_widget('back_button'), @@ -388,7 +388,7 @@ class WatchWindow(bui.Window): c_width = 600 c_height = 250 assert bui.app.classic is not None - uiscale = bui.app.classic.ui.uiscale + uiscale = bui.app.ui_v1.uiscale self._my_replays_rename_window = cnt = bui.containerwidget( scale=( 1.8 @@ -617,9 +617,7 @@ class WatchWindow(bui.Window): else: raise ValueError(f'unrecognized selection {sel}') assert bui.app.classic is not None - bui.app.classic.ui.window_states[type(self)] = { - 'sel_name': sel_name - } + bui.app.ui_v1.window_states[type(self)] = {'sel_name': sel_name} except Exception: logging.exception('Error saving state for %s.', self) @@ -629,7 +627,7 @@ class WatchWindow(bui.Window): try: sel: bui.Widget | None assert bui.app.classic is not None - sel_name = bui.app.classic.ui.window_states.get(type(self), {}).get( + sel_name = bui.app.ui_v1.window_states.get(type(self), {}).get( 'sel_name' ) assert isinstance(sel_name, (str, type(None))) @@ -670,6 +668,6 @@ class WatchWindow(bui.Window): edit=self._root_widget, transition=self._transition_out ) assert bui.app.classic is not None - bui.app.classic.ui.set_main_menu_window( + bui.app.ui_v1.set_main_menu_window( MainMenuWindow(transition='in_left').get_root_widget() ) diff --git a/src/ballistica/base/graphics/graphics.cc b/src/ballistica/base/graphics/graphics.cc index a4dfac85..0fc50f86 100644 --- a/src/ballistica/base/graphics/graphics.cc +++ b/src/ballistica/base/graphics/graphics.cc @@ -343,10 +343,7 @@ class Graphics::ScreenMessageEntry { texture(texture_in), tint_texture(tint_texture_in), tint(tint_in), - tint2(tint2_in), - v_smoothed(0.0f), - translation_dirty(true), - mesh_dirty(true) {} + tint2(tint2_in) {} auto GetText() -> TextGroup&; void UpdateTranslation(); bool align_left; @@ -358,9 +355,9 @@ class Graphics::ScreenMessageEntry { std::string s_translated; Object::Ref texture; Object::Ref tint_texture; - float v_smoothed; - bool translation_dirty; - bool mesh_dirty; + float v_smoothed{}; + bool translation_dirty{true}; + bool mesh_dirty{true}; private: Object::Ref s_mesh_; @@ -368,6 +365,8 @@ class Graphics::ScreenMessageEntry { // Draw controls and things that lie on top of the action. void Graphics::DrawMiscOverlays(RenderPass* pass) { + assert(g_base && g_base->InLogicThread()); + // Every now and then, update our stats. while (g_core->GetAppTimeMillisecs() >= next_stat_update_time_) { if (g_core->GetAppTimeMillisecs() - next_stat_update_time_ > 1000) { @@ -580,7 +579,11 @@ void Graphics::DrawMiscOverlays(RenderPass* pass) { a *= 0.8f; } - assert(!i->translation_dirty); + if (i->translation_dirty) { + BA_LOG_ONCE( + LogLevel::kWarning, + "Found dirty translation on screenmessage draw pass 1."); + } float str_height = g_base->text_graphics->GetStringHeight(i->s_translated.c_str()); float str_width = @@ -667,7 +670,11 @@ void Graphics::DrawMiscOverlays(RenderPass* pass) { } else { a = 1; } - assert(!i->translation_dirty); + if (i->translation_dirty) { + BA_LOG_ONCE( + LogLevel::kWarning, + "Found dirty translation on screenmessage draw pass 2."); + } float str_height = g_base->text_graphics->GetStringHeight(i->s_translated.c_str()); float str_width = @@ -685,7 +692,9 @@ void Graphics::DrawMiscOverlays(RenderPass* pass) { for (int e = 0; e < elem_count; e++) { // Gracefully skip unloaded textures. TextureAsset* t = i->GetText().GetElementTexture(e); - if (!t->preloaded()) continue; + if (!t->preloaded()) { + continue; + } c.SetTexture(t); if (i->GetText().GetElementCanColor(e)) { c.SetColor(r, g, b, a); @@ -703,7 +712,9 @@ void Graphics::DrawMiscOverlays(RenderPass* pass) { } v += scale * (36 + str_height); - if (v > g_base->graphics->screen_virtual_height() + 30) break; + if (v > g_base->graphics->screen_virtual_height() + 30) { + break; + } } c.Submit(); } @@ -809,7 +820,9 @@ void Graphics::DrawMiscOverlays(RenderPass* pass) { for (int e = 0; e < elem_count; e++) { // Gracefully skip unloaded textures. TextureAsset* t = i->GetText().GetElementTexture(e); - if (!t->preloaded()) continue; + if (!t->preloaded()) { + continue; + } c.SetTexture(t); if (i->GetText().GetElementCanColor(e)) { c.SetColor(r, g, b, a); @@ -884,10 +897,11 @@ void Graphics::AddScreenMessage(const std::string& msg, const Vector3f& color, bool top, TextureAsset* texture, TextureAsset* tint_texture, const Vector3f& tint, const Vector3f& tint2) { + assert(g_base->InLogicThread()); + // So we know we're always dealing with valid utf8. std::string m = Utils::GetValidUTF8(msg.c_str(), "ga9msg"); - assert(g_base->InLogicThread()); if (top) { float start_v = -40.0f; if (!screen_messages_top_.empty()) { @@ -1525,6 +1539,8 @@ void Graphics::SetSupportsHighQualityGraphics(bool s) { } void Graphics::ClearScreenMessageTranslations() { + assert(g_base && g_base->InLogicThread()); + for (auto&& i : screen_messages_) { i.translation_dirty = true; } @@ -1995,6 +2011,7 @@ auto Graphics::ReflectionTypeFromString(const std::string& s) } void Graphics::LanguageChanged() { + assert(g_base && g_base->InLogicThread()); // Also clear translations on all screen-messages. ClearScreenMessageTranslations(); } diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 086e4550..d20dbc9f 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 21081; +const int kEngineBuildNumber = 21084; const char* kEngineVersion = "1.7.20"; auto MonolithicMain(const core::CoreConfig& core_config) -> int { diff --git a/src/meta/babasemeta/pyembed/binding_base.py b/src/meta/babasemeta/pyembed/binding_base.py index 8c4fa6c3..9ce99ee4 100644 --- a/src/meta/babasemeta/pyembed/binding_base.py +++ b/src/meta/babasemeta/pyembed/binding_base.py @@ -44,7 +44,6 @@ values = [ _hooks.play_gong_sound, # kPlayGongSoundCall _hooks.launch_coop_game, # kLaunchCoopGameCall _hooks.purchases_restored_message, # kPurchasesRestoredMessageCall - _hooks.dismiss_wii_remotes_window, # kDismissWiiRemotesWindowCall _hooks.unavailable_message, # kUnavailableMessageCall _hooks.set_last_ad_network, # kSetLastAdNetworkCall _hooks.no_game_circle_message, # kNoGameCircleMessageCall diff --git a/tools/batools/appmodule.py b/tools/batools/appmodule.py index 8a6d6142..2e5ad08e 100755 --- a/tools/batools/appmodule.py +++ b/tools/batools/appmodule.py @@ -10,8 +10,6 @@ from __future__ import annotations from typing import TYPE_CHECKING -from efro.error import CleanError - if TYPE_CHECKING: from batools.featureset import FeatureSet @@ -82,31 +80,46 @@ def generate_app_module( else: fset = fsets[fsetname] if fset.has_python_app_subsystem: - if not fset.allow_as_soft_requirement: - raise CleanError( - f'allow_as_soft_requirement is False for' - f' feature-set {fset.name};' - f' this is not yet supported.' - ) modname = fset.name_python_package classname = f'{fset.name_camel}Subsystem' - contents += ( - f'\n' - f'@cached_property\n' - f'def {fset.name}(self) -> {classname} | None:\n' - f' """Our {fset.name} subsystem (if available)."""\n' - f'\n' - f' try:\n' - f' from {modname} import {classname}\n' - f'\n' - f' return {classname}()\n' - f' except ImportError:\n' - f' return None\n' - f' except Exception:\n' - f" logging.exception('Error importing" - f" {modname}.')\n" - f' return None\n' - ) + # If they are allowed as a soft requirement, *everyone* + # has to access them as TYPE | None. Originally I planned to + # add the '| None' *only* if another present feature set was + # soft referencing them, but it turns out that code tuned + # to expect TYPE hits a lot of 'code will never be executed' + # errors in the type checker if we switch it to 'TYPE | None' + # so we need to be consistent. + if fset.allow_as_soft_requirement: + contents += ( + f'\n' + f'@cached_property\n' + f'def {fset.name}(self) -> {classname} | None:\n' + f' """Our {fset.name} subsystem (if available)."""\n' + f'\n' + f' try:\n' + f' from {modname} import {classname}\n' + f'\n' + f' return {classname}()\n' + f' except ImportError:\n' + f' return None\n' + f' except Exception:\n' + f" logging.exception('Error importing" + f" {modname}.')\n" + f' return None\n' + ) + else: + contents += ( + f'\n' + f'@cached_property\n' + f'def {fset.name}(self) -> {classname}:\n' + f' """Our {fset.name} subsystem' + ' (always available)."""\n' + f'\n' + f' from {modname} import {classname}\n' + f'\n' + f' return {classname}()\n' + ) + out = replace_section( out, f'{indent}# __FEATURESET_APP_SUBSYSTEM_PROPERTIES_BEGIN__\n', @@ -115,7 +128,29 @@ def generate_app_module( keep_markers=True, ) - # Set default app-mode-selection logic. + # Generate code to create app subsystems in the proper order. + all_ss_fsets = { + fsetname: fset + for fsetname, fset in fsets.items() + if fset.has_python_app_subsystem + } + init_order: list[str] = [] + for fsetname, fset in sorted(all_ss_fsets.items()): + _add_init(fset, all_ss_fsets, init_order, 0) + + contents = '# Poke these attrs to create all our subsystems.\n' + ''.join( + f'_ = self.{fsetname}\n' for fsetname in init_order + ) + indent = ' ' + out = replace_section( + out, + f'{indent}# __FEATURESET_APP_SUBSYSTEM_CREATE_BEGIN__\n', + f'{indent}# __FEATURESET_APP_SUBSYSTEM_CREATE_END__\n', + textwrap.indent(f'{info}\n\n{contents}\n', indent), + keep_markers=True, + ) + + # Generate default app-mode-selection logic. contents = ( '# Hmm; need to think about how we auto-construct this; how\n' '# should we determine which app modes to check and in what\n' @@ -148,3 +183,36 @@ def generate_app_module( # (project update time jumps from 0.3 to 0.5 seconds if I enable # formatting here for just this one file). return out + + +def _add_init( + fset: FeatureSet, + allsets: dict[str, FeatureSet], + init_order: list[str], + depth: int, +) -> None: + # If we hit max recursion, we've got a dependency cycle. + if depth > 10: + raise RuntimeError( + 'App subsystem dependency cycle detected' + f" (involving feature set '{fset.name}')." + ) + + # If this one is already added, we're done. + if fset.name in init_order: + return + + # First add all of its dependencies. + for depname in sorted(fset.python_app_subsystem_dependencies): + depfset = allsets.get(depname) + # Only matters if this is in the actual set of featuresets. + if depfset is None: + continue + _add_init(depfset, allsets, init_order, depth + 1) + + # We should not have been added via the above code (dependency cycle + # should have been detected in that case). + assert fset.name not in init_order + + # Finally add the fset itself. + init_order.append(fset.name) diff --git a/tools/batools/dummymodule.py b/tools/batools/dummymodule.py index 9992f073..c1864727 100755 --- a/tools/batools/dummymodule.py +++ b/tools/batools/dummymodule.py @@ -976,13 +976,14 @@ def generate_dummy_modules(projroot: str) -> None: featuresets = [f for f in featuresets if f.has_native_python_module] mnames: list[str] = [fs.name_python_binary_module for fs in featuresets] - os.makedirs('build/dummymodules', exist_ok=True) + builddir = 'build/dummymodules' + os.makedirs(builddir, exist_ok=True) gencount = 0 for mname in mnames: gencount += 1 outfilename = os.path.abspath( - os.path.join(projroot, f'build/dummymodules/{mname}.py') + os.path.join(projroot, builddir, f'{mname}.py') ) pycmd += ( f'dummymodule.Generator(modulename="{mname}",' @@ -1004,12 +1005,12 @@ def generate_dummy_modules(projroot: str) -> None: check=True, ) print( - f'{Clr.BLU}Dummy-module generation complete.{Clr.RST}', flush=True + f'{Clr.BLD}{Clr.BLU}Generated {gencount} dummy-modules' + f' {Clr.RST}(in {builddir}){Clr.RST}{Clr.BLD}{Clr.BLU}.', + flush=True, ) except Exception as exc2: # Keep our error simple here; we want focus to be on what went # wrong withing BallisticaKit. - raise CleanError( - 'BallisticaKit dummy-module generation failed.' - ) from exc2 + raise CleanError('Dummy-module generation failed.') from exc2 diff --git a/tools/batools/featureset.py b/tools/batools/featureset.py index 6a361693..38bba0c3 100644 --- a/tools/batools/featureset.py +++ b/tools/batools/featureset.py @@ -60,6 +60,15 @@ class FeatureSet: # loaded instance of type 'bafoobar.FooBarSubsystem'. self.has_python_app_subsystem = False + # By default, Python app subsystems will be created in + # alphabetical order based on their feature set name. All + # subsystem calbacks adhere to this ordering. If there are any + # feature sets whose subsystems should always be created before + # this one's, list them here. Note that this does not affect + # whether or not the feature set is included in the build; only + # the init order in cases when it is. + self.python_app_subsystem_dependencies = set[str]() + # If True, feature-set 'foo_bar', will be allowed to be listed # as a soft-requirement of other feature sets and its # python-app-subsystem will be annotated as type