more cleanup

This commit is contained in:
Eric 2023-06-10 19:40:50 -07:00
parent 2d0364c8e6
commit ba287dc5ac
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
4 changed files with 66 additions and 64 deletions

View File

@ -104,6 +104,7 @@ from babase._error import (
from babase._language import Lstr, LanguageSubsystem from babase._language import Lstr, LanguageSubsystem
from babase._appconfig import AppConfig from babase._appconfig import AppConfig
from babase._apputils import ( from babase._apputils import (
handle_leftover_v1_cloud_log_file,
is_browser_likely_available, is_browser_likely_available,
garbage_collect, garbage_collect,
get_remote_app_name, get_remote_app_name,
@ -241,6 +242,7 @@ __all__ = [
'reload_media', 'reload_media',
'print_load_info', 'print_load_info',
'show_progress_bar', 'show_progress_bar',
'handle_leftover_v1_cloud_log_file',
] ]
# We want stuff to show up as babase.Foo instead of babase._sub.Foo. # We want stuff to show up as babase.Foo instead of babase._sub.Foo.

View File

@ -3,20 +3,16 @@
"""Provides classic app subsystem.""" """Provides classic app subsystem."""
from __future__ import annotations from __future__ import annotations
from typing import TYPE_CHECKING
import random import random
import logging import logging
import weakref import weakref
from typing import TYPE_CHECKING
from efro.dataclassio import dataclass_from_dict from efro.dataclassio import dataclass_from_dict
import _babase import babase
import _bauiv1 import bauiv1
import _bascenev1
import bascenev1 import bascenev1
from babase._general import Call
from babase._appsubsystem import AppSubsystem
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
@ -30,17 +26,15 @@ from baclassic import _input
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Callable, Any, Sequence from typing import Callable, Any, Sequence
import babase
import bauiv1
import baclassic
from bascenev1lib.actor import spazappearance from bascenev1lib.actor import spazappearance
from bauiv1lib.party import PartyWindow
from baclassic._appdelegate import AppDelegate from baclassic._appdelegate import AppDelegate
from baclassic._servermode import ServerController from baclassic._servermode import ServerController
from baclassic._net import MasterServerCallback from baclassic._net import MasterServerCallback
from bauiv1lib.party import PartyWindow
class ClassicSubsystem(AppSubsystem): class ClassicSubsystem(babase.AppSubsystem):
"""Subsystem for classic functionality in the app. """Subsystem for classic functionality in the app.
The single shared instance of this app can be accessed at The single shared instance of this app can be accessed at
@ -51,18 +45,12 @@ class ClassicSubsystem(AppSubsystem):
# pylint: disable=too-many-public-methods # pylint: disable=too-many-public-methods
# Note: we pull the same things in here that are exposed in # noinspection PyUnresolvedReferences
# baclassic/__init__.py. This way this version can be used for from baclassic._music import MusicPlayMode
# runtime via babase.app.classic which enforces handling of the
# package-not-present case.
# 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: def __init__(self) -> None:
super().__init__() super().__init__()
self._env = _babase.env() self._env = babase.env()
self.accounts = AccountV1Subsystem() self.accounts = AccountV1Subsystem()
self.ads = AdsSubsystem() self.ads = AdsSubsystem()
@ -85,7 +73,7 @@ class ClassicSubsystem(AppSubsystem):
self.value_test_defaults: dict = {} self.value_test_defaults: dict = {}
self.special_offer: dict | None = None self.special_offer: dict | None = None
self.ping_thread_count = 0 self.ping_thread_count = 0
self.allow_ticket_purchases: bool = not _babase.app.iircade_mode self.allow_ticket_purchases: bool = not babase.app.iircade_mode
# Main Menu. # Main Menu.
self.main_menu_did_initial_transition = False self.main_menu_did_initial_transition = False
@ -93,7 +81,7 @@ class ClassicSubsystem(AppSubsystem):
# Spaz. # Spaz.
self.spaz_appearances: dict[str, spazappearance.Appearance] = {} self.spaz_appearances: dict[str, spazappearance.Appearance] = {}
self.last_spaz_turbo_warn_time = AppTime(-99999.0) self.last_spaz_turbo_warn_time = babase.AppTime(-99999.0)
# Server Mode. # Server Mode.
self.server: ServerController | None = None self.server: ServerController | None = None
@ -161,14 +149,13 @@ class ClassicSubsystem(AppSubsystem):
from bascenev1 import _map from bascenev1 import _map
from bascenev1lib.actor import spazappearance from bascenev1lib.actor import spazappearance
from bascenev1lib import maps as stdmaps from bascenev1lib import maps as stdmaps
from babase._apputils import handle_leftover_v1_cloud_log_file
from baclassic._appdelegate import AppDelegate
import bauiv1 as bui
plus = bui.app.plus from baclassic._appdelegate import AppDelegate
plus = babase.app.plus
assert plus is not None assert plus is not None
cfg = _babase.app.config cfg = babase.app.config
self.music.on_app_loading() self.music.on_app_loading()
@ -177,11 +164,11 @@ class ClassicSubsystem(AppSubsystem):
# Non-test, non-debug builds should generally be blessed; warn if not. # Non-test, non-debug builds should generally be blessed; warn if not.
# (so I don't accidentally release a build that can't play tourneys) # (so I don't accidentally release a build that can't play tourneys)
if ( if (
not _babase.app.debug_build not babase.app.debug_build
and not _babase.app.test_build and not babase.app.test_build
and not plus.is_blessed() and not plus.is_blessed()
): ):
_babase.screenmessage('WARNING: NON-BLESSED BUILD', color=(1, 0, 0)) babase.screenmessage('WARNING: NON-BLESSED BUILD', color=(1, 0, 0))
# FIXME: This should not be hard-coded. # FIXME: This should not be hard-coded.
for maptype in [ for maptype in [
@ -234,12 +221,12 @@ class ClassicSubsystem(AppSubsystem):
self.special_offer = cfg['pendingSpecialOffer']['o'] self.special_offer = cfg['pendingSpecialOffer']['o']
show_offer() show_offer()
if not _babase.app.headless_mode: if not babase.app.headless_mode:
bui.apptimer(3.0, check_special_offer) babase.apptimer(3.0, check_special_offer)
# If there's a leftover log file, attempt to upload it to the # If there's a leftover log file, attempt to upload it to the
# master-server and/or get rid of it. # master-server and/or get rid of it.
handle_leftover_v1_cloud_log_file() babase.handle_leftover_v1_cloud_log_file()
self.accounts.on_app_loading() self.accounts.on_app_loading()
@ -267,8 +254,8 @@ class ClassicSubsystem(AppSubsystem):
and activity.allow_pausing and activity.allow_pausing
and not bascenev1.have_connected_clients() and not bascenev1.have_connected_clients()
): ):
from babase._language import Lstr from babase import Lstr
from bascenev1._nodeactor import NodeActor from bascenev1 import NodeActor
# FIXME: Shouldn't be touching scene stuff here; # FIXME: Shouldn't be touching scene stuff here;
# should just pass the request on to the host-session. # should just pass the request on to the host-session.
@ -327,14 +314,14 @@ class ClassicSubsystem(AppSubsystem):
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bauiv1lib.coop.level import CoopLevelLockedWindow from bauiv1lib.coop.level import CoopLevelLockedWindow
assert _babase.app.classic is not None assert babase.app.classic is not None
if args is None: if args is None:
args = {} args = {}
if game == '': if game == '':
raise ValueError('empty game name') raise ValueError('empty game name')
campaignname, levelname = game.split(':') campaignname, levelname = game.split(':')
campaign = _babase.app.classic.getcampaign(campaignname) campaign = babase.app.classic.getcampaign(campaignname)
# If this campaign is sequential, make sure we've completed the # If this campaign is sequential, make sure we've completed the
# one before this. # one before this.
@ -368,7 +355,7 @@ class ClassicSubsystem(AppSubsystem):
bascenev1.new_host_session(MainMenuSession) bascenev1.new_host_session(MainMenuSession)
_babase.fade_screen(False, endcall=_fade_end) babase.fade_screen(False, endcall=_fade_end)
return True return True
def return_to_main_menu_session_gracefully( def return_to_main_menu_session_gracefully(
@ -379,16 +366,16 @@ class ClassicSubsystem(AppSubsystem):
from baclassic import _benchmark from baclassic import _benchmark
from bascenev1lib.mainmenu import MainMenuSession from bascenev1lib.mainmenu import MainMenuSession
plus = _babase.app.plus plus = babase.app.plus
assert plus is not None assert plus is not None
if reset_ui: if reset_ui:
_babase.app.ui_v1.clear_main_menu_window() babase.app.ui_v1.clear_main_menu_window()
if isinstance(bascenev1.get_foreground_host_session(), MainMenuSession): if isinstance(bascenev1.get_foreground_host_session(), MainMenuSession):
# It may be possible we're on the main menu but the screen is faded # It may be possible we're on the main menu but the screen is faded
# so fade back in. # so fade back in.
_babase.fade_screen(True) babase.fade_screen(True)
return return
_benchmark.stop_stress_test() # Stop stress-test if in progress. _benchmark.stop_stress_test() # Stop stress-test if in progress.
@ -410,7 +397,9 @@ class ClassicSubsystem(AppSubsystem):
# Otherwise just force the issue. # Otherwise just force the issue.
else: else:
_babase.pushcall(Call(bascenev1.new_host_session, MainMenuSession)) babase.pushcall(
babase.Call(bascenev1.new_host_session, MainMenuSession)
)
def getmaps(self, playtype: str) -> list[str]: def getmaps(self, playtype: str) -> list[str]:
"""Return a list of bascenev1.Map types supporting a playtype str. """Return a list of bascenev1.Map types supporting a playtype str.
@ -470,7 +459,7 @@ class ClassicSubsystem(AppSubsystem):
game_version: str | None = None, game_version: str | None = None,
) -> None: ) -> None:
"""(internal)""" """(internal)"""
_bauiv1.show_online_score_ui(show, game, game_version) bauiv1.show_online_score_ui(show, game, game_version)
def game_begin_analytics(self) -> None: def game_begin_analytics(self) -> None:
"""(internal)""" """(internal)"""
@ -583,14 +572,14 @@ class ClassicSubsystem(AppSubsystem):
def get_player_colors(self) -> list[tuple[float, float, float]]: def get_player_colors(self) -> list[tuple[float, float, float]]:
"""Return user-selectable player colors.""" """Return user-selectable player colors."""
return _profile.get_player_colors() return bascenev1.get_player_colors()
def get_player_profile_icon(self, profilename: str) -> str: def get_player_profile_icon(self, profilename: str) -> str:
"""Given a profile name, returns an icon string for it. """Given a profile name, returns an icon string for it.
(non-account profiles only) (non-account profiles only)
""" """
return _profile.get_player_profile_icon(profilename) return bascenev1.get_player_profile_icon(profilename)
def get_player_profile_colors( def get_player_profile_colors(
self, self,
@ -598,7 +587,7 @@ class ClassicSubsystem(AppSubsystem):
profiles: dict[str, dict[str, Any]] | None = None, profiles: dict[str, dict[str, Any]] | None = None,
) -> tuple[tuple[float, float, float], tuple[float, float, float]]: ) -> tuple[tuple[float, float, float], tuple[float, float, float]]:
"""Given a profile, return colors for them.""" """Given a profile, return colors for them."""
return _profile.get_player_profile_colors(profilename, profiles) return bascenev1.get_player_profile_colors(profilename, profiles)
def get_foreground_host_session(self) -> bascenev1.Session | None: def get_foreground_host_session(self) -> bascenev1.Session | None:
"""(internal)""" """(internal)"""
@ -613,7 +602,7 @@ class ClassicSubsystem(AppSubsystem):
if self.platform in ('mac', 'linux', 'windows'): if self.platform in ('mac', 'linux', 'windows'):
from bauiv1lib.configerror import ConfigErrorWindow from bauiv1lib.configerror import ConfigErrorWindow
_babase.pushcall(ConfigErrorWindow) babase.pushcall(ConfigErrorWindow)
return True return True
return False return False
@ -628,11 +617,11 @@ class ClassicSubsystem(AppSubsystem):
def set_master_server_source(self, source: int) -> None: def set_master_server_source(self, source: int) -> None:
"""(internal)""" """(internal)"""
_bascenev1.set_master_server_source(source) bascenev1.set_master_server_source(source)
def get_game_port(self) -> int: def get_game_port(self) -> int:
"""(internal)""" """(internal)"""
return _bascenev1.get_game_port() return bascenev1.get_game_port()
def v2_upgrade_window(self, login_name: str, code: str) -> None: def v2_upgrade_window(self, login_name: str, code: str) -> None:
"""(internal)""" """(internal)"""
@ -663,9 +652,9 @@ class ClassicSubsystem(AppSubsystem):
data, data,
) )
if sddata is not None: if sddata is not None:
_babase.apptimer( babase.apptimer(
delay, delay,
Call(ServerDialogWindow, sddata), babase.Call(ServerDialogWindow, sddata),
) )
def ticket_icon_press(self) -> None: def ticket_icon_press(self) -> None:
@ -673,7 +662,7 @@ class ClassicSubsystem(AppSubsystem):
from bauiv1lib.resourcetypeinfo import ResourceTypeInfoWindow from bauiv1lib.resourcetypeinfo import ResourceTypeInfoWindow
ResourceTypeInfoWindow( ResourceTypeInfoWindow(
origin_widget=_bauiv1.get_special_widget('tickets_info_button') origin_widget=bauiv1.get_special_widget('tickets_info_button')
) )
def show_url_window(self, address: str) -> None: def show_url_window(self, address: str) -> None:
@ -749,12 +738,12 @@ class ClassicSubsystem(AppSubsystem):
Category: **Asset Functions** Category: **Asset Functions**
""" """
try: try:
_bauiv1.getmesh('level_select_button_opaque') bauiv1.getmesh('level_select_button_opaque')
_bauiv1.getmesh('level_select_button_transparent') bauiv1.getmesh('level_select_button_transparent')
for maptype in list(self.maps.values()): for maptype in list(self.maps.values()):
map_tex_name = maptype.get_preview_texture_name() map_tex_name = maptype.get_preview_texture_name()
if map_tex_name is not None: if map_tex_name is not None:
_bauiv1.gettexture(map_tex_name) bauiv1.gettexture(map_tex_name)
except Exception: except Exception:
logging.exception('Error preloading map preview media.') logging.exception('Error preloading map preview media.')
@ -765,7 +754,7 @@ class ClassicSubsystem(AppSubsystem):
assert not app.headless_mode assert not app.headless_mode
_bauiv1.getsound('swish').play() bauiv1.getsound('swish').play()
# If it exists, dismiss it; otherwise make a new one. # If it exists, dismiss it; otherwise make a new one.
party_window = ( party_window = (
@ -781,14 +770,14 @@ class ClassicSubsystem(AppSubsystem):
from bauiv1lib.mainmenu import MainMenuWindow from bauiv1lib.mainmenu import MainMenuWindow
from bauiv1 import set_ui_input_device from bauiv1 import set_ui_input_device
assert _babase.app is not None assert babase.app is not None
in_main_menu = _babase.app.ui_v1.has_main_menu_window() in_main_menu = babase.app.ui_v1.has_main_menu_window()
if not in_main_menu: if not in_main_menu:
set_ui_input_device(device_id) set_ui_input_device(device_id)
if not _babase.app.headless_mode: if not babase.app.headless_mode:
_bauiv1.getsound('swish').play() bauiv1.getsound('swish').play()
_babase.app.ui_v1.set_main_menu_window( babase.app.ui_v1.set_main_menu_window(
MainMenuWindow().get_root_widget() MainMenuWindow().get_root_widget()
) )

View File

@ -62,6 +62,7 @@ from babase._mgen.enums import (
) )
from _bascenev1 import ( from _bascenev1 import (
set_master_server_source,
get_foreground_host_session, get_foreground_host_session,
get_foreground_host_activity, get_foreground_host_activity,
get_game_roster, get_game_roster,
@ -139,7 +140,11 @@ from _bascenev1 import (
BaseTimer, BaseTimer,
) )
from bascenev1._profile import (
get_player_colors,
get_player_profile_icon,
get_player_profile_colors,
)
from bascenev1._appmode import SceneV1AppMode from bascenev1._appmode import SceneV1AppMode
from bascenev1._session import Session from bascenev1._session import Session
from bascenev1._map import Map from bascenev1._map import Map
@ -397,6 +402,10 @@ __all__ = [
'Campaign', 'Campaign',
'Level', 'Level',
'Plugin', 'Plugin',
'get_player_colors',
'get_player_profile_icon',
'get_player_profile_colors',
'set_master_server_source',
] ]
# We want stuff here to show up as bascenev1.Foo instead of # We want stuff here to show up as bascenev1.Foo instead of

View File

@ -83,6 +83,7 @@ from babase import (
is_browser_likely_available, is_browser_likely_available,
) )
from _bauiv1 import ( from _bauiv1 import (
show_online_score_ui,
uibounds, uibounds,
set_party_window_open, set_party_window_open,
get_qrcode_texture, get_qrcode_texture,
@ -115,6 +116,7 @@ from bauiv1._uitypes import Window, uicleanupcheck
from bauiv1._subsystem import UIV1Subsystem from bauiv1._subsystem import UIV1Subsystem
__all__ = [ __all__ = [
'show_online_score_ui',
'lock_all_input', 'lock_all_input',
'unlock_all_input', 'unlock_all_input',
'get_qrcode_texture', 'get_qrcode_texture',