mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-25 00:13:27 +08:00
more scene_v1 untangling
This commit is contained in:
parent
1211c6787a
commit
e1dd1d1d26
@ -66,13 +66,9 @@
|
||||
"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__/_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__/_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__/_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__/_store.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/_appdelegate.py",
|
||||
"ba_data/python/baclassic/_benchmark.py",
|
||||
"ba_data/python/baclassic/_campaign.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/_net.py",
|
||||
"ba_data/python/baclassic/_profile.py",
|
||||
"ba_data/python/baclassic/_servermode.py",
|
||||
"ba_data/python/baclassic/_store.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__/_actor.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__/_coopgame.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__/_gameutils.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__/_messages.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__/_playlist.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__/_session.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/_actor.py",
|
||||
"ba_data/python/bascenev1/_appmode.py",
|
||||
"ba_data/python/bascenev1/_campaign.py",
|
||||
"ba_data/python/bascenev1/_collision.py",
|
||||
"ba_data/python/bascenev1/_coopgame.py",
|
||||
"ba_data/python/bascenev1/_coopsession.py",
|
||||
@ -176,6 +173,8 @@
|
||||
"ba_data/python/bascenev1/_gameresults.py",
|
||||
"ba_data/python/bascenev1/_gameutils.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/_messages.py",
|
||||
"ba_data/python/bascenev1/_multiteamsession.py",
|
||||
@ -184,6 +183,7 @@
|
||||
"ba_data/python/bascenev1/_player.py",
|
||||
"ba_data/python/bascenev1/_playlist.py",
|
||||
"ba_data/python/bascenev1/_powerup.py",
|
||||
"ba_data/python/bascenev1/_profile.py",
|
||||
"ba_data/python/bascenev1/_score.py",
|
||||
"ba_data/python/bascenev1/_session.py",
|
||||
"ba_data/python/bascenev1/_settings.py",
|
||||
|
||||
@ -181,13 +181,9 @@ SCRIPT_TARGETS_PY_PUBLIC = \
|
||||
$(BUILD_DIR)/ba_data/python/baclassic/_analytics.py \
|
||||
$(BUILD_DIR)/ba_data/python/baclassic/_appdelegate.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/_level.py \
|
||||
$(BUILD_DIR)/ba_data/python/baclassic/_lobby.py \
|
||||
$(BUILD_DIR)/ba_data/python/baclassic/_music.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/_store.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/_actor.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/_coopgame.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/_gameutils.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/_messages.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/_playlist.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/_session.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__/_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__/_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__/_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__/_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__/_store.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__/_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__/_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__/_coopgame.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__/_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__/_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__/_messages.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__/_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__/_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__/_session.cpython-311.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/bascenev1/__pycache__/_settings.cpython-311.opt-1.pyc \
|
||||
|
||||
@ -31,17 +31,10 @@ directly, it will most likely not work without classic present.
|
||||
import logging
|
||||
|
||||
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
|
||||
|
||||
__all__ = [
|
||||
'ClassicSubsystem',
|
||||
'Campaign',
|
||||
'Level',
|
||||
'Lobby',
|
||||
'Chooser',
|
||||
'Achievement',
|
||||
'AchievementSubsystem',
|
||||
]
|
||||
|
||||
@ -16,6 +16,7 @@ import bascenev1
|
||||
from babase._general import Call
|
||||
from babase._appsubsystem import AppSubsystem
|
||||
from babase._general import AppTime
|
||||
from bascenev1 import _profile
|
||||
import _baclassic
|
||||
from baclassic._music import MusicSubsystem
|
||||
from baclassic._accountv1 import AccountV1Subsystem
|
||||
@ -26,12 +27,12 @@ from baclassic._tips import get_all_tips
|
||||
from baclassic._store import StoreSubsystem
|
||||
from baclassic._ui import UISubsystem
|
||||
from baclassic import _input
|
||||
from baclassic import _profile
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Callable, Any, Sequence
|
||||
|
||||
import babase
|
||||
import bauiv1
|
||||
import baclassic
|
||||
from bastd.actor import spazappearance
|
||||
from baclassic._appdelegate import AppDelegate
|
||||
@ -54,9 +55,9 @@ class ClassicSubsystem(AppSubsystem):
|
||||
# baclassic/__init__.py. This way this version can be used for
|
||||
# runtime via babase.app.classic which enforces handling of the
|
||||
# package-not-present case.
|
||||
from baclassic._level import Level
|
||||
from baclassic._campaign import Campaign
|
||||
from baclassic._lobby import Lobby, Chooser
|
||||
from bascenev1._level import Level
|
||||
from bascenev1._campaign import Campaign
|
||||
from bascenev1._lobby import Lobby, Chooser
|
||||
from baclassic._music import MusicPlayMode # FIXME move 2 subsys
|
||||
|
||||
def __init__(self) -> None:
|
||||
@ -71,7 +72,7 @@ class ClassicSubsystem(AppSubsystem):
|
||||
self.ui = UISubsystem()
|
||||
|
||||
# Co-op Campaigns.
|
||||
self.campaigns: dict[str, baclassic.Campaign] = {}
|
||||
self.campaigns: dict[str, bascenev1.Campaign] = {}
|
||||
self.custom_coop_practice_games: list[str] = []
|
||||
|
||||
# Lobby.
|
||||
@ -169,7 +170,7 @@ class ClassicSubsystem(AppSubsystem):
|
||||
def on_app_launching(self) -> None:
|
||||
"""Called when the app is first entering the launching state."""
|
||||
# pylint: disable=too-many-locals
|
||||
from baclassic import _campaign
|
||||
from bascenev1 import _campaign
|
||||
from bascenev1 import _map
|
||||
from bastd.actor import spazappearance
|
||||
from bastd import maps as stdmaps
|
||||
@ -325,7 +326,7 @@ class ClassicSubsystem(AppSubsystem):
|
||||
# FIXME: This should not be an actor attr.
|
||||
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."""
|
||||
|
||||
# Assign this level to our catch-all campaign.
|
||||
@ -523,7 +524,7 @@ class ClassicSubsystem(AppSubsystem):
|
||||
|
||||
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 self.campaigns[name]
|
||||
|
||||
@ -751,6 +752,14 @@ class ClassicSubsystem(AppSubsystem):
|
||||
|
||||
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(
|
||||
self,
|
||||
) -> type[bascenev1.Activity]:
|
||||
@ -760,3 +769,82 @@ class ClassicSubsystem(AppSubsystem):
|
||||
)
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
@ -147,6 +147,9 @@ from bascenev1._freeforallsession import FreeForAllSession
|
||||
from bascenev1._gameactivity import GameActivity
|
||||
from bascenev1._score import ScoreType, ScoreConfig
|
||||
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 (
|
||||
UNHANDLED,
|
||||
OutOfBoundsMessage,
|
||||
@ -385,6 +388,10 @@ __all__ = [
|
||||
'AppIntentExec',
|
||||
'AppMode',
|
||||
'SceneV1AppMode',
|
||||
'Lobby',
|
||||
'Chooser',
|
||||
'Campaign',
|
||||
'Level',
|
||||
]
|
||||
|
||||
# Sanity check: we want to keep ballistica's dependencies and
|
||||
|
||||
@ -22,7 +22,6 @@ from bascenev1._player import Player
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any
|
||||
import baclassic
|
||||
import bascenev1
|
||||
|
||||
PlayerT = TypeVar('PlayerT', bound=Player)
|
||||
|
||||
@ -18,7 +18,7 @@ from bascenev1._music import MusicType, setmusic
|
||||
if TYPE_CHECKING:
|
||||
import babase
|
||||
import bascenev1
|
||||
from baclassic._lobby import JoinInfo
|
||||
from bascenev1._lobby import JoinInfo
|
||||
|
||||
|
||||
class EndSessionActivity(Activity[EmptyPlayer, EmptyTeam]):
|
||||
@ -41,14 +41,17 @@ class EndSessionActivity(Activity[EmptyPlayer, EmptyTeam]):
|
||||
|
||||
def on_begin(self) -> None:
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.mainmenu import MainMenuSession
|
||||
|
||||
assert _babase.app.classic is not None
|
||||
from babase._general import Call
|
||||
|
||||
main_menu_session = _babase.app.classic.get_main_menu_session()
|
||||
|
||||
super().on_begin()
|
||||
_babase.unlock_all_input()
|
||||
assert _babase.app.classic is not None
|
||||
_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:
|
||||
# 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()
|
||||
self._background = background.Background(
|
||||
self._background = Background(
|
||||
fade_time=0.5, start_faded=False, show_logo=False
|
||||
)
|
||||
|
||||
|
||||
@ -10,10 +10,10 @@ import _babase
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any
|
||||
import babase
|
||||
import baclassic
|
||||
import bascenev1
|
||||
|
||||
|
||||
def register_campaign(campaign: baclassic.Campaign) -> None:
|
||||
def register_campaign(campaign: bascenev1.Campaign) -> None:
|
||||
"""Register a new campaign."""
|
||||
assert _babase.app.classic is not None
|
||||
_babase.app.classic.campaigns[campaign.name] = campaign
|
||||
@ -29,11 +29,11 @@ class Campaign:
|
||||
self,
|
||||
name: str,
|
||||
sequential: bool = True,
|
||||
levels: list[baclassic.Level] | None = None,
|
||||
levels: list[bascenev1.Level] | None = None,
|
||||
):
|
||||
self._name = name
|
||||
self._sequential = sequential
|
||||
self._levels: list[baclassic.Level] = []
|
||||
self._levels: list[bascenev1.Level] = []
|
||||
if levels is not None:
|
||||
for level in levels:
|
||||
self.addlevel(level)
|
||||
@ -49,7 +49,7 @@ class Campaign:
|
||||
return self._sequential
|
||||
|
||||
def addlevel(
|
||||
self, level: baclassic.Level, index: int | None = None
|
||||
self, level: bascenev1.Level, index: int | None = None
|
||||
) -> None:
|
||||
"""Adds a baclassic.Level to the Campaign."""
|
||||
if level.campaign is not None:
|
||||
@ -61,11 +61,11 @@ class Campaign:
|
||||
self._levels.insert(index, level)
|
||||
|
||||
@property
|
||||
def levels(self) -> list[baclassic.Level]:
|
||||
def levels(self) -> list[bascenev1.Level]:
|
||||
"""The list of baclassic.Level-s in the Campaign."""
|
||||
return self._levels
|
||||
|
||||
def getlevel(self, name: str) -> baclassic.Level:
|
||||
def getlevel(self, name: str) -> bascenev1.Level:
|
||||
"""Return a contained baclassic.Level by name."""
|
||||
from babase import _error
|
||||
|
||||
@ -104,7 +104,7 @@ class Campaign:
|
||||
def init_campaigns() -> None:
|
||||
"""Fill out initial default Campaigns."""
|
||||
# pylint: disable=cyclic-import
|
||||
from baclassic._level import Level
|
||||
from bascenev1._level import Level
|
||||
from bastd.game.onslaught import OnslaughtGame
|
||||
from bastd.game.football import FootballCoopGame
|
||||
from bastd.game.runaround import RunaroundGame
|
||||
@ -15,7 +15,6 @@ if TYPE_CHECKING:
|
||||
from typing import Sequence
|
||||
from bastd.actor.playerspaz import PlayerSpaz
|
||||
import babase
|
||||
import baclassic
|
||||
import bascenev1
|
||||
|
||||
PlayerT = TypeVar('PlayerT', bound='bascenev1.Player')
|
||||
|
||||
@ -12,7 +12,6 @@ from bascenev1._session import Session
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any, Callable, Sequence
|
||||
import babase
|
||||
import baclassic
|
||||
import bascenev1
|
||||
|
||||
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
|
||||
# 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
|
||||
there is no associated Campaign."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
"""Instantiate a co-op mode session."""
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.activity.coopjoin import CoopJoinActivity
|
||||
|
||||
_babase.increment_analytics_count('Co-op session start')
|
||||
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.
|
||||
# Otherwise defer to user overrides or defaults.
|
||||
if 'min_players' in app.classic.coop_session_args:
|
||||
min_players = app.classic.coop_session_args['min_players']
|
||||
if 'min_players' in classic.coop_session_args:
|
||||
min_players = classic.coop_session_args['min_players']
|
||||
else:
|
||||
min_players = 1
|
||||
if 'max_players' in app.classic.coop_session_args:
|
||||
max_players = app.classic.coop_session_args['max_players']
|
||||
if 'max_players' in classic.coop_session_args:
|
||||
max_players = classic.coop_session_args['max_players']
|
||||
else:
|
||||
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)
|
||||
self.tournament_id: str | None = app.classic.coop_session_args.get(
|
||||
self.tournament_id: str | None = classic.coop_session_args.get(
|
||||
'tournament_id'
|
||||
)
|
||||
|
||||
self.campaign = app.classic.getcampaign(
|
||||
app.classic.coop_session_args['campaign']
|
||||
self.campaign = classic.getcampaign(
|
||||
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._tutorial_activity: bascenev1.Activity | None = None
|
||||
self._custom_menu_ui: list[dict[str, Any]] = []
|
||||
|
||||
# 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_level_name: str | None = None
|
||||
@ -112,6 +113,9 @@ class CoopSession(Session):
|
||||
# pylint: disable=cyclic-import
|
||||
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.
|
||||
|
||||
# Build an instance for the current level.
|
||||
@ -134,7 +138,7 @@ class CoopSession(Session):
|
||||
levels = self.campaign.levels
|
||||
level = self.campaign.getlevel(self.campaign_level_name)
|
||||
|
||||
nextlevel: baclassic.Level | None
|
||||
nextlevel: bascenev1.Level | None
|
||||
if level.index < len(levels) - 1:
|
||||
nextlevel = levels[level.index + 1]
|
||||
else:
|
||||
@ -166,9 +170,8 @@ class CoopSession(Session):
|
||||
and self._tutorial_activity is None
|
||||
and not self._ran_tutorial_activity
|
||||
):
|
||||
from bastd.tutorial import TutorialActivity
|
||||
|
||||
self._tutorial_activity = _bascenev1.newactivity(TutorialActivity)
|
||||
tutorial_activity = classic.get_tutorial_activity()
|
||||
self._tutorial_activity = _bascenev1.newactivity(tutorial_activity)
|
||||
|
||||
def get_custom_menu_entries(self) -> list[dict[str, Any]]:
|
||||
return self._custom_menu_ui
|
||||
@ -220,14 +223,14 @@ class CoopSession(Session):
|
||||
self, resume_callback: Callable[[], Any]
|
||||
) -> None:
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.ui.tournamententry import TournamentEntryWindow
|
||||
from bascenev1._gameactivity import GameActivity
|
||||
|
||||
assert _babase.app.classic is not None
|
||||
activity = self.getactivity()
|
||||
if activity is not None and not activity.expired:
|
||||
assert self.tournament_id is not None
|
||||
assert isinstance(activity, GameActivity)
|
||||
TournamentEntryWindow(
|
||||
_babase.app.classic.tournament_entry_window(
|
||||
tournament_id=self.tournament_id,
|
||||
tournament_activity=activity,
|
||||
on_close_call=resume_callback,
|
||||
@ -267,8 +270,6 @@ class CoopSession(Session):
|
||||
# pylint: disable=cyclic-import
|
||||
from babase._language import Lstr
|
||||
from babase._general import WeakCall
|
||||
from bastd.tutorial import TutorialActivity
|
||||
from bastd.activity.coopscore import CoopScoreScreen
|
||||
from bascenev1._gameresults import GameResults
|
||||
from bascenev1._player import PlayerInfo
|
||||
from bascenev1._activitytypes import JoinActivity, TransitionActivity
|
||||
@ -276,6 +277,11 @@ class CoopSession(Session):
|
||||
from bascenev1._score import ScoreType
|
||||
|
||||
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
|
||||
# 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,
|
||||
# hop into a round.
|
||||
if isinstance(
|
||||
activity, (JoinActivity, CoopScoreScreen, TransitionActivity)
|
||||
activity, (JoinActivity, coop_score_screen, TransitionActivity)
|
||||
):
|
||||
if outcome == 'next_level':
|
||||
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
|
||||
# actual round.
|
||||
elif isinstance(activity, TutorialActivity):
|
||||
elif isinstance(activity, tutorial_activity):
|
||||
self.setactivity(_bascenev1.newactivity(TransitionActivity))
|
||||
else:
|
||||
playerinfos: list[bascenev1.PlayerInfo]
|
||||
@ -424,7 +430,7 @@ class CoopSession(Session):
|
||||
else:
|
||||
self.setactivity(
|
||||
_bascenev1.newactivity(
|
||||
CoopScoreScreen,
|
||||
coop_score_screen,
|
||||
{
|
||||
'playerinfos': playerinfos,
|
||||
'score': score,
|
||||
|
||||
@ -34,17 +34,21 @@ class DualTeamSession(MultiTeamSession):
|
||||
|
||||
def _switch_to_score_screen(self, results: bascenev1.GameResults) -> None:
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.activity.drawscore import DrawScoreScreenActivity
|
||||
from bastd.activity.dualteamscore import TeamVictoryScoreScreenActivity
|
||||
from bastd.activity.multiteamvictory import (
|
||||
TeamSeriesVictoryScoreScreenActivity,
|
||||
)
|
||||
classic = _babase.app.classic
|
||||
assert classic is not None
|
||||
|
||||
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
|
||||
|
||||
# If everyone has the same score, call it a draw.
|
||||
if len(winnergroups) < 2:
|
||||
self.setactivity(_bascenev1.newactivity(DrawScoreScreenActivity))
|
||||
self.setactivity(_bascenev1.newactivity(draw_score_screen_activity))
|
||||
else:
|
||||
winner = winnergroups[0].teams[0]
|
||||
winner.customdata['score'] += 1
|
||||
@ -53,12 +57,13 @@ class DualTeamSession(MultiTeamSession):
|
||||
if winner.customdata['score'] >= (self._series_length - 1) / 2 + 1:
|
||||
self.setactivity(
|
||||
_bascenev1.newactivity(
|
||||
TeamSeriesVictoryScoreScreenActivity, {'winner': winner}
|
||||
team_series_victory_score_screen_activity,
|
||||
{'winner': winner},
|
||||
)
|
||||
)
|
||||
else:
|
||||
self.setactivity(
|
||||
_bascenev1.newactivity(
|
||||
TeamVictoryScoreScreenActivity, {'winner': winner}
|
||||
team_victory_score_screen_activity, {'winner': winner}
|
||||
)
|
||||
)
|
||||
|
||||
@ -27,7 +27,6 @@ if TYPE_CHECKING:
|
||||
from bastd.actor.bomb import TNTSpawner
|
||||
import babase
|
||||
import bascenev1
|
||||
import baclassic
|
||||
|
||||
PlayerT = TypeVar('PlayerT', bound='bascenev1.Player')
|
||||
TeamT = TypeVar('TeamT', bound='bascenev1.Team')
|
||||
@ -435,9 +434,12 @@ class GameActivity(Activity[PlayerT, TeamT]):
|
||||
"""
|
||||
# pylint: disable=too-many-nested-blocks
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.ui.continues import ContinuesWindow
|
||||
from bascenev1._coopsession import CoopSession
|
||||
|
||||
classic = _babase.app.classic
|
||||
assert classic is not None
|
||||
continues_window = classic.continues_window
|
||||
|
||||
plus = _babase.app.plus
|
||||
try:
|
||||
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():
|
||||
_babase.apptimer(
|
||||
0.5,
|
||||
lambda: ContinuesWindow(
|
||||
lambda: continues_window(
|
||||
self,
|
||||
self._continue_cost,
|
||||
continue_call=WeakCall(
|
||||
|
||||
@ -17,9 +17,9 @@ if TYPE_CHECKING:
|
||||
|
||||
|
||||
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]:
|
||||
|
||||
@ -7,18 +7,14 @@ import copy
|
||||
import weakref
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import _bauiv1
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any
|
||||
|
||||
import baclassic
|
||||
import bascenev1
|
||||
import bauiv1
|
||||
|
||||
|
||||
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**
|
||||
"""
|
||||
@ -36,7 +32,7 @@ class Level:
|
||||
self._settings = settings
|
||||
self._preview_texture_name = preview_texture_name
|
||||
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._score_version_string: str | None = None
|
||||
|
||||
@ -63,9 +59,9 @@ class Level:
|
||||
"""The preview texture name for this Level."""
|
||||
return self._preview_texture_name
|
||||
|
||||
def get_preview_texture(self) -> bauiv1.Texture:
|
||||
"""Load/return the preview Texture for this Level."""
|
||||
return _bauiv1.gettexture(self._preview_texture_name)
|
||||
# def get_preview_texture(self) -> bauiv1.Texture:
|
||||
# """Load/return the preview Texture for this Level."""
|
||||
# return _bauiv1.gettexture(self._preview_texture_name)
|
||||
|
||||
@property
|
||||
def displayname(self) -> bascenev1.Lstr:
|
||||
@ -90,7 +86,7 @@ class Level:
|
||||
return self._gametype
|
||||
|
||||
@property
|
||||
def campaign(self) -> baclassic.Campaign | None:
|
||||
def campaign(self) -> bascenev1.Campaign | None:
|
||||
"""The baclassic.Campaign this Level is associated with, or None."""
|
||||
return None if self._campaign is None else self._campaign()
|
||||
|
||||
@ -174,7 +170,7 @@ class Level:
|
||||
assert isinstance(val, dict)
|
||||
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.
|
||||
|
||||
(internal)"""
|
||||
@ -13,14 +13,13 @@ import _babase
|
||||
from babase._error import print_exception, print_error, NotFoundError
|
||||
from babase._language import Lstr
|
||||
from babase._mgen.enums import SpecialChar, InputType
|
||||
from bascenev1._gameutils import animate, animate_array
|
||||
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:
|
||||
from typing import Any, Sequence
|
||||
|
||||
import baclassic
|
||||
import bascenev1
|
||||
|
||||
MAX_QUICK_CHANGE_COUNT = 30
|
||||
@ -32,7 +31,7 @@ QUICK_CHANGE_RESET_INTERVAL = 1.0
|
||||
class JoinInfo:
|
||||
"""Display useful info for joiners."""
|
||||
|
||||
def __init__(self, lobby: baclassic.Lobby):
|
||||
def __init__(self, lobby: bascenev1.Lobby):
|
||||
from bascenev1._nodeactor import NodeActor
|
||||
from babase._general import WeakCall
|
||||
|
||||
@ -121,8 +120,6 @@ class JoinInfo:
|
||||
self._timer = _bascenev1.Timer(4.0, WeakCall(self._update), repeat=True)
|
||||
|
||||
def _update_for_keyboard(self, keyboard: bascenev1.InputDevice) -> None:
|
||||
from baclassic import _input
|
||||
|
||||
classic = _babase.app.classic
|
||||
assert classic is not None
|
||||
|
||||
@ -164,7 +161,7 @@ class JoinInfo:
|
||||
class PlayerReadyMessage:
|
||||
"""Tells an object a player has been selected from the given chooser."""
|
||||
|
||||
chooser: baclassic.Chooser
|
||||
chooser: bascenev1.Chooser
|
||||
|
||||
|
||||
@dataclass
|
||||
@ -354,7 +351,7 @@ class Chooser:
|
||||
):
|
||||
app.classic.lobby_random_profile_index += 1
|
||||
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
|
||||
return profileindex
|
||||
assert '_random' in profilenames
|
||||
@ -384,14 +381,14 @@ class Chooser:
|
||||
return self.lobby.sessionteams[self._selected_team_index]
|
||||
|
||||
@property
|
||||
def lobby(self) -> baclassic.Lobby:
|
||||
def lobby(self) -> bascenev1.Lobby:
|
||||
"""The chooser's baclassic.Lobby."""
|
||||
lobby = self._lobby()
|
||||
if lobby is None:
|
||||
raise NotFoundError('Lobby does not exist.')
|
||||
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 self._lobby()
|
||||
|
||||
@ -581,15 +578,17 @@ class Chooser:
|
||||
|
||||
def _set_ready(self, ready: bool) -> None:
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.ui.profile import browser as pbrowser
|
||||
from babase._general import Call
|
||||
|
||||
classic = _babase.app.classic
|
||||
assert classic is not None
|
||||
|
||||
profilename = self._profilenames[self._profileindex]
|
||||
|
||||
# Handle '_edit' as a special case.
|
||||
if profilename == '_edit' and ready:
|
||||
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
|
||||
# (prevent someone else from snatching it in crowded games)
|
||||
@ -15,7 +15,6 @@ if TYPE_CHECKING:
|
||||
from typing import Sequence, Any
|
||||
|
||||
import babase
|
||||
import baclassic
|
||||
import bascenev1
|
||||
|
||||
|
||||
@ -66,7 +65,8 @@ def get_map_class(name: str) -> type[Map]:
|
||||
assert _babase.app.classic is not None
|
||||
name = get_filtered_map_name(name)
|
||||
try:
|
||||
return _babase.app.classic.maps[name]
|
||||
mapclass: type[Map] = _babase.app.classic.maps[name]
|
||||
return mapclass
|
||||
except KeyError:
|
||||
from babase import _error
|
||||
|
||||
|
||||
@ -41,12 +41,14 @@ class MultiTeamSession(Session):
|
||||
"""Set up playlists & launch a bascenev1.Activity to accept joiners."""
|
||||
# pylint: disable=cyclic-import
|
||||
from bascenev1 import _playlist
|
||||
from bastd.activity.multiteamjoin import MultiTeamJoinActivity
|
||||
|
||||
app = _babase.app
|
||||
assert app.classic is not None
|
||||
classic = app.classic
|
||||
assert classic is not None
|
||||
cfg = app.config
|
||||
|
||||
multi_team_join_activity = classic.get_multi_team_join_activity()
|
||||
|
||||
if self.use_teams:
|
||||
team_names = cfg.get('Custom Team Names', DEFAULT_TEAM_NAMES)
|
||||
team_colors = cfg.get('Custom Team Colors', DEFAULT_TEAM_COLORS)
|
||||
@ -65,18 +67,18 @@ class MultiTeamSession(Session):
|
||||
max_players=self.get_max_players(),
|
||||
)
|
||||
|
||||
self._series_length = app.classic.teams_series_length
|
||||
self._ffa_series_length = app.classic.ffa_series_length
|
||||
self._series_length: int = classic.teams_series_length
|
||||
self._ffa_series_length: int = classic.ffa_series_length
|
||||
|
||||
show_tutorial = cfg.get('Show Tutorial', True)
|
||||
|
||||
self._tutorial_activity_instance: bascenev1.Activity | None
|
||||
if show_tutorial:
|
||||
from bastd.tutorial import TutorialActivity
|
||||
tutorial_activity = classic.get_tutorial_activity()
|
||||
|
||||
# Get this loading.
|
||||
self._tutorial_activity_instance = _bascenev1.newactivity(
|
||||
TutorialActivity
|
||||
tutorial_activity
|
||||
)
|
||||
else:
|
||||
self._tutorial_activity_instance = None
|
||||
@ -131,7 +133,7 @@ class MultiTeamSession(Session):
|
||||
self._instantiate_next_game()
|
||||
|
||||
# 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:
|
||||
"""Return free-for-all series length."""
|
||||
@ -173,16 +175,19 @@ class MultiTeamSession(Session):
|
||||
self, activity: bascenev1.Activity, results: Any
|
||||
) -> None:
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.tutorial import TutorialActivity
|
||||
from bastd.activity.multiteamvictory import (
|
||||
TeamSeriesVictoryScoreScreenActivity,
|
||||
)
|
||||
from bascenev1._activitytypes import (
|
||||
TransitionActivity,
|
||||
JoinActivity,
|
||||
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
|
||||
# matter what.
|
||||
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
|
||||
# to transition us into a round gracefully (otherwise we'd snap from
|
||||
# one terrain to another instantly).
|
||||
elif isinstance(activity, TutorialActivity):
|
||||
elif isinstance(activity, tutorial_activity):
|
||||
self.setactivity(_bascenev1.newactivity(TransitionActivity))
|
||||
|
||||
# If we're in a between-round activity or a restart-activity, hop
|
||||
@ -201,7 +206,7 @@ class MultiTeamSession(Session):
|
||||
activity, (JoinActivity, TransitionActivity, ScoreScreenActivity)
|
||||
):
|
||||
# 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._game_number = 0
|
||||
for team in self.sessionteams:
|
||||
|
||||
@ -16,7 +16,6 @@ if TYPE_CHECKING:
|
||||
from typing import Sequence, Any
|
||||
|
||||
import babase
|
||||
import baclassic
|
||||
import bascenev1
|
||||
|
||||
|
||||
@ -47,7 +46,7 @@ class Session:
|
||||
# at the class level so that looks better and nobody get lost while
|
||||
# reading large __init__
|
||||
|
||||
lobby: baclassic.Lobby
|
||||
lobby: bascenev1.Lobby
|
||||
"""The baclassic.Lobby instance where new bascenev1.Player-s go to select
|
||||
a Profile/Team/etc. before being added to games.
|
||||
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=too-many-branches
|
||||
from efro.util import empty_weakref
|
||||
from baclassic._lobby import Lobby
|
||||
from bascenev1._dependency import (
|
||||
Dependency,
|
||||
AssetPackage,
|
||||
DependencyError,
|
||||
)
|
||||
from bascenev1._lobby import Lobby
|
||||
from bascenev1._stats import Stats
|
||||
from bascenev1._gameactivity import GameActivity
|
||||
from bascenev1._activity import Activity
|
||||
@ -409,7 +408,6 @@ class Session:
|
||||
will replace the old.
|
||||
"""
|
||||
from babase._general import Call
|
||||
from babase._mgen.enums import TimeType
|
||||
|
||||
# Only pay attention if this is coming from our current activity.
|
||||
if activity is not self._activity_retained:
|
||||
@ -436,7 +434,7 @@ class Session:
|
||||
|
||||
def handlemessage(self, msg: Any) -> Any:
|
||||
"""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
|
||||
|
||||
if isinstance(msg, PlayerReadyMessage):
|
||||
@ -629,7 +627,7 @@ class Session:
|
||||
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."""
|
||||
lobby = chooser.lobby
|
||||
activity = self._activity_weak()
|
||||
@ -691,7 +689,7 @@ class Session:
|
||||
_babase.pushcall(self.begin_next_activity)
|
||||
|
||||
def _add_chosen_player(
|
||||
self, chooser: baclassic.Chooser
|
||||
self, chooser: bascenev1.Chooser
|
||||
) -> bascenev1.SessionPlayer:
|
||||
from bascenev1._team import SessionTeam
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
|
||||
self._menu_icon_texture = bui.gettexture('menuIcon')
|
||||
self._next_level_icon_texture = bui.gettexture('nextLevelIcon')
|
||||
|
||||
self._campaign: baclassic.Campaign = settings['campaign']
|
||||
self._campaign: bs.Campaign = settings['campaign']
|
||||
|
||||
self._have_achievements = (
|
||||
bs.app.classic is not None
|
||||
|
||||
@ -87,7 +87,9 @@ class GameButton:
|
||||
size=(image_width, image_width * 0.5),
|
||||
mesh_transparent=window.lsbt,
|
||||
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'),
|
||||
)
|
||||
|
||||
|
||||
@ -584,7 +584,9 @@ class TournamentButton:
|
||||
bui.textwidget(edit=self.button_text, text=txt)
|
||||
bui.imagewidget(
|
||||
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,
|
||||
)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user