From 1ef716a2f2d619a82649f0cef740da9c22b0413d Mon Sep 17 00:00:00 2001 From: Eric Froemling Date: Tue, 19 May 2020 18:08:03 -0700 Subject: [PATCH] Tidying --- assets/src/ba_data/python/ba/_gameactivity.py | 12 +++--- .../ba_data/python/ba/_multiteamsession.py | 2 +- .../python/bastd/game/capturetheflag.py | 41 +++++++++++-------- .../ba_data/python/bastd/game/chosenone.py | 11 ++--- .../ba_data/python/bastd/game/elimination.py | 15 +++---- .../src/ba_data/python/bastd/game/football.py | 3 -- .../ba_data/python/bastd/game/ninjafight.py | 12 +++++- .../ba_data/python/bastd/game/onslaught.py | 3 -- assets/src/ba_data/python/bastd/game/race.py | 6 +-- .../python/bastd/game/targetpractice.py | 4 +- .../ba_data/python/bastd/game/thelaststand.py | 3 -- .../ba_data/python/bastd/ui/playlist/edit.py | 15 ++++--- .../bastd/ui/playlist/editcontroller.py | 12 +++--- .../ba_data/python/bastd/ui/playoptions.py | 2 +- docs/ba_module.md | 34 +++++++-------- 15 files changed, 92 insertions(+), 83 deletions(-) diff --git a/assets/src/ba_data/python/ba/_gameactivity.py b/assets/src/ba_data/python/ba/_gameactivity.py index d8f62401..8432620e 100644 --- a/assets/src/ba_data/python/ba/_gameactivity.py +++ b/assets/src/ba_data/python/ba/_gameactivity.py @@ -64,10 +64,10 @@ class GameActivity(Activity[PlayerType, TeamType]): score_info: Optional[ba.ScoreInfo] = None @classmethod - def create_config_ui( + def create_settings_ui( cls, sessionclass: Type[ba.Session], - config: Optional[Dict[str, Any]], + settings: Optional[Dict[str, Any]], completion_call: Callable[[Optional[Dict[str, Any]]], None], ) -> None: """Launch an in-game UI to configure settings for a game type. @@ -87,7 +87,7 @@ class GameActivity(Activity[PlayerType, TeamType]): """ delegate = _ba.app.delegate assert delegate is not None - delegate.create_default_game_config_ui(cls, sessionclass, config, + delegate.create_default_game_config_ui(cls, sessionclass, settings, completion_call) @classmethod @@ -155,7 +155,7 @@ class GameActivity(Activity[PlayerType, TeamType]): cls, sessiontype: Type[ba.Session]) -> List[Tuple[str, Dict[str, Any]]]: """ - Called by the default ba.GameActivity.create_config_ui() + Called by the default ba.GameActivity.create_settings_ui() implementation; should return a dict of config options to be presented to the user for the given ba.Session type. @@ -217,7 +217,7 @@ class GameActivity(Activity[PlayerType, TeamType]): @classmethod def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]: """ - Called by the default ba.GameActivity.create_config_ui() + Called by the default ba.GameActivity.create_settings_ui() implementation; should return a list of map names valid for this game-type for the given ba.Session type. """ @@ -226,7 +226,7 @@ class GameActivity(Activity[PlayerType, TeamType]): return _map.getmaps('melee') @classmethod - def get_config_display_string(cls, config: Dict[str, Any]) -> ba.Lstr: + def get_settings_display_string(cls, config: Dict[str, Any]) -> ba.Lstr: """Given a game config dict, return a short description for it. This is used when viewing game-lists or showing what game diff --git a/assets/src/ba_data/python/ba/_multiteamsession.py b/assets/src/ba_data/python/ba/_multiteamsession.py index 84097208..ad427931 100644 --- a/assets/src/ba_data/python/ba/_multiteamsession.py +++ b/assets/src/ba_data/python/ba/_multiteamsession.py @@ -150,7 +150,7 @@ class MultiTeamSession(Session): from ba._gameactivity import GameActivity gametype: Type[GameActivity] = self._next_game_spec['resolved_type'] assert issubclass(gametype, GameActivity) - return gametype.get_config_display_string(self._next_game_spec) + return gametype.get_settings_display_string(self._next_game_spec) def get_game_number(self) -> int: """Returns which game in the series is currently being played.""" diff --git a/assets/src/ba_data/python/bastd/game/capturetheflag.py b/assets/src/ba_data/python/bastd/game/capturetheflag.py index 99f617b4..6b1e028c 100644 --- a/assets/src/ba_data/python/bastd/game/capturetheflag.py +++ b/assets/src/ba_data/python/bastd/game/capturetheflag.py @@ -25,7 +25,6 @@ from __future__ import annotations -from dataclasses import dataclass from typing import TYPE_CHECKING import ba @@ -81,29 +80,35 @@ class CTFFlag(stdflag.Flag): return delegate if isinstance(delegate, CTFFlag) else None -@dataclass(eq=False) class Player(ba.Player['Team']): """Our player type for this game.""" - touching_own_flag: int = 0 + + def __init__(self) -> None: + self.touching_own_flag = 0 -@dataclass(eq=False) class Team(ba.Team[Player]): """Our team type for this game.""" - base_pos: Sequence[float] - base_region_material: ba.Material - base_region: ba.Node - spaz_material_no_flag_physical: ba.Material - spaz_material_no_flag_collide: ba.Material - flagmaterial: ba.Material - score: int = 0 - flag_return_touches: int = 0 - home_flag_at_base: bool = True - touch_return_timer: Optional[ba.Timer] = None - enemy_flag_at_base: bool = False - flag: Optional[CTFFlag] = None - last_flag_leave_time: Optional[float] = None - touch_return_timer_ticking: Optional[ba.NodeActor] = None + + def __init__(self, base_pos: Sequence[float], + base_region_material: ba.Material, base_region: ba.Node, + spaz_material_no_flag_physical: ba.Material, + spaz_material_no_flag_collide: ba.Material, + flagmaterial: ba.Material): + self.base_pos = base_pos + self.base_region_material = base_region_material + self.base_region = base_region + self.spaz_material_no_flag_physical = spaz_material_no_flag_physical + self.spaz_material_no_flag_collide = spaz_material_no_flag_collide + self.flagmaterial = flagmaterial + self.score = 0 + self.flag_return_touches = 0 + self.home_flag_at_base = True + self.touch_return_timer: Optional[ba.Timer] = None + self.enemy_flag_at_base = False + self.flag: Optional[CTFFlag] = None + self.last_flag_leave_time: Optional[float] = None + self.touch_return_timer_ticking: Optional[ba.NodeActor] = None # ba_meta export game diff --git a/assets/src/ba_data/python/bastd/game/chosenone.py b/assets/src/ba_data/python/bastd/game/chosenone.py index db166dc0..e750c390 100644 --- a/assets/src/ba_data/python/bastd/game/chosenone.py +++ b/assets/src/ba_data/python/bastd/game/chosenone.py @@ -25,7 +25,6 @@ from __future__ import annotations from typing import TYPE_CHECKING -from dataclasses import dataclass import ba from bastd.actor.flag import Flag @@ -35,16 +34,18 @@ if TYPE_CHECKING: from typing import Any, Type, List, Dict, Optional, Sequence, Union -@dataclass(eq=False) class Player(ba.Player['Team']): """Our player type for this game.""" - chosen_light: Optional[ba.NodeActor] = None + + def __init__(self) -> None: + self.chosen_light: Optional[ba.NodeActor] = None -@dataclass(eq=False) class Team(ba.Team[Player]): """Our team type for this game.""" - time_remaining: int + + def __init__(self, time_remaining: int) -> None: + self.time_remaining = time_remaining # ba_meta export game diff --git a/assets/src/ba_data/python/bastd/game/elimination.py b/assets/src/ba_data/python/bastd/game/elimination.py index ffe07ce3..d94c7988 100644 --- a/assets/src/ba_data/python/bastd/game/elimination.py +++ b/assets/src/ba_data/python/bastd/game/elimination.py @@ -25,7 +25,6 @@ from __future__ import annotations -from dataclasses import dataclass, field from typing import TYPE_CHECKING import ba @@ -164,18 +163,20 @@ class Icon(ba.Actor): ba.timer(0.6, self.update_for_lives) -@dataclass(eq=False) class Player(ba.Player['Team']): """Our player type for this game.""" - lives: int = 0 - icons: List[Icon] = field(default_factory=list) + + def __init__(self) -> None: + self.lives = 0 + self.icons: List[Icon] = [] -@dataclass(eq=False) class Team(ba.Team[Player]): """Our team type for this game.""" - survival_seconds: Optional[int] = None - spawn_order: List[Player] = field(default_factory=list) + + def __init__(self) -> None: + self.survival_seconds: Optional[int] = None + self.spawn_order: List[Player] = [] # ba_meta export game diff --git a/assets/src/ba_data/python/bastd/game/football.py b/assets/src/ba_data/python/bastd/game/football.py index d8cdbccc..2e281b84 100644 --- a/assets/src/ba_data/python/bastd/game/football.py +++ b/assets/src/ba_data/python/bastd/game/football.py @@ -26,7 +26,6 @@ from __future__ import annotations import random -from dataclasses import dataclass from typing import TYPE_CHECKING import math @@ -66,12 +65,10 @@ class FootballFlag(stdflag.Flag): self.node.connectattr('position', self.light, 'position') -@dataclass(eq=False) class Player(ba.Player['Team']): """Our player type for this game.""" -@dataclass(eq=False) class Team(ba.Team[Player]): """Our team type for this game.""" diff --git a/assets/src/ba_data/python/bastd/game/ninjafight.py b/assets/src/ba_data/python/bastd/game/ninjafight.py index 85a71656..93c9e26a 100644 --- a/assets/src/ba_data/python/bastd/game/ninjafight.py +++ b/assets/src/ba_data/python/bastd/game/ninjafight.py @@ -37,8 +37,16 @@ if TYPE_CHECKING: from typing import Any, Type, Dict, List, Optional +class Player(ba.Player['Team']): + """Our player type for this game.""" + + +class Team(ba.Team[Player]): + """Our team type for this game.""" + + # ba_meta export game -class NinjaFightGame(ba.TeamGameActivity[ba.Player, ba.Team]): +class NinjaFightGame(ba.TeamGameActivity[Player, Team]): """ A co-op game where you try to defeat a group of Ninjas as fast as possible @@ -116,7 +124,7 @@ class NinjaFightGame(ba.TeamGameActivity[ba.Player, ba.Team]): spazbot.ChargerBot, pos=(0, 3, 1), spawn_time=3.0)) # Called for each spawning player. - def spawn_player(self, player: ba.Player) -> ba.Actor: + def spawn_player(self, player: Player) -> ba.Actor: # Let's spawn close to the center. spawn_center = (0, 3, -2) diff --git a/assets/src/ba_data/python/bastd/game/onslaught.py b/assets/src/ba_data/python/bastd/game/onslaught.py index 225b4773..11856451 100644 --- a/assets/src/ba_data/python/bastd/game/onslaught.py +++ b/assets/src/ba_data/python/bastd/game/onslaught.py @@ -27,7 +27,6 @@ from __future__ import annotations import math import random -from dataclasses import dataclass from typing import TYPE_CHECKING import ba @@ -39,12 +38,10 @@ if TYPE_CHECKING: from bastd.actor.scoreboard import Scoreboard -@dataclass(eq=False) class Player(ba.Player['Team']): """Our player type for this game.""" -@dataclass(eq=False) class Team(ba.Team[Player]): """Our team type for this game.""" diff --git a/assets/src/ba_data/python/bastd/game/race.py b/assets/src/ba_data/python/bastd/game/race.py index d55054b9..86950240 100644 --- a/assets/src/ba_data/python/bastd/game/race.py +++ b/assets/src/ba_data/python/bastd/game/race.py @@ -66,13 +66,13 @@ class RaceRegion(ba.Actor): }) -@dataclass(eq=False) class Player(ba.Player['Team']): """Our player type for this game.""" - distance_txt: Optional[ba.Node] = None + + def __init__(self) -> None: + self.distance_txt: Optional[ba.Node] = None -@dataclass(eq=False) class Team(ba.Team[Player]): """Our team type for this game.""" diff --git a/assets/src/ba_data/python/bastd/game/targetpractice.py b/assets/src/ba_data/python/bastd/game/targetpractice.py index 9ff37d9b..d34ee538 100644 --- a/assets/src/ba_data/python/bastd/game/targetpractice.py +++ b/assets/src/ba_data/python/bastd/game/targetpractice.py @@ -29,7 +29,7 @@ import random from typing import TYPE_CHECKING import ba -from bastd.actor import playerspaz +from bastd.actor.playerspaz import PlayerSpazDeathMessage if TYPE_CHECKING: from typing import Any, Type, List, Dict, Optional, Sequence @@ -193,7 +193,7 @@ class TargetPracticeGame(ba.TeamGameActivity[Player, Team]): def handlemessage(self, msg: Any) -> Any: # When players die, respawn them. - if isinstance(msg, playerspaz.PlayerSpazDeathMessage): + if isinstance(msg, PlayerSpazDeathMessage): super().handlemessage(msg) # Do standard stuff. player = msg.playerspaz(self).getplayer() assert player is not None diff --git a/assets/src/ba_data/python/bastd/game/thelaststand.py b/assets/src/ba_data/python/bastd/game/thelaststand.py index dafea99b..3eb3eaad 100644 --- a/assets/src/ba_data/python/bastd/game/thelaststand.py +++ b/assets/src/ba_data/python/bastd/game/thelaststand.py @@ -23,7 +23,6 @@ from __future__ import annotations import random -from dataclasses import dataclass from typing import TYPE_CHECKING import ba @@ -36,12 +35,10 @@ if TYPE_CHECKING: from bastd.actor.scoreboard import Scoreboard -@dataclass(eq=False) class Player(ba.Player['Team']): """Our player type for this game.""" -@dataclass(eq=False) class Team(ba.Team[Player]): """Our team type for this game.""" diff --git a/assets/src/ba_data/python/bastd/ui/playlist/edit.py b/assets/src/ba_data/python/bastd/ui/playlist/edit.py index 1d5b123d..7675928d 100644 --- a/assets/src/ba_data/python/bastd/ui/playlist/edit.py +++ b/assets/src/ba_data/python/bastd/ui/playlist/edit.py @@ -24,8 +24,8 @@ from __future__ import annotations from typing import TYPE_CHECKING, cast -import _ba import ba +import _ba if TYPE_CHECKING: from typing import Optional, List @@ -253,13 +253,13 @@ class PlaylistEditWindow(ba.Window): get_root_widget()) def _add(self) -> None: - # store list name then tell the session to perform an add + # Store list name then tell the session to perform an add. self._editcontroller.set_name( cast(str, ba.textwidget(query=self._text_field))) self._editcontroller.add_game_pressed() def _edit(self) -> None: - # store list name then tell the session to perform an add + # Store list name then tell the session to perform an add. self._editcontroller.set_name( cast(str, ba.textwidget(query=self._text_field))) self._editcontroller.edit_game_pressed() @@ -283,6 +283,7 @@ class PlaylistEditWindow(ba.Window): ba.Lstr(resource=self._r + '.cantSaveEmptyListText')) ba.playsound(ba.getsound('error')) return + # We couldn't actually replace the default list anyway, but disallow # using its exact name to avoid confusion. if new_name == self._editcontroller.get_default_list_name().evaluate(): @@ -291,7 +292,7 @@ class PlaylistEditWindow(ba.Window): ba.playsound(ba.getsound('error')) return - # if we had an old one, delete it + # If we had an old one, delete it. if self._editcontroller.get_existing_playlist_name() is not None: _ba.add_transaction({ 'type': @@ -326,6 +327,7 @@ class PlaylistEditWindow(ba.Window): def _refresh(self) -> None: from ba.internal import getclass + # Need to grab this here as rebuilding the list will # change it otherwise. old_selection_index = self._editcontroller.get_selected_index() @@ -336,7 +338,7 @@ class PlaylistEditWindow(ba.Window): try: cls = getclass(pentry['type'], subclassof=ba.GameActivity) - desc = cls.get_config_display_string(pentry) + desc = cls.get_settings_display_string(pentry) except Exception: ba.print_exception() desc = "(invalid: '" + pentry['type'] + "')" @@ -353,7 +355,8 @@ class PlaylistEditWindow(ba.Window): v_align='center', selectable=True) ba.widget(edit=txtw, show_buffer_top=50, show_buffer_bottom=50) - # wanna be able to jump up to the text field from the top one + + # Wanna be able to jump up to the text field from the top one. if index == 0: ba.widget(edit=txtw, up_widget=self._text_field) self._list_widgets.append(txtw) diff --git a/assets/src/ba_data/python/bastd/ui/playlist/editcontroller.py b/assets/src/ba_data/python/bastd/ui/playlist/editcontroller.py index ff03485c..52fc2aef 100644 --- a/assets/src/ba_data/python/bastd/ui/playlist/editcontroller.py +++ b/assets/src/ba_data/python/bastd/ui/playlist/editcontroller.py @@ -162,7 +162,7 @@ class PlaylistEditController: self._show_edit_ui(gametype=getclass( self._playlist[self._selected_index]['type'], subclassof=ba.GameActivity), - config=self._playlist[self._selected_index]) + settings=self._playlist[self._selected_index]) def add_game_cancelled(self) -> None: """(internal)""" @@ -173,16 +173,16 @@ class PlaylistEditController: editcontroller=self, transition='in_left').get_root_widget()) def _show_edit_ui(self, gametype: Type[ba.GameActivity], - config: Optional[Dict[str, Any]]) -> None: - self._editing_game = (config is not None) + settings: Optional[Dict[str, Any]]) -> None: + self._editing_game = (settings is not None) self._editing_game_type = gametype assert self._sessiontype is not None - gametype.create_config_ui(self._sessiontype, copy.deepcopy(config), - self._edit_game_done) + gametype.create_settings_ui(self._sessiontype, copy.deepcopy(settings), + self._edit_game_done) def add_game_type_selected(self, gametype: Type[ba.GameActivity]) -> None: """(internal)""" - self._show_edit_ui(gametype=gametype, config=None) + self._show_edit_ui(gametype=gametype, settings=None) def _edit_game_done(self, config: Optional[Dict[str, Any]]) -> None: from bastd.ui.playlist import edit as pedit diff --git a/assets/src/ba_data/python/bastd/ui/playoptions.py b/assets/src/ba_data/python/bastd/ui/playoptions.py index f312e3fd..a62b56e9 100644 --- a/assets/src/ba_data/python/bastd/ui/playoptions.py +++ b/assets/src/ba_data/python/bastd/ui/playoptions.py @@ -204,7 +204,7 @@ class PlayOptionsWindow(popup.PopupWindow): try: desc = getclass(entry['type'], subclassof=ba.GameActivity - ).get_config_display_string(entry) + ).get_settings_display_string(entry) if not owned: desc = ba.Lstr( value='${DESC}\n${UNLOCK}', diff --git a/docs/ba_module.md b/docs/ba_module.md index 17580518..41b164e5 100644 --- a/docs/ba_module.md +++ b/docs/ba_module.md @@ -1519,7 +1519,7 @@ start_long_action(callback_when_done=ba.ContextC

Methods Inherited:

-
add_actor_weak_ref(), add_player(), add_team(), begin(), continue_or_end_game(), create_config_ui(), create_player(), create_team(), dep_is_present(), destroy(), end(), end_game(), get_config_display_string(), get_description(), get_description_display_string(), get_display_string(), get_dynamic_deps(), get_game_settings(), get_instance_description(), get_instance_description_short(), get_instance_display_string(), get_instance_scoreboard_display_string(), get_name(), get_score_info(), get_supported_maps(), get_team_display_string(), handlemessage(), has_begun(), has_ended(), has_transitioned_in(), is_transitioning_out(), is_waiting_for_continue(), on_continue(), on_expire(), on_player_join(), on_player_leave(), on_team_join(), on_team_leave(), on_transition_in(), on_transition_out(), project_flag_stand(), remove_player(), remove_team(), respawn_player(), retain_actor(), set_has_ended(), set_immediate_end(), setup_standard_powerup_drops(), setup_standard_time_limit(), show_info(), show_scoreboard_info(), show_zoom_message(), spawn_player(), spawn_player_if_exists(), transition_in(), transition_out()
+
add_actor_weak_ref(), add_player(), add_team(), begin(), continue_or_end_game(), create_player(), create_settings_ui(), create_team(), dep_is_present(), destroy(), end(), end_game(), get_description(), get_description_display_string(), get_display_string(), get_dynamic_deps(), get_game_settings(), get_instance_description(), get_instance_description_short(), get_instance_display_string(), get_instance_scoreboard_display_string(), get_name(), get_score_info(), get_settings_display_string(), get_supported_maps(), get_team_display_string(), handlemessage(), has_begun(), has_ended(), has_transitioned_in(), is_transitioning_out(), is_waiting_for_continue(), on_continue(), on_expire(), on_player_join(), on_player_leave(), on_team_join(), on_team_leave(), on_transition_in(), on_transition_out(), project_flag_stand(), remove_player(), remove_team(), respawn_player(), retain_actor(), set_has_ended(), set_immediate_end(), setup_standard_powerup_drops(), setup_standard_time_limit(), show_info(), show_scoreboard_info(), show_zoom_message(), spawn_player(), spawn_player_if_exists(), transition_in(), transition_out()

Methods Defined or Overridden:

<constructor>, celebrate(), fade_to_red(), get_score_type(), on_begin(), setup_low_life_warning_sound(), spawn_player_spaz(), supports_session_type()
@@ -2043,7 +2043,7 @@ its time with lingering corpses, sound effects, etc.

Methods Inherited:

add_actor_weak_ref(), add_player(), add_team(), begin(), create_player(), create_team(), dep_is_present(), destroy(), get_dynamic_deps(), has_begun(), has_ended(), has_transitioned_in(), is_transitioning_out(), on_expire(), on_team_join(), on_team_leave(), on_transition_out(), remove_player(), remove_team(), retain_actor(), set_has_ended(), set_immediate_end(), transition_in(), transition_out()

Methods Defined or Overridden:

-
<constructor>, continue_or_end_game(), create_config_ui(), end(), end_game(), get_config_display_string(), get_description(), get_description_display_string(), get_display_string(), get_game_settings(), get_instance_description(), get_instance_description_short(), get_instance_display_string(), get_instance_scoreboard_display_string(), get_name(), get_score_info(), get_supported_maps(), get_team_display_string(), handlemessage(), is_waiting_for_continue(), on_begin(), on_continue(), on_player_join(), on_player_leave(), on_transition_in(), project_flag_stand(), respawn_player(), setup_standard_powerup_drops(), setup_standard_time_limit(), show_info(), show_scoreboard_info(), show_zoom_message(), spawn_player(), spawn_player_if_exists(), spawn_player_spaz(), supports_session_type()
+
<constructor>, continue_or_end_game(), create_settings_ui(), end(), end_game(), get_description(), get_description_display_string(), get_display_string(), get_game_settings(), get_instance_description(), get_instance_description_short(), get_instance_display_string(), get_instance_scoreboard_display_string(), get_name(), get_score_info(), get_settings_display_string(), get_supported_maps(), get_team_display_string(), handlemessage(), is_waiting_for_continue(), on_begin(), on_continue(), on_player_join(), on_player_leave(), on_transition_in(), project_flag_stand(), respawn_player(), setup_standard_powerup_drops(), setup_standard_time_limit(), show_info(), show_scoreboard_info(), show_zoom_message(), spawn_player(), spawn_player_if_exists(), spawn_player_spaz(), supports_session_type()

<constructor>

ba.GameActivity(settings: Dict[str, Any])

@@ -2058,9 +2058,9 @@ its time with lingering corpses, sound effects, etc.

and calls either end_game or continue_game depending on the result

-

create_config_ui()

+

create_settings_ui()

<class method>
-

create_config_ui(sessionclass: Type[ba.Session], config: Optional[Dict[str, Any]], completion_call: Callable[[Optional[Dict[str, Any]]], None]) -> None

+

create_settings_ui(sessionclass: Type[ba.Session], settings: Optional[Dict[str, Any]], completion_call: Callable[[Optional[Dict[str, Any]]], None]) -> None

Launch an in-game UI to configure settings for a game type.

@@ -2099,16 +2099,6 @@ immediately. This method should be overridden by subclasses.

there is no 'winner' yet; this way things like the standard time-limit (ba.GameActivity.setup_standard_time_limit()) will work with the game.

-
-

get_config_display_string()

-
<class method>
-

get_config_display_string(config: Dict[str, Any]) -> ba.Lstr

- -

Given a game config dict, return a short description for it.

- -

This is used when viewing game-lists or showing what game -is up next in a series.

-

get_description()

<class method>
@@ -2143,7 +2133,7 @@ can override this method.

<class method>

get_game_settings(sessiontype: Type[ba.Session]) -> List[Tuple[str, Dict[str, Any]]]

-

Called by the default ba.GameActivity.create_config_ui() +

Called by the default ba.GameActivity.create_settings_ui() implementation; should return a dict of config options to be presented to the user for the given ba.Session type.

@@ -2284,12 +2274,22 @@ of the screen, so it should be as concise as possible.

Return info about game scoring setup; can be overridden by games.

+
+

get_settings_display_string()

+
<class method>
+

get_settings_display_string(config: Dict[str, Any]) -> ba.Lstr

+ +

Given a game config dict, return a short description for it.

+ +

This is used when viewing game-lists or showing what game +is up next in a series.

+

get_supported_maps()

<class method>

get_supported_maps(sessiontype: Type[ba.Session]) -> List[str]

-

Called by the default ba.GameActivity.create_config_ui() +

Called by the default ba.GameActivity.create_settings_ui() implementation; should return a list of map names valid for this game-type for the given ba.Session type.

@@ -4814,7 +4814,7 @@ of the session.

Methods Inherited:

-
add_actor_weak_ref(), add_player(), add_team(), begin(), continue_or_end_game(), create_config_ui(), create_player(), create_team(), dep_is_present(), destroy(), end_game(), get_config_display_string(), get_description(), get_description_display_string(), get_display_string(), get_dynamic_deps(), get_game_settings(), get_instance_description(), get_instance_description_short(), get_instance_display_string(), get_instance_scoreboard_display_string(), get_name(), get_score_info(), get_supported_maps(), get_team_display_string(), handlemessage(), has_begun(), has_ended(), has_transitioned_in(), is_transitioning_out(), is_waiting_for_continue(), on_continue(), on_expire(), on_player_join(), on_player_leave(), on_team_join(), on_team_leave(), on_transition_out(), project_flag_stand(), remove_player(), remove_team(), respawn_player(), retain_actor(), set_has_ended(), set_immediate_end(), setup_standard_powerup_drops(), setup_standard_time_limit(), show_info(), show_scoreboard_info(), show_zoom_message(), spawn_player(), spawn_player_if_exists(), transition_in(), transition_out()
+
add_actor_weak_ref(), add_player(), add_team(), begin(), continue_or_end_game(), create_player(), create_settings_ui(), create_team(), dep_is_present(), destroy(), end_game(), get_description(), get_description_display_string(), get_display_string(), get_dynamic_deps(), get_game_settings(), get_instance_description(), get_instance_description_short(), get_instance_display_string(), get_instance_scoreboard_display_string(), get_name(), get_score_info(), get_settings_display_string(), get_supported_maps(), get_team_display_string(), handlemessage(), has_begun(), has_ended(), has_transitioned_in(), is_transitioning_out(), is_waiting_for_continue(), on_continue(), on_expire(), on_player_join(), on_player_leave(), on_team_join(), on_team_leave(), on_transition_out(), project_flag_stand(), remove_player(), remove_team(), respawn_player(), retain_actor(), set_has_ended(), set_immediate_end(), setup_standard_powerup_drops(), setup_standard_time_limit(), show_info(), show_scoreboard_info(), show_zoom_message(), spawn_player(), spawn_player_if_exists(), transition_in(), transition_out()

Methods Defined or Overridden:

<constructor>, end(), on_begin(), on_transition_in(), spawn_player_spaz(), supports_session_type()