more scene_v1 untangling

This commit is contained in:
Eric 2023-06-06 19:26:42 -07:00
parent 1211c6787a
commit e1dd1d1d26
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
22 changed files with 235 additions and 131 deletions

View File

@ -66,13 +66,9 @@
"ba_data/python/baclassic/__pycache__/_analytics.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_analytics.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_appdelegate.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_appdelegate.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_benchmark.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_benchmark.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_campaign.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_input.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_input.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_level.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_lobby.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_music.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_music.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_net.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_net.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_profile.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_servermode.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_servermode.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_store.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_store.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_subsystem.cpython-311.opt-1.pyc", "ba_data/python/baclassic/__pycache__/_subsystem.cpython-311.opt-1.pyc",
@ -87,13 +83,9 @@
"ba_data/python/baclassic/_analytics.py", "ba_data/python/baclassic/_analytics.py",
"ba_data/python/baclassic/_appdelegate.py", "ba_data/python/baclassic/_appdelegate.py",
"ba_data/python/baclassic/_benchmark.py", "ba_data/python/baclassic/_benchmark.py",
"ba_data/python/baclassic/_campaign.py",
"ba_data/python/baclassic/_input.py", "ba_data/python/baclassic/_input.py",
"ba_data/python/baclassic/_level.py",
"ba_data/python/baclassic/_lobby.py",
"ba_data/python/baclassic/_music.py", "ba_data/python/baclassic/_music.py",
"ba_data/python/baclassic/_net.py", "ba_data/python/baclassic/_net.py",
"ba_data/python/baclassic/_profile.py",
"ba_data/python/baclassic/_servermode.py", "ba_data/python/baclassic/_servermode.py",
"ba_data/python/baclassic/_store.py", "ba_data/python/baclassic/_store.py",
"ba_data/python/baclassic/_subsystem.py", "ba_data/python/baclassic/_subsystem.py",
@ -133,6 +125,7 @@
"ba_data/python/bascenev1/__pycache__/_activitytypes.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_activitytypes.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_actor.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_actor.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_appmode.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_appmode.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_campaign.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_collision.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_collision.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_coopgame.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_coopgame.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_coopsession.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_coopsession.cpython-311.opt-1.pyc",
@ -145,6 +138,8 @@
"ba_data/python/bascenev1/__pycache__/_gameresults.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_gameresults.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_gameutils.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_gameutils.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_hooks.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_hooks.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_level.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_lobby.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_map.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_map.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_messages.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_messages.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_multiteamsession.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_multiteamsession.cpython-311.opt-1.pyc",
@ -153,6 +148,7 @@
"ba_data/python/bascenev1/__pycache__/_player.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_player.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_playlist.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_playlist.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_powerup.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_powerup.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_profile.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_score.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_score.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_session.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_session.cpython-311.opt-1.pyc",
"ba_data/python/bascenev1/__pycache__/_settings.cpython-311.opt-1.pyc", "ba_data/python/bascenev1/__pycache__/_settings.cpython-311.opt-1.pyc",
@ -164,6 +160,7 @@
"ba_data/python/bascenev1/_activitytypes.py", "ba_data/python/bascenev1/_activitytypes.py",
"ba_data/python/bascenev1/_actor.py", "ba_data/python/bascenev1/_actor.py",
"ba_data/python/bascenev1/_appmode.py", "ba_data/python/bascenev1/_appmode.py",
"ba_data/python/bascenev1/_campaign.py",
"ba_data/python/bascenev1/_collision.py", "ba_data/python/bascenev1/_collision.py",
"ba_data/python/bascenev1/_coopgame.py", "ba_data/python/bascenev1/_coopgame.py",
"ba_data/python/bascenev1/_coopsession.py", "ba_data/python/bascenev1/_coopsession.py",
@ -176,6 +173,8 @@
"ba_data/python/bascenev1/_gameresults.py", "ba_data/python/bascenev1/_gameresults.py",
"ba_data/python/bascenev1/_gameutils.py", "ba_data/python/bascenev1/_gameutils.py",
"ba_data/python/bascenev1/_hooks.py", "ba_data/python/bascenev1/_hooks.py",
"ba_data/python/bascenev1/_level.py",
"ba_data/python/bascenev1/_lobby.py",
"ba_data/python/bascenev1/_map.py", "ba_data/python/bascenev1/_map.py",
"ba_data/python/bascenev1/_messages.py", "ba_data/python/bascenev1/_messages.py",
"ba_data/python/bascenev1/_multiteamsession.py", "ba_data/python/bascenev1/_multiteamsession.py",
@ -184,6 +183,7 @@
"ba_data/python/bascenev1/_player.py", "ba_data/python/bascenev1/_player.py",
"ba_data/python/bascenev1/_playlist.py", "ba_data/python/bascenev1/_playlist.py",
"ba_data/python/bascenev1/_powerup.py", "ba_data/python/bascenev1/_powerup.py",
"ba_data/python/bascenev1/_profile.py",
"ba_data/python/bascenev1/_score.py", "ba_data/python/bascenev1/_score.py",
"ba_data/python/bascenev1/_session.py", "ba_data/python/bascenev1/_session.py",
"ba_data/python/bascenev1/_settings.py", "ba_data/python/bascenev1/_settings.py",

View File

@ -181,13 +181,9 @@ SCRIPT_TARGETS_PY_PUBLIC = \
$(BUILD_DIR)/ba_data/python/baclassic/_analytics.py \ $(BUILD_DIR)/ba_data/python/baclassic/_analytics.py \
$(BUILD_DIR)/ba_data/python/baclassic/_appdelegate.py \ $(BUILD_DIR)/ba_data/python/baclassic/_appdelegate.py \
$(BUILD_DIR)/ba_data/python/baclassic/_benchmark.py \ $(BUILD_DIR)/ba_data/python/baclassic/_benchmark.py \
$(BUILD_DIR)/ba_data/python/baclassic/_campaign.py \
$(BUILD_DIR)/ba_data/python/baclassic/_input.py \ $(BUILD_DIR)/ba_data/python/baclassic/_input.py \
$(BUILD_DIR)/ba_data/python/baclassic/_level.py \
$(BUILD_DIR)/ba_data/python/baclassic/_lobby.py \
$(BUILD_DIR)/ba_data/python/baclassic/_music.py \ $(BUILD_DIR)/ba_data/python/baclassic/_music.py \
$(BUILD_DIR)/ba_data/python/baclassic/_net.py \ $(BUILD_DIR)/ba_data/python/baclassic/_net.py \
$(BUILD_DIR)/ba_data/python/baclassic/_profile.py \
$(BUILD_DIR)/ba_data/python/baclassic/_servermode.py \ $(BUILD_DIR)/ba_data/python/baclassic/_servermode.py \
$(BUILD_DIR)/ba_data/python/baclassic/_store.py \ $(BUILD_DIR)/ba_data/python/baclassic/_store.py \
$(BUILD_DIR)/ba_data/python/baclassic/_subsystem.py \ $(BUILD_DIR)/ba_data/python/baclassic/_subsystem.py \
@ -205,6 +201,7 @@ SCRIPT_TARGETS_PY_PUBLIC = \
$(BUILD_DIR)/ba_data/python/bascenev1/_activitytypes.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_activitytypes.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_actor.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_actor.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_appmode.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_appmode.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_campaign.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_collision.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_collision.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_coopgame.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_coopgame.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_coopsession.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_coopsession.py \
@ -217,6 +214,8 @@ SCRIPT_TARGETS_PY_PUBLIC = \
$(BUILD_DIR)/ba_data/python/bascenev1/_gameresults.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_gameresults.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_gameutils.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_gameutils.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_hooks.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_hooks.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_level.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_lobby.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_map.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_map.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_messages.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_messages.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_multiteamsession.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_multiteamsession.py \
@ -225,6 +224,7 @@ SCRIPT_TARGETS_PY_PUBLIC = \
$(BUILD_DIR)/ba_data/python/bascenev1/_player.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_player.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_playlist.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_playlist.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_powerup.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_powerup.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_profile.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_score.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_score.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_session.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_session.py \
$(BUILD_DIR)/ba_data/python/bascenev1/_settings.py \ $(BUILD_DIR)/ba_data/python/bascenev1/_settings.py \
@ -453,13 +453,9 @@ SCRIPT_TARGETS_PYC_PUBLIC = \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_analytics.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_analytics.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_appdelegate.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_appdelegate.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_benchmark.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_benchmark.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_campaign.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_input.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_input.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_level.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_lobby.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_music.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_music.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_net.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_net.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_profile.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_servermode.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_servermode.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_store.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_store.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_subsystem.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_subsystem.cpython-311.opt-1.pyc \
@ -477,6 +473,7 @@ SCRIPT_TARGETS_PYC_PUBLIC = \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_activitytypes.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_activitytypes.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_actor.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_actor.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_appmode.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_appmode.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_campaign.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_collision.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_collision.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_coopgame.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_coopgame.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_coopsession.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_coopsession.cpython-311.opt-1.pyc \
@ -489,6 +486,8 @@ SCRIPT_TARGETS_PYC_PUBLIC = \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_gameresults.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_gameresults.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_gameutils.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_gameutils.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_hooks.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_hooks.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_level.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_lobby.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_map.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_map.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_messages.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_messages.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_multiteamsession.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_multiteamsession.cpython-311.opt-1.pyc \
@ -497,6 +496,7 @@ SCRIPT_TARGETS_PYC_PUBLIC = \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_player.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_player.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_playlist.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_playlist.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_powerup.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_powerup.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_profile.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_score.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_score.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_session.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_session.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_settings.cpython-311.opt-1.pyc \ $(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_settings.cpython-311.opt-1.pyc \

View File

@ -31,17 +31,10 @@ directly, it will most likely not work without classic present.
import logging import logging
from baclassic._subsystem import ClassicSubsystem from baclassic._subsystem import ClassicSubsystem
from baclassic._campaign import Campaign
from baclassic._level import Level
from baclassic._lobby import Lobby, Chooser
from baclassic._achievement import Achievement, AchievementSubsystem from baclassic._achievement import Achievement, AchievementSubsystem
__all__ = [ __all__ = [
'ClassicSubsystem', 'ClassicSubsystem',
'Campaign',
'Level',
'Lobby',
'Chooser',
'Achievement', 'Achievement',
'AchievementSubsystem', 'AchievementSubsystem',
] ]

View File

@ -16,6 +16,7 @@ import bascenev1
from babase._general import Call from babase._general import Call
from babase._appsubsystem import AppSubsystem from babase._appsubsystem import AppSubsystem
from babase._general import AppTime from babase._general import AppTime
from bascenev1 import _profile
import _baclassic import _baclassic
from baclassic._music import MusicSubsystem from baclassic._music import MusicSubsystem
from baclassic._accountv1 import AccountV1Subsystem from baclassic._accountv1 import AccountV1Subsystem
@ -26,12 +27,12 @@ from baclassic._tips import get_all_tips
from baclassic._store import StoreSubsystem from baclassic._store import StoreSubsystem
from baclassic._ui import UISubsystem from baclassic._ui import UISubsystem
from baclassic import _input from baclassic import _input
from baclassic import _profile
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Callable, Any, Sequence from typing import Callable, Any, Sequence
import babase import babase
import bauiv1
import baclassic import baclassic
from bastd.actor import spazappearance from bastd.actor import spazappearance
from baclassic._appdelegate import AppDelegate from baclassic._appdelegate import AppDelegate
@ -54,9 +55,9 @@ class ClassicSubsystem(AppSubsystem):
# baclassic/__init__.py. This way this version can be used for # baclassic/__init__.py. This way this version can be used for
# runtime via babase.app.classic which enforces handling of the # runtime via babase.app.classic which enforces handling of the
# package-not-present case. # package-not-present case.
from baclassic._level import Level from bascenev1._level import Level
from baclassic._campaign import Campaign from bascenev1._campaign import Campaign
from baclassic._lobby import Lobby, Chooser from bascenev1._lobby import Lobby, Chooser
from baclassic._music import MusicPlayMode # FIXME move 2 subsys from baclassic._music import MusicPlayMode # FIXME move 2 subsys
def __init__(self) -> None: def __init__(self) -> None:
@ -71,7 +72,7 @@ class ClassicSubsystem(AppSubsystem):
self.ui = UISubsystem() self.ui = UISubsystem()
# Co-op Campaigns. # Co-op Campaigns.
self.campaigns: dict[str, baclassic.Campaign] = {} self.campaigns: dict[str, bascenev1.Campaign] = {}
self.custom_coop_practice_games: list[str] = [] self.custom_coop_practice_games: list[str] = []
# Lobby. # Lobby.
@ -169,7 +170,7 @@ class ClassicSubsystem(AppSubsystem):
def on_app_launching(self) -> None: def on_app_launching(self) -> None:
"""Called when the app is first entering the launching state.""" """Called when the app is first entering the launching state."""
# pylint: disable=too-many-locals # pylint: disable=too-many-locals
from baclassic import _campaign from bascenev1 import _campaign
from bascenev1 import _map from bascenev1 import _map
from bastd.actor import spazappearance from bastd.actor import spazappearance
from bastd import maps as stdmaps from bastd import maps as stdmaps
@ -325,7 +326,7 @@ class ClassicSubsystem(AppSubsystem):
# FIXME: This should not be an actor attr. # FIXME: This should not be an actor attr.
activity.paused_text = None activity.paused_text = None
def add_coop_practice_level(self, level: baclassic.Level) -> None: def add_coop_practice_level(self, level: bascenev1.Level) -> None:
"""Adds an individual level to the 'practice' section in Co-op.""" """Adds an individual level to the 'practice' section in Co-op."""
# Assign this level to our catch-all campaign. # Assign this level to our catch-all campaign.
@ -523,7 +524,7 @@ class ClassicSubsystem(AppSubsystem):
return _tournament.get_tournament_prize_strings(entry) return _tournament.get_tournament_prize_strings(entry)
def getcampaign(self, name: str) -> baclassic.Campaign: def getcampaign(self, name: str) -> bascenev1.Campaign:
"""Return a campaign by name.""" """Return a campaign by name."""
return self.campaigns[name] return self.campaigns[name]
@ -751,6 +752,14 @@ class ClassicSubsystem(AppSubsystem):
return TeamSeriesVictoryScoreScreenActivity return TeamSeriesVictoryScoreScreenActivity
def get_team_victory_score_screen_activity(
self,
) -> type[bascenev1.Activity]:
"""(internal)"""
from bastd.activity.dualteamscore import TeamVictoryScoreScreenActivity
return TeamVictoryScoreScreenActivity
def get_free_for_all_victory_score_screen_activity( def get_free_for_all_victory_score_screen_activity(
self, self,
) -> type[bascenev1.Activity]: ) -> type[bascenev1.Activity]:
@ -760,3 +769,82 @@ class ClassicSubsystem(AppSubsystem):
) )
return FreeForAllVictoryScoreScreenActivity return FreeForAllVictoryScoreScreenActivity
def get_coop_join_activity(self) -> type[bascenev1.Activity]:
"""(internal)"""
from bastd.activity.coopjoin import CoopJoinActivity
return CoopJoinActivity
def get_coop_score_screen(self) -> type[bascenev1.Activity]:
"""(internal)"""
from bastd.activity.coopscore import CoopScoreScreen
return CoopScoreScreen
def get_multi_team_join_activity(self) -> type[bascenev1.Activity]:
"""(internal)"""
from bastd.activity.multiteamjoin import MultiTeamJoinActivity
return MultiTeamJoinActivity
def get_tutorial_activity(self) -> type[bascenev1.Activity]:
"""(internal)"""
from bastd.tutorial import TutorialActivity
return TutorialActivity
def tournament_entry_window(
self,
tournament_id: str,
tournament_activity: bascenev1.Activity | None = None,
position: tuple[float, float] = (0.0, 0.0),
delegate: Any = None,
scale: float | None = None,
offset: tuple[float, float] = (0.0, 0.0),
on_close_call: Callable[[], Any] | None = None,
) -> None:
"""(internal)"""
from bastd.ui.tournamententry import TournamentEntryWindow
TournamentEntryWindow(
tournament_id,
tournament_activity,
position,
delegate,
scale,
offset,
on_close_call,
)
def get_main_menu_session(self) -> type[bascenev1.Session]:
"""(internal)"""
from bastd.mainmenu import MainMenuSession
return MainMenuSession
def continues_window(
self,
activity: bascenev1.Activity,
cost: int,
continue_call: Callable[[], Any],
cancel_call: Callable[[], Any],
) -> None:
"""(internal)"""
from bastd.ui.continues import ContinuesWindow
ContinuesWindow(activity, cost, continue_call, cancel_call)
def profile_browser_window(
self,
transition: str = 'in_right',
in_main_menu: bool = True,
selected_profile: str | None = None,
origin_widget: bauiv1.Widget | None = None,
) -> None:
"""(internal)"""
from bastd.ui.profile.browser import ProfileBrowserWindow
ProfileBrowserWindow(
transition, in_main_menu, selected_profile, origin_widget
)

View File

@ -147,6 +147,9 @@ from bascenev1._freeforallsession import FreeForAllSession
from bascenev1._gameactivity import GameActivity from bascenev1._gameactivity import GameActivity
from bascenev1._score import ScoreType, ScoreConfig from bascenev1._score import ScoreType, ScoreConfig
from bascenev1._dualteamsession import DualTeamSession from bascenev1._dualteamsession import DualTeamSession
from bascenev1._lobby import Lobby, Chooser
from bascenev1._campaign import Campaign
from bascenev1._level import Level
from bascenev1._messages import ( from bascenev1._messages import (
UNHANDLED, UNHANDLED,
OutOfBoundsMessage, OutOfBoundsMessage,
@ -385,6 +388,10 @@ __all__ = [
'AppIntentExec', 'AppIntentExec',
'AppMode', 'AppMode',
'SceneV1AppMode', 'SceneV1AppMode',
'Lobby',
'Chooser',
'Campaign',
'Level',
] ]
# Sanity check: we want to keep ballistica's dependencies and # Sanity check: we want to keep ballistica's dependencies and

View File

@ -22,7 +22,6 @@ from bascenev1._player import Player
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any from typing import Any
import baclassic
import bascenev1 import bascenev1
PlayerT = TypeVar('PlayerT', bound=Player) PlayerT = TypeVar('PlayerT', bound=Player)

View File

@ -18,7 +18,7 @@ from bascenev1._music import MusicType, setmusic
if TYPE_CHECKING: if TYPE_CHECKING:
import babase import babase
import bascenev1 import bascenev1
from baclassic._lobby import JoinInfo from bascenev1._lobby import JoinInfo
class EndSessionActivity(Activity[EmptyPlayer, EmptyTeam]): class EndSessionActivity(Activity[EmptyPlayer, EmptyTeam]):
@ -41,14 +41,17 @@ class EndSessionActivity(Activity[EmptyPlayer, EmptyTeam]):
def on_begin(self) -> None: def on_begin(self) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.mainmenu import MainMenuSession
assert _babase.app.classic is not None
from babase._general import Call from babase._general import Call
main_menu_session = _babase.app.classic.get_main_menu_session()
super().on_begin() super().on_begin()
_babase.unlock_all_input() _babase.unlock_all_input()
assert _babase.app.classic is not None assert _babase.app.classic is not None
_babase.app.classic.ads.call_after_ad( _babase.app.classic.ads.call_after_ad(
Call(_bascenev1.new_host_session, MainMenuSession) Call(_bascenev1.new_host_session, main_menu_session)
) )
@ -110,10 +113,10 @@ class TransitionActivity(Activity[EmptyPlayer, EmptyTeam]):
def on_transition_in(self) -> None: def on_transition_in(self) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.actor import background # FIXME: Don't use bastd from here. from bastd.actor.background import Background
super().on_transition_in() super().on_transition_in()
self._background = background.Background( self._background = Background(
fade_time=0.5, start_faded=False, show_logo=False fade_time=0.5, start_faded=False, show_logo=False
) )

View File

@ -10,10 +10,10 @@ import _babase
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any from typing import Any
import babase import babase
import baclassic import bascenev1
def register_campaign(campaign: baclassic.Campaign) -> None: def register_campaign(campaign: bascenev1.Campaign) -> None:
"""Register a new campaign.""" """Register a new campaign."""
assert _babase.app.classic is not None assert _babase.app.classic is not None
_babase.app.classic.campaigns[campaign.name] = campaign _babase.app.classic.campaigns[campaign.name] = campaign
@ -29,11 +29,11 @@ class Campaign:
self, self,
name: str, name: str,
sequential: bool = True, sequential: bool = True,
levels: list[baclassic.Level] | None = None, levels: list[bascenev1.Level] | None = None,
): ):
self._name = name self._name = name
self._sequential = sequential self._sequential = sequential
self._levels: list[baclassic.Level] = [] self._levels: list[bascenev1.Level] = []
if levels is not None: if levels is not None:
for level in levels: for level in levels:
self.addlevel(level) self.addlevel(level)
@ -49,7 +49,7 @@ class Campaign:
return self._sequential return self._sequential
def addlevel( def addlevel(
self, level: baclassic.Level, index: int | None = None self, level: bascenev1.Level, index: int | None = None
) -> None: ) -> None:
"""Adds a baclassic.Level to the Campaign.""" """Adds a baclassic.Level to the Campaign."""
if level.campaign is not None: if level.campaign is not None:
@ -61,11 +61,11 @@ class Campaign:
self._levels.insert(index, level) self._levels.insert(index, level)
@property @property
def levels(self) -> list[baclassic.Level]: def levels(self) -> list[bascenev1.Level]:
"""The list of baclassic.Level-s in the Campaign.""" """The list of baclassic.Level-s in the Campaign."""
return self._levels return self._levels
def getlevel(self, name: str) -> baclassic.Level: def getlevel(self, name: str) -> bascenev1.Level:
"""Return a contained baclassic.Level by name.""" """Return a contained baclassic.Level by name."""
from babase import _error from babase import _error
@ -104,7 +104,7 @@ class Campaign:
def init_campaigns() -> None: def init_campaigns() -> None:
"""Fill out initial default Campaigns.""" """Fill out initial default Campaigns."""
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from baclassic._level import Level from bascenev1._level import Level
from bastd.game.onslaught import OnslaughtGame from bastd.game.onslaught import OnslaughtGame
from bastd.game.football import FootballCoopGame from bastd.game.football import FootballCoopGame
from bastd.game.runaround import RunaroundGame from bastd.game.runaround import RunaroundGame

View File

@ -15,7 +15,6 @@ if TYPE_CHECKING:
from typing import Sequence from typing import Sequence
from bastd.actor.playerspaz import PlayerSpaz from bastd.actor.playerspaz import PlayerSpaz
import babase import babase
import baclassic
import bascenev1 import bascenev1
PlayerT = TypeVar('PlayerT', bound='bascenev1.Player') PlayerT = TypeVar('PlayerT', bound='bascenev1.Player')

View File

@ -12,7 +12,6 @@ from bascenev1._session import Session
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Callable, Sequence from typing import Any, Callable, Sequence
import babase import babase
import baclassic
import bascenev1 import bascenev1
TEAM_COLORS = [(0.2, 0.4, 1.6)] TEAM_COLORS = [(0.2, 0.4, 1.6)]
@ -36,27 +35,29 @@ class CoopSession(Session):
# Note: even though these are instance vars, we annotate them at the # Note: even though these are instance vars, we annotate them at the
# class level so that docs generation can access their types. # class level so that docs generation can access their types.
campaign: baclassic.Campaign | None campaign: bascenev1.Campaign | None
"""The baclassic.Campaign instance this Session represents, or None if """The baclassic.Campaign instance this Session represents, or None if
there is no associated Campaign.""" there is no associated Campaign."""
def __init__(self) -> None: def __init__(self) -> None:
"""Instantiate a co-op mode session.""" """Instantiate a co-op mode session."""
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.activity.coopjoin import CoopJoinActivity
_babase.increment_analytics_count('Co-op session start') _babase.increment_analytics_count('Co-op session start')
app = _babase.app app = _babase.app
assert app.classic is not None classic = app.classic
assert classic is not None
coop_join_activity = classic.get_coop_join_activity()
# If they passed in explicit min/max, honor that. # If they passed in explicit min/max, honor that.
# Otherwise defer to user overrides or defaults. # Otherwise defer to user overrides or defaults.
if 'min_players' in app.classic.coop_session_args: if 'min_players' in classic.coop_session_args:
min_players = app.classic.coop_session_args['min_players'] min_players = classic.coop_session_args['min_players']
else: else:
min_players = 1 min_players = 1
if 'max_players' in app.classic.coop_session_args: if 'max_players' in classic.coop_session_args:
max_players = app.classic.coop_session_args['max_players'] max_players = classic.coop_session_args['max_players']
else: else:
max_players = app.config.get('Coop Game Max Players', 4) max_players = app.config.get('Coop Game Max Players', 4)
@ -72,21 +73,21 @@ class CoopSession(Session):
) )
# Tournament-ID if we correspond to a co-op tournament (otherwise None) # Tournament-ID if we correspond to a co-op tournament (otherwise None)
self.tournament_id: str | None = app.classic.coop_session_args.get( self.tournament_id: str | None = classic.coop_session_args.get(
'tournament_id' 'tournament_id'
) )
self.campaign = app.classic.getcampaign( self.campaign = classic.getcampaign(
app.classic.coop_session_args['campaign'] classic.coop_session_args['campaign']
) )
self.campaign_level_name: str = app.classic.coop_session_args['level'] self.campaign_level_name: str = classic.coop_session_args['level']
self._ran_tutorial_activity = False self._ran_tutorial_activity = False
self._tutorial_activity: bascenev1.Activity | None = None self._tutorial_activity: bascenev1.Activity | None = None
self._custom_menu_ui: list[dict[str, Any]] = [] self._custom_menu_ui: list[dict[str, Any]] = []
# Start our joining screen. # Start our joining screen.
self.setactivity(_bascenev1.newactivity(CoopJoinActivity)) self.setactivity(_bascenev1.newactivity(coop_join_activity))
self._next_game_instance: bascenev1.GameActivity | None = None self._next_game_instance: bascenev1.GameActivity | None = None
self._next_game_level_name: str | None = None self._next_game_level_name: str | None = None
@ -112,6 +113,9 @@ class CoopSession(Session):
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bascenev1._gameactivity import GameActivity from bascenev1._gameactivity import GameActivity
classic = _babase.app.classic
assert classic is not None
# Instantiate levels we may be running soon to let them load in the bg. # Instantiate levels we may be running soon to let them load in the bg.
# Build an instance for the current level. # Build an instance for the current level.
@ -134,7 +138,7 @@ class CoopSession(Session):
levels = self.campaign.levels levels = self.campaign.levels
level = self.campaign.getlevel(self.campaign_level_name) level = self.campaign.getlevel(self.campaign_level_name)
nextlevel: baclassic.Level | None nextlevel: bascenev1.Level | None
if level.index < len(levels) - 1: if level.index < len(levels) - 1:
nextlevel = levels[level.index + 1] nextlevel = levels[level.index + 1]
else: else:
@ -166,9 +170,8 @@ class CoopSession(Session):
and self._tutorial_activity is None and self._tutorial_activity is None
and not self._ran_tutorial_activity and not self._ran_tutorial_activity
): ):
from bastd.tutorial import TutorialActivity tutorial_activity = classic.get_tutorial_activity()
self._tutorial_activity = _bascenev1.newactivity(tutorial_activity)
self._tutorial_activity = _bascenev1.newactivity(TutorialActivity)
def get_custom_menu_entries(self) -> list[dict[str, Any]]: def get_custom_menu_entries(self) -> list[dict[str, Any]]:
return self._custom_menu_ui return self._custom_menu_ui
@ -220,14 +223,14 @@ class CoopSession(Session):
self, resume_callback: Callable[[], Any] self, resume_callback: Callable[[], Any]
) -> None: ) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.ui.tournamententry import TournamentEntryWindow
from bascenev1._gameactivity import GameActivity from bascenev1._gameactivity import GameActivity
assert _babase.app.classic is not None
activity = self.getactivity() activity = self.getactivity()
if activity is not None and not activity.expired: if activity is not None and not activity.expired:
assert self.tournament_id is not None assert self.tournament_id is not None
assert isinstance(activity, GameActivity) assert isinstance(activity, GameActivity)
TournamentEntryWindow( _babase.app.classic.tournament_entry_window(
tournament_id=self.tournament_id, tournament_id=self.tournament_id,
tournament_activity=activity, tournament_activity=activity,
on_close_call=resume_callback, on_close_call=resume_callback,
@ -267,8 +270,6 @@ class CoopSession(Session):
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from babase._language import Lstr from babase._language import Lstr
from babase._general import WeakCall from babase._general import WeakCall
from bastd.tutorial import TutorialActivity
from bastd.activity.coopscore import CoopScoreScreen
from bascenev1._gameresults import GameResults from bascenev1._gameresults import GameResults
from bascenev1._player import PlayerInfo from bascenev1._player import PlayerInfo
from bascenev1._activitytypes import JoinActivity, TransitionActivity from bascenev1._activitytypes import JoinActivity, TransitionActivity
@ -276,6 +277,11 @@ class CoopSession(Session):
from bascenev1._score import ScoreType from bascenev1._score import ScoreType
app = _babase.app app = _babase.app
classic = app.classic
assert classic is not None
tutorial_activity = classic.get_tutorial_activity()
coop_score_screen = classic.get_coop_score_screen()
# If we're running a TeamGameActivity we'll have a GameResults # If we're running a TeamGameActivity we'll have a GameResults
# as results. Otherwise its an old CoopGameActivity so its giving # as results. Otherwise its an old CoopGameActivity so its giving
@ -297,7 +303,7 @@ class CoopSession(Session):
# If we're in a between-round activity or a restart-activity, # If we're in a between-round activity or a restart-activity,
# hop into a round. # hop into a round.
if isinstance( if isinstance(
activity, (JoinActivity, CoopScoreScreen, TransitionActivity) activity, (JoinActivity, coop_score_screen, TransitionActivity)
): ):
if outcome == 'next_level': if outcome == 'next_level':
if self._next_game_instance is None: if self._next_game_instance is None:
@ -357,7 +363,7 @@ class CoopSession(Session):
# If we were in a tutorial, just pop a transition to get to the # If we were in a tutorial, just pop a transition to get to the
# actual round. # actual round.
elif isinstance(activity, TutorialActivity): elif isinstance(activity, tutorial_activity):
self.setactivity(_bascenev1.newactivity(TransitionActivity)) self.setactivity(_bascenev1.newactivity(TransitionActivity))
else: else:
playerinfos: list[bascenev1.PlayerInfo] playerinfos: list[bascenev1.PlayerInfo]
@ -424,7 +430,7 @@ class CoopSession(Session):
else: else:
self.setactivity( self.setactivity(
_bascenev1.newactivity( _bascenev1.newactivity(
CoopScoreScreen, coop_score_screen,
{ {
'playerinfos': playerinfos, 'playerinfos': playerinfos,
'score': score, 'score': score,

View File

@ -34,17 +34,21 @@ class DualTeamSession(MultiTeamSession):
def _switch_to_score_screen(self, results: bascenev1.GameResults) -> None: def _switch_to_score_screen(self, results: bascenev1.GameResults) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.activity.drawscore import DrawScoreScreenActivity classic = _babase.app.classic
from bastd.activity.dualteamscore import TeamVictoryScoreScreenActivity assert classic is not None
from bastd.activity.multiteamvictory import (
TeamSeriesVictoryScoreScreenActivity,
)
draw_score_screen_activity = classic.get_draw_score_screen_activity()
team_victory_score_screen_activity = (
classic.get_team_series_victory_score_screen_activity()
)
team_series_victory_score_screen_activity = (
classic.get_team_series_victory_score_screen_activity()
)
winnergroups = results.winnergroups winnergroups = results.winnergroups
# If everyone has the same score, call it a draw. # If everyone has the same score, call it a draw.
if len(winnergroups) < 2: if len(winnergroups) < 2:
self.setactivity(_bascenev1.newactivity(DrawScoreScreenActivity)) self.setactivity(_bascenev1.newactivity(draw_score_screen_activity))
else: else:
winner = winnergroups[0].teams[0] winner = winnergroups[0].teams[0]
winner.customdata['score'] += 1 winner.customdata['score'] += 1
@ -53,12 +57,13 @@ class DualTeamSession(MultiTeamSession):
if winner.customdata['score'] >= (self._series_length - 1) / 2 + 1: if winner.customdata['score'] >= (self._series_length - 1) / 2 + 1:
self.setactivity( self.setactivity(
_bascenev1.newactivity( _bascenev1.newactivity(
TeamSeriesVictoryScoreScreenActivity, {'winner': winner} team_series_victory_score_screen_activity,
{'winner': winner},
) )
) )
else: else:
self.setactivity( self.setactivity(
_bascenev1.newactivity( _bascenev1.newactivity(
TeamVictoryScoreScreenActivity, {'winner': winner} team_victory_score_screen_activity, {'winner': winner}
) )
) )

View File

@ -27,7 +27,6 @@ if TYPE_CHECKING:
from bastd.actor.bomb import TNTSpawner from bastd.actor.bomb import TNTSpawner
import babase import babase
import bascenev1 import bascenev1
import baclassic
PlayerT = TypeVar('PlayerT', bound='bascenev1.Player') PlayerT = TypeVar('PlayerT', bound='bascenev1.Player')
TeamT = TypeVar('TeamT', bound='bascenev1.Team') TeamT = TypeVar('TeamT', bound='bascenev1.Team')
@ -435,9 +434,12 @@ class GameActivity(Activity[PlayerT, TeamT]):
""" """
# pylint: disable=too-many-nested-blocks # pylint: disable=too-many-nested-blocks
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.ui.continues import ContinuesWindow
from bascenev1._coopsession import CoopSession from bascenev1._coopsession import CoopSession
classic = _babase.app.classic
assert classic is not None
continues_window = classic.continues_window
plus = _babase.app.plus plus = _babase.app.plus
try: try:
if plus is not None and plus.get_v1_account_misc_read_val( if plus is not None and plus.get_v1_account_misc_read_val(
@ -464,7 +466,7 @@ class GameActivity(Activity[PlayerT, TeamT]):
with _babase.ContextRef.empty(): with _babase.ContextRef.empty():
_babase.apptimer( _babase.apptimer(
0.5, 0.5,
lambda: ContinuesWindow( lambda: continues_window(
self, self,
self._continue_cost, self._continue_cost,
continue_call=WeakCall( continue_call=WeakCall(

View File

@ -17,9 +17,9 @@ if TYPE_CHECKING:
def launch_main_menu_session() -> None: def launch_main_menu_session() -> None:
from bastd.mainmenu import MainMenuSession assert _babase.app.classic is not None
_bascenev1.new_host_session(MainMenuSession) _bascenev1.new_host_session(_babase.app.classic.get_main_menu_session())
def get_player_icon(sessionplayer: bascenev1.SessionPlayer) -> dict[str, Any]: def get_player_icon(sessionplayer: bascenev1.SessionPlayer) -> dict[str, Any]:

View File

@ -7,18 +7,14 @@ import copy
import weakref import weakref
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import _bauiv1
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any from typing import Any
import baclassic
import bascenev1 import bascenev1
import bauiv1
class Level: class Level:
"""An entry in a baclassic.Campaign consisting of a name, game type, and settings. """An entry in a bascenev1.Campaign.
Category: **Gameplay Classes** Category: **Gameplay Classes**
""" """
@ -36,7 +32,7 @@ class Level:
self._settings = settings self._settings = settings
self._preview_texture_name = preview_texture_name self._preview_texture_name = preview_texture_name
self._displayname = displayname self._displayname = displayname
self._campaign: weakref.ref[baclassic.Campaign] | None = None self._campaign: weakref.ref[bascenev1.Campaign] | None = None
self._index: int | None = None self._index: int | None = None
self._score_version_string: str | None = None self._score_version_string: str | None = None
@ -63,9 +59,9 @@ class Level:
"""The preview texture name for this Level.""" """The preview texture name for this Level."""
return self._preview_texture_name return self._preview_texture_name
def get_preview_texture(self) -> bauiv1.Texture: # def get_preview_texture(self) -> bauiv1.Texture:
"""Load/return the preview Texture for this Level.""" # """Load/return the preview Texture for this Level."""
return _bauiv1.gettexture(self._preview_texture_name) # return _bauiv1.gettexture(self._preview_texture_name)
@property @property
def displayname(self) -> bascenev1.Lstr: def displayname(self) -> bascenev1.Lstr:
@ -90,7 +86,7 @@ class Level:
return self._gametype return self._gametype
@property @property
def campaign(self) -> baclassic.Campaign | None: def campaign(self) -> bascenev1.Campaign | None:
"""The baclassic.Campaign this Level is associated with, or None.""" """The baclassic.Campaign this Level is associated with, or None."""
return None if self._campaign is None else self._campaign() return None if self._campaign is None else self._campaign()
@ -174,7 +170,7 @@ class Level:
assert isinstance(val, dict) assert isinstance(val, dict)
return val return val
def set_campaign(self, campaign: baclassic.Campaign, index: int) -> None: def set_campaign(self, campaign: bascenev1.Campaign, index: int) -> None:
"""For use by baclassic.Campaign when adding levels to itself. """For use by baclassic.Campaign when adding levels to itself.
(internal)""" (internal)"""

View File

@ -13,14 +13,13 @@ import _babase
from babase._error import print_exception, print_error, NotFoundError from babase._error import print_exception, print_error, NotFoundError
from babase._language import Lstr from babase._language import Lstr
from babase._mgen.enums import SpecialChar, InputType from babase._mgen.enums import SpecialChar, InputType
from bascenev1._gameutils import animate, animate_array
import _bascenev1 import _bascenev1
from baclassic._profile import get_player_profile_colors from bascenev1._profile import get_player_profile_colors
from bascenev1._gameutils import animate, animate_array
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Sequence from typing import Any, Sequence
import baclassic
import bascenev1 import bascenev1
MAX_QUICK_CHANGE_COUNT = 30 MAX_QUICK_CHANGE_COUNT = 30
@ -32,7 +31,7 @@ QUICK_CHANGE_RESET_INTERVAL = 1.0
class JoinInfo: class JoinInfo:
"""Display useful info for joiners.""" """Display useful info for joiners."""
def __init__(self, lobby: baclassic.Lobby): def __init__(self, lobby: bascenev1.Lobby):
from bascenev1._nodeactor import NodeActor from bascenev1._nodeactor import NodeActor
from babase._general import WeakCall from babase._general import WeakCall
@ -121,8 +120,6 @@ class JoinInfo:
self._timer = _bascenev1.Timer(4.0, WeakCall(self._update), repeat=True) self._timer = _bascenev1.Timer(4.0, WeakCall(self._update), repeat=True)
def _update_for_keyboard(self, keyboard: bascenev1.InputDevice) -> None: def _update_for_keyboard(self, keyboard: bascenev1.InputDevice) -> None:
from baclassic import _input
classic = _babase.app.classic classic = _babase.app.classic
assert classic is not None assert classic is not None
@ -164,7 +161,7 @@ class JoinInfo:
class PlayerReadyMessage: class PlayerReadyMessage:
"""Tells an object a player has been selected from the given chooser.""" """Tells an object a player has been selected from the given chooser."""
chooser: baclassic.Chooser chooser: bascenev1.Chooser
@dataclass @dataclass
@ -354,7 +351,7 @@ class Chooser:
): ):
app.classic.lobby_random_profile_index += 1 app.classic.lobby_random_profile_index += 1
if app.classic.lobby_random_profile_index < len(profilenames): if app.classic.lobby_random_profile_index < len(profilenames):
profileindex = app.classic.lobby_random_profile_index profileindex: int = app.classic.lobby_random_profile_index
app.classic.lobby_random_profile_index += 1 app.classic.lobby_random_profile_index += 1
return profileindex return profileindex
assert '_random' in profilenames assert '_random' in profilenames
@ -384,14 +381,14 @@ class Chooser:
return self.lobby.sessionteams[self._selected_team_index] return self.lobby.sessionteams[self._selected_team_index]
@property @property
def lobby(self) -> baclassic.Lobby: def lobby(self) -> bascenev1.Lobby:
"""The chooser's baclassic.Lobby.""" """The chooser's baclassic.Lobby."""
lobby = self._lobby() lobby = self._lobby()
if lobby is None: if lobby is None:
raise NotFoundError('Lobby does not exist.') raise NotFoundError('Lobby does not exist.')
return lobby return lobby
def get_lobby(self) -> baclassic.Lobby | None: def get_lobby(self) -> bascenev1.Lobby | None:
"""Return this chooser's lobby if it still exists; otherwise None.""" """Return this chooser's lobby if it still exists; otherwise None."""
return self._lobby() return self._lobby()
@ -581,15 +578,17 @@ class Chooser:
def _set_ready(self, ready: bool) -> None: def _set_ready(self, ready: bool) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.ui.profile import browser as pbrowser
from babase._general import Call from babase._general import Call
classic = _babase.app.classic
assert classic is not None
profilename = self._profilenames[self._profileindex] profilename = self._profilenames[self._profileindex]
# Handle '_edit' as a special case. # Handle '_edit' as a special case.
if profilename == '_edit' and ready: if profilename == '_edit' and ready:
with _babase.ContextRef.empty(): with _babase.ContextRef.empty():
pbrowser.ProfileBrowserWindow(in_main_menu=False) classic.profile_browser_window(in_main_menu=False)
# Give their input-device UI ownership too # Give their input-device UI ownership too
# (prevent someone else from snatching it in crowded games) # (prevent someone else from snatching it in crowded games)

View File

@ -15,7 +15,6 @@ if TYPE_CHECKING:
from typing import Sequence, Any from typing import Sequence, Any
import babase import babase
import baclassic
import bascenev1 import bascenev1
@ -66,7 +65,8 @@ def get_map_class(name: str) -> type[Map]:
assert _babase.app.classic is not None assert _babase.app.classic is not None
name = get_filtered_map_name(name) name = get_filtered_map_name(name)
try: try:
return _babase.app.classic.maps[name] mapclass: type[Map] = _babase.app.classic.maps[name]
return mapclass
except KeyError: except KeyError:
from babase import _error from babase import _error

View File

@ -41,12 +41,14 @@ class MultiTeamSession(Session):
"""Set up playlists & launch a bascenev1.Activity to accept joiners.""" """Set up playlists & launch a bascenev1.Activity to accept joiners."""
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bascenev1 import _playlist from bascenev1 import _playlist
from bastd.activity.multiteamjoin import MultiTeamJoinActivity
app = _babase.app app = _babase.app
assert app.classic is not None classic = app.classic
assert classic is not None
cfg = app.config cfg = app.config
multi_team_join_activity = classic.get_multi_team_join_activity()
if self.use_teams: if self.use_teams:
team_names = cfg.get('Custom Team Names', DEFAULT_TEAM_NAMES) team_names = cfg.get('Custom Team Names', DEFAULT_TEAM_NAMES)
team_colors = cfg.get('Custom Team Colors', DEFAULT_TEAM_COLORS) team_colors = cfg.get('Custom Team Colors', DEFAULT_TEAM_COLORS)
@ -65,18 +67,18 @@ class MultiTeamSession(Session):
max_players=self.get_max_players(), max_players=self.get_max_players(),
) )
self._series_length = app.classic.teams_series_length self._series_length: int = classic.teams_series_length
self._ffa_series_length = app.classic.ffa_series_length self._ffa_series_length: int = classic.ffa_series_length
show_tutorial = cfg.get('Show Tutorial', True) show_tutorial = cfg.get('Show Tutorial', True)
self._tutorial_activity_instance: bascenev1.Activity | None self._tutorial_activity_instance: bascenev1.Activity | None
if show_tutorial: if show_tutorial:
from bastd.tutorial import TutorialActivity tutorial_activity = classic.get_tutorial_activity()
# Get this loading. # Get this loading.
self._tutorial_activity_instance = _bascenev1.newactivity( self._tutorial_activity_instance = _bascenev1.newactivity(
TutorialActivity tutorial_activity
) )
else: else:
self._tutorial_activity_instance = None self._tutorial_activity_instance = None
@ -131,7 +133,7 @@ class MultiTeamSession(Session):
self._instantiate_next_game() self._instantiate_next_game()
# Start in our custom join screen. # Start in our custom join screen.
self.setactivity(_bascenev1.newactivity(MultiTeamJoinActivity)) self.setactivity(_bascenev1.newactivity(multi_team_join_activity))
def get_ffa_series_length(self) -> int: def get_ffa_series_length(self) -> int:
"""Return free-for-all series length.""" """Return free-for-all series length."""
@ -173,16 +175,19 @@ class MultiTeamSession(Session):
self, activity: bascenev1.Activity, results: Any self, activity: bascenev1.Activity, results: Any
) -> None: ) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.tutorial import TutorialActivity
from bastd.activity.multiteamvictory import (
TeamSeriesVictoryScoreScreenActivity,
)
from bascenev1._activitytypes import ( from bascenev1._activitytypes import (
TransitionActivity, TransitionActivity,
JoinActivity, JoinActivity,
ScoreScreenActivity, ScoreScreenActivity,
) )
classic = _babase.app.classic
assert classic is not None
tutorial_activity = classic.get_tutorial_activity()
team_series_victory_score_screen_activity = (
classic.get_team_series_victory_score_screen_activity()
)
# If we have a tutorial to show, that's the first thing we do no # If we have a tutorial to show, that's the first thing we do no
# matter what. # matter what.
if self._tutorial_activity_instance is not None: if self._tutorial_activity_instance is not None:
@ -192,7 +197,7 @@ class MultiTeamSession(Session):
# If we're leaving the tutorial activity, pop a transition activity # If we're leaving the tutorial activity, pop a transition activity
# to transition us into a round gracefully (otherwise we'd snap from # to transition us into a round gracefully (otherwise we'd snap from
# one terrain to another instantly). # one terrain to another instantly).
elif isinstance(activity, TutorialActivity): elif isinstance(activity, tutorial_activity):
self.setactivity(_bascenev1.newactivity(TransitionActivity)) self.setactivity(_bascenev1.newactivity(TransitionActivity))
# If we're in a between-round activity or a restart-activity, hop # If we're in a between-round activity or a restart-activity, hop
@ -201,7 +206,7 @@ class MultiTeamSession(Session):
activity, (JoinActivity, TransitionActivity, ScoreScreenActivity) activity, (JoinActivity, TransitionActivity, ScoreScreenActivity)
): ):
# If we're coming from a series-end activity, reset scores. # If we're coming from a series-end activity, reset scores.
if isinstance(activity, TeamSeriesVictoryScoreScreenActivity): if isinstance(activity, team_series_victory_score_screen_activity):
self.stats.reset() self.stats.reset()
self._game_number = 0 self._game_number = 0
for team in self.sessionteams: for team in self.sessionteams:

View File

@ -16,7 +16,6 @@ if TYPE_CHECKING:
from typing import Sequence, Any from typing import Sequence, Any
import babase import babase
import baclassic
import bascenev1 import bascenev1
@ -47,7 +46,7 @@ class Session:
# at the class level so that looks better and nobody get lost while # at the class level so that looks better and nobody get lost while
# reading large __init__ # reading large __init__
lobby: baclassic.Lobby lobby: bascenev1.Lobby
"""The baclassic.Lobby instance where new bascenev1.Player-s go to select """The baclassic.Lobby instance where new bascenev1.Player-s go to select
a Profile/Team/etc. before being added to games. a Profile/Team/etc. before being added to games.
Be aware this value may be None if a Session does not allow Be aware this value may be None if a Session does not allow
@ -93,12 +92,12 @@ class Session:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
# pylint: disable=too-many-branches # pylint: disable=too-many-branches
from efro.util import empty_weakref from efro.util import empty_weakref
from baclassic._lobby import Lobby
from bascenev1._dependency import ( from bascenev1._dependency import (
Dependency, Dependency,
AssetPackage, AssetPackage,
DependencyError, DependencyError,
) )
from bascenev1._lobby import Lobby
from bascenev1._stats import Stats from bascenev1._stats import Stats
from bascenev1._gameactivity import GameActivity from bascenev1._gameactivity import GameActivity
from bascenev1._activity import Activity from bascenev1._activity import Activity
@ -409,7 +408,6 @@ class Session:
will replace the old. will replace the old.
""" """
from babase._general import Call from babase._general import Call
from babase._mgen.enums import TimeType
# Only pay attention if this is coming from our current activity. # Only pay attention if this is coming from our current activity.
if activity is not self._activity_retained: if activity is not self._activity_retained:
@ -436,7 +434,7 @@ class Session:
def handlemessage(self, msg: Any) -> Any: def handlemessage(self, msg: Any) -> Any:
"""General message handling; can be passed any message object.""" """General message handling; can be passed any message object."""
from baclassic._lobby import PlayerReadyMessage from bascenev1._lobby import PlayerReadyMessage
from bascenev1._messages import PlayerProfilesChangedMessage, UNHANDLED from bascenev1._messages import PlayerProfilesChangedMessage, UNHANDLED
if isinstance(msg, PlayerReadyMessage): if isinstance(msg, PlayerReadyMessage):
@ -629,7 +627,7 @@ class Session:
self._activity_should_end_immediately_delay, self._activity_should_end_immediately_delay,
) )
def _on_player_ready(self, chooser: baclassic.Chooser) -> None: def _on_player_ready(self, chooser: bascenev1.Chooser) -> None:
"""Called when a bascenev1.Player has checked themself ready.""" """Called when a bascenev1.Player has checked themself ready."""
lobby = chooser.lobby lobby = chooser.lobby
activity = self._activity_weak() activity = self._activity_weak()
@ -691,7 +689,7 @@ class Session:
_babase.pushcall(self.begin_next_activity) _babase.pushcall(self.begin_next_activity)
def _add_chosen_player( def _add_chosen_player(
self, chooser: baclassic.Chooser self, chooser: bascenev1.Chooser
) -> bascenev1.SessionPlayer: ) -> bascenev1.SessionPlayer:
from bascenev1._team import SessionTeam from bascenev1._team import SessionTeam

View File

@ -50,7 +50,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
self._menu_icon_texture = bui.gettexture('menuIcon') self._menu_icon_texture = bui.gettexture('menuIcon')
self._next_level_icon_texture = bui.gettexture('nextLevelIcon') self._next_level_icon_texture = bui.gettexture('nextLevelIcon')
self._campaign: baclassic.Campaign = settings['campaign'] self._campaign: bs.Campaign = settings['campaign']
self._have_achievements = ( self._have_achievements = (
bs.app.classic is not None bs.app.classic is not None

View File

@ -87,7 +87,9 @@ class GameButton:
size=(image_width, image_width * 0.5), size=(image_width, image_width * 0.5),
mesh_transparent=window.lsbt, mesh_transparent=window.lsbt,
mesh_opaque=window.lsbo, mesh_opaque=window.lsbo,
texture=campaign.getlevel(levelname).get_preview_texture(), texture=bui.gettexture(
campaign.getlevel(levelname).preview_texture_name
),
mask_texture=bui.gettexture('mapPreviewMask'), mask_texture=bui.gettexture('mapPreviewMask'),
) )

View File

@ -584,7 +584,9 @@ class TournamentButton:
bui.textwidget(edit=self.button_text, text=txt) bui.textwidget(edit=self.button_text, text=txt)
bui.imagewidget( bui.imagewidget(
edit=self.image, edit=self.image,
texture=campaign.getlevel(levelname).get_preview_texture(), texture=bui.gettexture(
campaign.getlevel(levelname).preview_texture_name
),
opacity=1.0 if enabled else 0.5, opacity=1.0 if enabled else 0.5,
) )