featureset dependency cleanup; all spinoff-tests should now pass

This commit is contained in:
Eric 2023-06-09 15:14:03 -07:00
parent 65954e46b3
commit c421ef808f
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
10 changed files with 89 additions and 62 deletions

32
.efrocachemap generated
View File

@ -4080,18 +4080,18 @@
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/f7/bd/eaf1e62f9fdba779bf850b9f28cd",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/e4/9b/a638d9e75b054f0696d6a941dcb3",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/8c/d0/c241f77c0217b3ef1b9694edd375",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/07/b0/bc8c67505b71eba68778f37a34d5",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/4b/8e/d9283666c42e8930b0cd534be4dc",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/93/c1/240c43c921ed22d974ca9dadb253",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/eb/c4/d7e1847d58ddf748dc4aafbcb399",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/42/1b/e71f135f126f72804de5e5b127d5",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/90/f6/98b7cdb09b8ebc51f01469901486",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/1a/98/77aec04467b11b0ce5600c99eb2d",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/18/d5/4f9d22c1f26b18e3656f9785073e",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/6e/44/e63d5c7dc2506c6483a559396af5",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/2c/08/52470d98248d8ba847984c051742",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/2a/2f/b360b5f06f4d59c67cac83139188",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/c0/c9/7c5e84ee836a2d4a22663f8edae5",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/7c/93/9f12cacd69a8cf7a0add000d5265",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/79/dd/da70bbc4da1b69310a2d7bca8103",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/db/a6/6c31f8d62226abdd0e2f82aaa40b",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/3c/a6/03466686547fd2f2f9e90e1f258c",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/ce/39/5f920f47fd1d3ac74de4d3632e4d",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/b9/73/d01e9f2f8dafcaa2b1eee3cd4c62",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/62/e5/7cc3c367168c84d06ac35295618e",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/6c/7f/29963c7a8dc5847d76949169356e",
"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",
@ -4108,14 +4108,14 @@
"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/de/50/e953e9f4bef5249444bf92cf7431",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/44/d4/c945282e101215eb32677adf6ee7",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/80/52/fec8962cf5f258068449d728e3f9",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/0d/dc/576e81d6a01de5a1d274d41fdc4b",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/5c/e8/dd981295029e587001e8e631def6",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/d9/a1/f00e661f34a44fdd82af47d63706",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/9d/01/701403052ee0cd98d324e138491c",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/06/df/07ac07299a66a7ea90e40a82736c",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/e6/17/d01132ba1b6e94801e4a23a94989",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/0f/d3/7613d44ef1a540f6263b2e89bfb5",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/f1/a1/8eb50a585d96ea1b557783105b7b",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/21/3a/ac8bf36b227128b558f85188c0b5",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/a1/20/b99fd7c8aa08645a1f76848badfd",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/7c/29/8587b6ff47891b57a8b467f6e5fb",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/82/81/a0b997a9f9dfe5a263ea4652ec62",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/29/1f/cccee6be4be518d2b45a026fc9fd",
"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/fe/d2/3be7462aaff43bd651b5b5ac9d04",

View File

@ -608,6 +608,10 @@ spinoff-test-base:
spinoff-test-plus:
tools/pcommand spinoff_test plus $(SPINOFF_TEST_EXTRA_ARGS)
# Build and check a spinoff project including only the classic feature-set.
spinoff-test-classic:
tools/pcommand spinoff_test classic $(SPINOFF_TEST_EXTRA_ARGS)
# Build and check a spinoff project with only the template_fs feature-set.
spinoff-test-template_fs:
tools/pcommand spinoff_test template_fs $(SPINOFF_TEST_EXTRA_ARGS)

View File

@ -12,7 +12,14 @@ from batools.featureset import FeatureSet
# Grab the FeatureSet we should apply to.
fset = FeatureSet.get_active()
fset.requirements = {'core', 'base', 'scene_v1', 'scene_v1_lib', 'ui_v1'}
fset.requirements = {
'core',
'base',
'scene_v1',
'scene_v1_lib',
'ui_v1',
'ui_v1_lib',
}
# We can make use of plus stuff but can live without it.
fset.soft_requirements = {'plus'}

View File

@ -14,4 +14,4 @@ fset = FeatureSet.get_active()
fset.has_native_python_module = False
fset.requirements = {'core', 'base', 'ui_v1'}
fset.requirements = {'core', 'base', 'ui_v1', 'classic'}

View File

@ -5,6 +5,7 @@ from __future__ import annotations
import random
import logging
import weakref
from typing import TYPE_CHECKING
from efro.dataclassio import dataclass_from_dict
@ -36,6 +37,7 @@ if TYPE_CHECKING:
from baclassic._appdelegate import AppDelegate
from baclassic._servermode import ServerController
from baclassic._net import MasterServerCallback
from bauiv1lib.party import PartyWindow
class ClassicSubsystem(AppSubsystem):
@ -121,6 +123,7 @@ class ClassicSubsystem(AppSubsystem):
self.main_menu_window_refresh_check_count = 0 # FIXME: Mv to mainmenu.
self.invite_confirm_windows: list[Any] = [] # FIXME: Don't use Any.
self.delegate: AppDelegate | None = None
self.party_window: weakref.ref[PartyWindow] | None = None
# Store.
self.store_layout: dict[str, list[dict[str, Any]]] | None = None
@ -756,3 +759,38 @@ class ClassicSubsystem(AppSubsystem):
_bauiv1.gettexture(map_tex_name)
except Exception:
logging.exception('Error preloading map preview media.')
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.
party_window = (
None if self.party_window is None else self.party_window()
)
if party_window is not None:
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 = _babase.app.ui_v1.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()
_babase.app.ui_v1.set_main_menu_window(
MainMenuWindow().get_root_widget()
)

View File

@ -45,9 +45,11 @@ 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.ui_v1.party_window is not None
and _babase.app.ui_v1.party_window() is not None
):
_babase.app.ui_v1.party_window().on_chat_message(msg)
classic = _babase.app.classic
assert classic is not None
party_window = (
None if classic.party_window is None else classic.party_window()
)
if party_window is not None:
party_window.on_chat_message(msg)

View File

@ -51,7 +51,10 @@ def friends_button_press() -> None:
def party_icon_activate(origin: Sequence[float]) -> None:
from babase import app
app.ui_v1.party_icon_activate(origin)
if app.classic is not None:
app.classic.party_icon_activate(origin)
else:
logging.warning('party_icon_activate: no classic.')
def quit_window() -> None:
@ -67,7 +70,11 @@ def quit_window() -> None:
def device_menu_press(device_id: int | None) -> None:
from babase import app
app.ui_v1.device_menu_press(device_id)
if app.classic is None:
logging.exception('Classic not present.')
return
app.classic.device_menu_press(device_id)
def show_url_window(address: str) -> None:

View File

@ -5,7 +5,6 @@
from __future__ import annotations
from typing import TYPE_CHECKING
import weakref
import _babase
from babase._mgen.enums import UIScale
@ -16,7 +15,7 @@ import bauiv1
if TYPE_CHECKING:
from typing import Any, Callable, Sequence
from bauiv1._uitypes import UICleanupCheck, UIController
from bauiv1._uitypes import UICleanupCheck, UIController, Window
import babase
@ -36,6 +35,7 @@ class UIV1Subsystem(AppSubsystem):
self._main_menu_window: bauiv1.Widget | None = None
self._main_menu_location: str | None = None
self.quit_window: bauiv1.Widget | None = None
# From classic.
self.main_menu_resume_callbacks: list = [] # Can probably go away.
@ -55,11 +55,9 @@ class UIV1Subsystem(AppSubsystem):
self.window_states: dict[type, Any] = {} # FIXME: Kill this.
self.main_menu_selection: str | None = None # FIXME: Kill this.
self.have_party_queue_window = False
self.quit_window: Any = None
self.cleanupchecks: list[UICleanupCheck] = []
self.upkeeptimer: babase.AppTimer | None = None
self.use_toolbars = env.get('toolbar_test', True)
self.party_window: Any = None # FIXME: Don't use Any.
self.title_color = (0.72, 0.7, 0.75)
self.heading_color = (0.72, 0.7, 0.75)
self.infotextcolor = (0.7, 0.9, 0.7)
@ -184,33 +182,3 @@ class UIV1Subsystem(AppSubsystem):
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())

View File

@ -157,7 +157,8 @@ class QuitWindow:
back: bool = False,
origin_widget: bui.Widget | None = None,
):
assert bui.app.classic is not None
classic = bui.app.classic
assert classic is not None
ui = bui.app.ui_v1
app = bui.app
self._back = back

View File

@ -8,9 +8,9 @@ import math
import logging
from typing import TYPE_CHECKING, cast
from bauiv1lib.popup import PopupMenuWindow
import bauiv1 as bui
import bascenev1 as bs
from bauiv1lib.popup import PopupMenuWindow
if TYPE_CHECKING:
from typing import Sequence, Any