Bit more tidying

This commit is contained in:
Eric Froemling 2020-05-30 15:05:28 -07:00
parent 83e7388d49
commit 1c0e4896fa
33 changed files with 216 additions and 221 deletions

View File

@ -4132,16 +4132,16 @@
"assets/build/windows/x64/python.exe": "https://files.ballistica.net/cache/ba1/25/a7/dc87c1be41605eb6fefd0145144c", "assets/build/windows/x64/python.exe": "https://files.ballistica.net/cache/ba1/25/a7/dc87c1be41605eb6fefd0145144c",
"assets/build/windows/x64/python37.dll": "https://files.ballistica.net/cache/ba1/b9/e4/d912f56e42e9991bcbb4c804cfcb", "assets/build/windows/x64/python37.dll": "https://files.ballistica.net/cache/ba1/b9/e4/d912f56e42e9991bcbb4c804cfcb",
"assets/build/windows/x64/pythonw.exe": "https://files.ballistica.net/cache/ba1/6c/bb/b6f52c306aa4e88061510e96cefe", "assets/build/windows/x64/pythonw.exe": "https://files.ballistica.net/cache/ba1/6c/bb/b6f52c306aa4e88061510e96cefe",
"build/prefab/linux-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f0/6c/17cfdbdfeac96070b5134251a451", "build/prefab/linux-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/36/5a/025457e87759c13a5067617816cd",
"build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/52/25/297b9a00058301b85ddb02f6ee09", "build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/66/49/fb5663472ab1f4bd32f5748ba4d7",
"build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/94/a8/e1477ff611c1e1a5a625bffff60c", "build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/44/3e/6eb652f11d24c22f87ae8aab399b",
"build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/c6/d8/20917734baac0fdec68f72c41ed7", "build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/f4/57/7e48692454b644a7111902f12b58",
"build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ed/2b/0f91bf6faf8efd08890a687d48d7", "build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/18/55/246021de09b021993e8bdbdb19a6",
"build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1b/cc/88ba8eb1dbd3cc30181d75b4d16e", "build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/3f/ea/079aa2649359d2024b7c20dd19d0",
"build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/9e/df/8560a3f6a5394d6e1e4eff3c4225", "build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/05/5d/2608f732d75799cfe09c6947736a",
"build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/73/e2/8d816aa46639e1200a63c387ad5a", "build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ef/20/4f2abb279d24dced1f11f83fbe78",
"build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/85/9a/d64a09c882fe8ddd061d37547ea3", "build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/f9/36/28081d9962d3f91c286663357e80",
"build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/d9/f8/ede540a4757ea9c246b4818abc93", "build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/51/55/83ceb6ffb806c75815e5f9e88008",
"build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/33/00/49adaf80c83df4d6d806691676c0", "build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/46/ea/461f76e113d3a02da3c61ea04bdb",
"build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/5e/e3/4a2fd651c619449b0ac47580b442" "build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/83/af/a8ce32760e4dc300ac861f745615"
} }

View File

@ -34,7 +34,7 @@ NOTE: This file was autogenerated by gendummymodule; do not edit by hand.
""" """
# (hash we can use to see if this file is out of date) # (hash we can use to see if this file is out of date)
# SOURCES_HASH=34814525496434113316994893689868607574 # SOURCES_HASH=33373537027192610824913965080968605548
# I'm sorry Pylint. I know this file saddens you. Be strong. # I'm sorry Pylint. I know this file saddens you. Be strong.
# pylint: disable=useless-suppression # pylint: disable=useless-suppression
@ -727,13 +727,6 @@ class Node:
""" """
return bool() return bool()
def get_name(self) -> str:
"""get_name() -> str
Return the name assigned to a Node; used mainly for debugging
"""
return str()
# Show that ur return type varies based on "doraise" value: # Show that ur return type varies based on "doraise" value:
@overload @overload
def getdelegate(self, def getdelegate(self,
@ -756,6 +749,13 @@ class Node:
""" """
return None return None
def getname(self) -> str:
"""getname() -> str
Return the name assigned to a Node; used mainly for debugging
"""
return str()
def getnodetype(self) -> str: def getnodetype(self) -> str:
"""getnodetype() -> str """getnodetype() -> str
@ -915,8 +915,8 @@ class SessionPlayer:
""" """
return {'foo': 'bar'} return {'foo': 'bar'}
def get_name(self, full: bool = False, icon: bool = True) -> str: def getname(self, full: bool = False, icon: bool = True) -> str:
"""get_name(full: bool = False, icon: bool = True) -> str """getname(full: bool = False, icon: bool = True) -> str
Returns the player's name. If icon is True, the long version of the Returns the player's name. If icon is True, the long version of the
name may include an icon. name may include an icon.

View File

@ -282,20 +282,6 @@ class Activity(DependencyComponent, Generic[PlayerType, TeamType]):
"""(internal)""" """(internal)"""
self._has_ended = val self._has_ended = val
# def set_immediate_end(self, results: ba.TeamGameResults, delay: float,
# force: bool) -> None:
# """Set the activity to die immediately after beginning.
# (internal)
# """
# if self.has_begun():
# raise RuntimeError('This should only be called for Activities'
# 'that have not yet begun.')
# if not self._should_end_immediately or force:
# self._should_end_immediately = True
# self._should_end_immediately_results = results
# self._should_end_immediately_delay = delay
def destroy(self) -> None: def destroy(self) -> None:
"""Begin the process of tearing down the activity. """Begin the process of tearing down the activity.

View File

@ -62,7 +62,7 @@ def game_begin_analytics() -> None:
_ba.increment_analytics_count('Co-op round start 4+ human players') _ba.increment_analytics_count('Co-op round start 4+ human players')
elif isinstance(session, DualTeamSession): elif isinstance(session, DualTeamSession):
_ba.set_analytics_screen('Teams Game: ' + activity.get_name()) _ba.set_analytics_screen('Teams Game: ' + activity.getname())
_ba.increment_analytics_count('Teams round start') _ba.increment_analytics_count('Teams round start')
if len(activity.players) == 1: if len(activity.players) == 1:
_ba.increment_analytics_count('Teams round start 1 human player') _ba.increment_analytics_count('Teams round start 1 human player')
@ -74,7 +74,7 @@ def game_begin_analytics() -> None:
_ba.increment_analytics_count('Teams round start 8+ human players') _ba.increment_analytics_count('Teams round start 8+ human players')
elif isinstance(session, FreeForAllSession): elif isinstance(session, FreeForAllSession):
_ba.set_analytics_screen('FreeForAll Game: ' + activity.get_name()) _ba.set_analytics_screen('FreeForAll Game: ' + activity.getname())
_ba.increment_analytics_count('Free-for-all round start') _ba.increment_analytics_count('Free-for-all round start')
if len(activity.players) == 1: if len(activity.players) == 1:
_ba.increment_analytics_count( _ba.increment_analytics_count(

View File

@ -56,7 +56,7 @@ class GameActivity(Activity[PlayerType, TeamType]):
tips: List[Union[str, Dict[str, Any]]] = [] tips: List[Union[str, Dict[str, Any]]] = []
# Default get_name() will return this if not None. # Default getname() will return this if not None.
name: Optional[str] = None name: Optional[str] = None
# Default get_description() will return this if not None. # Default get_description() will return this if not None.
@ -112,7 +112,7 @@ class GameActivity(Activity[PlayerType, TeamType]):
return cls.score_info if cls.score_info is not None else ScoreInfo() return cls.score_info if cls.score_info is not None else ScoreInfo()
@classmethod @classmethod
def get_name(cls) -> str: def getname(cls) -> str:
"""Return a str name for this game type. """Return a str name for this game type.
This default implementation simply returns the 'name' class attr. This default implementation simply returns the 'name' class attr.
@ -123,9 +123,9 @@ class GameActivity(Activity[PlayerType, TeamType]):
def get_display_string(cls, settings: Optional[Dict] = None) -> ba.Lstr: def get_display_string(cls, settings: Optional[Dict] = None) -> ba.Lstr:
"""Return a descriptive name for this game/settings combo. """Return a descriptive name for this game/settings combo.
Subclasses should override get_name(); not this. Subclasses should override getname(); not this.
""" """
name = Lstr(translate=('gameNames', cls.get_name())) name = Lstr(translate=('gameNames', cls.getname()))
# A few substitutions for 'Epic', 'Solo' etc. modes. # A few substitutions for 'Epic', 'Solo' etc. modes.
# FIXME: Should provide a way for game types to define filters of # FIXME: Should provide a way for game types to define filters of
@ -512,7 +512,7 @@ class GameActivity(Activity[PlayerType, TeamType]):
# Store some basic info about players present at start time. # Store some basic info about players present at start time.
self.initial_player_info = [ self.initial_player_info = [
PlayerInfo(name=p.get_name(full=True), character=p.character) PlayerInfo(name=p.getname(full=True), character=p.character)
for p in self.players for p in self.players
] ]
@ -924,7 +924,7 @@ class GameActivity(Activity[PlayerType, TeamType]):
from ba._gameutils import animate from ba._gameutils import animate
from ba._coopsession import CoopSession from ba._coopsession import CoopSession
from bastd.actor.playerspaz import PlayerSpaz from bastd.actor.playerspaz import PlayerSpaz
name = player.get_name() name = player.getname()
color = player.color color = player.color
highlight = player.highlight highlight = player.highlight
@ -941,7 +941,7 @@ class GameActivity(Activity[PlayerType, TeamType]):
# If this is co-op and we're on Courtyard or Runaround, add the # If this is co-op and we're on Courtyard or Runaround, add the
# material that allows us to collide with the player-walls. # material that allows us to collide with the player-walls.
# FIXME: Need to generalize this. # FIXME: Need to generalize this.
if isinstance(self.session, CoopSession) and self.map.get_name() in [ if isinstance(self.session, CoopSession) and self.map.getname() in [
'Courtyard', 'Tower D' 'Courtyard', 'Tower D'
]: ]:
mat = self.map.preloaddata['collide_with_wall_material'] mat = self.map.preloaddata['collide_with_wall_material']

View File

@ -45,11 +45,11 @@ def get_device_value(device: ba.InputDevice, name: str) -> Any:
useragentstring = app.user_agent_string useragentstring = app.user_agent_string
platform = app.platform platform = app.platform
subplatform = app.subplatform subplatform = app.subplatform
bs_config = _ba.app.config appconfig = _ba.app.config
# If there's an entry in our config for this controller, use it. # If there's an entry in our config for this controller, use it.
if 'Controllers' in bs_config: if 'Controllers' in appconfig:
ccfgs = bs_config['Controllers'] ccfgs = appconfig['Controllers']
if devicename in ccfgs: if devicename in ccfgs:
mapping = None mapping = None
if unique_id in ccfgs[devicename]: if unique_id in ccfgs[devicename]:
@ -621,15 +621,15 @@ def get_last_player_name_from_input_device(device: ba.InputDevice) -> str:
(generally the last one used there) (generally the last one used there)
""" """
bs_config = _ba.app.config appconfig = _ba.app.config
# Look for a default player profile name for them; # Look for a default player profile name for them;
# otherwise default to their current random name. # otherwise default to their current random name.
profilename = '_random' profilename = '_random'
key_name = device.name + ' ' + device.unique_identifier key_name = device.name + ' ' + device.unique_identifier
if ('Default Player Profiles' in bs_config if ('Default Player Profiles' in appconfig
and key_name in bs_config['Default Player Profiles']): and key_name in appconfig['Default Player Profiles']):
profilename = bs_config['Default Player Profiles'][key_name] profilename = appconfig['Default Player Profiles'][key_name]
if profilename == '_random': if profilename == '_random':
profilename = device.get_default_player_name() profilename = device.get_default_player_name()
if profilename == '__account__': if profilename == '__account__':

View File

@ -455,7 +455,7 @@ class Chooser:
def _do_nothing(self) -> None: def _do_nothing(self) -> None:
"""Does nothing! (hacky way to disable callbacks)""" """Does nothing! (hacky way to disable callbacks)"""
def _get_name(self, full: bool = False) -> str: def _getname(self, full: bool = False) -> str:
name_raw = name = self._profilenames[self._profileindex] name_raw = name = self._profilenames[self._profileindex]
clamp = False clamp = False
if name == '_random': if name == '_random':
@ -569,8 +569,8 @@ class Chooser:
_ba.app.config.commit() _ba.app.config.commit()
# Set this player's short and full name. # Set this player's short and full name.
self._player.set_name(self._get_name(), self._player.set_name(self._getname(),
self._get_name(full=True), self._getname(full=True),
real=True) real=True)
self._ready = True self._ready = True
self._update_text() self._update_text()
@ -685,12 +685,12 @@ class Chooser:
# Once we're ready, we've saved the name, so lets ask the system # Once we're ready, we've saved the name, so lets ask the system
# for it so we get appended numbers and stuff. # for it so we get appended numbers and stuff.
text = Lstr(value=self._player.get_name(full=True)) text = Lstr(value=self._player.getname(full=True))
text = Lstr(value='${A} (${B})', text = Lstr(value='${A} (${B})',
subs=[('${A}', text), subs=[('${A}', text),
('${B}', Lstr(resource='readyText'))]) ('${B}', Lstr(resource='readyText'))])
else: else:
text = Lstr(value=self._get_name(full=True)) text = Lstr(value=self._getname(full=True))
can_switch_teams = len(self.lobby.teams) > 1 can_switch_teams = len(self.lobby.teams) > 1

View File

@ -192,7 +192,7 @@ class Map(Actor):
return None return None
@classmethod @classmethod
def get_name(cls) -> str: def getname(cls) -> str:
"""Return the unique name of this map, in English.""" """Return the unique name of this map, in English."""
return cls.name return cls.name
@ -231,14 +231,14 @@ class Map(Actor):
# Set area-of-interest bounds. # Set area-of-interest bounds.
aoi_bounds = self.get_def_bound_box('area_of_interest_bounds') aoi_bounds = self.get_def_bound_box('area_of_interest_bounds')
if aoi_bounds is None: if aoi_bounds is None:
print('WARNING: no "aoi_bounds" found for map:', self.get_name()) print('WARNING: no "aoi_bounds" found for map:', self.getname())
aoi_bounds = (-1, -1, -1, 1, 1, 1) aoi_bounds = (-1, -1, -1, 1, 1, 1)
gnode.area_of_interest_bounds = aoi_bounds gnode.area_of_interest_bounds = aoi_bounds
# Set map bounds. # Set map bounds.
map_bounds = self.get_def_bound_box('map_bounds') map_bounds = self.get_def_bound_box('map_bounds')
if map_bounds is None: if map_bounds is None:
print('WARNING: no "map_bounds" found for map:', self.get_name()) print('WARNING: no "map_bounds" found for map:', self.getname())
map_bounds = (-30, -10, -30, 30, 100, 30) map_bounds = (-30, -10, -30, 30, 100, 30)
_ba.set_map_bounds(map_bounds) _ba.set_map_bounds(map_bounds)

View File

@ -167,13 +167,13 @@ class Player(Generic[TeamType]):
""" """
return self._sessionplayer.exists() return self._sessionplayer.exists()
def get_name(self, full: bool = False, icon: bool = True) -> str: def getname(self, full: bool = False, icon: bool = True) -> str:
"""get_name(full: bool = False, icon: bool = True) -> str """getname(full: bool = False, icon: bool = True) -> str
Returns the player's name. If icon is True, the long version of the Returns the player's name. If icon is True, the long version of the
name may include an icon. name may include an icon.
""" """
return self._sessionplayer.get_name(full=full, icon=icon) return self._sessionplayer.getname(full=full, icon=icon)
def is_alive(self) -> bool: def is_alive(self) -> bool:
"""is_alive() -> bool """is_alive() -> bool

View File

@ -50,15 +50,15 @@ def get_player_profile_icon(profilename: str) -> str:
""" """
from ba._enums import SpecialChar from ba._enums import SpecialChar
bs_config = _ba.app.config appconfig = _ba.app.config
icon: str icon: str
try: try:
is_global = bs_config['Player Profiles'][profilename]['global'] is_global = appconfig['Player Profiles'][profilename]['global']
except KeyError: except KeyError:
is_global = False is_global = False
if is_global: if is_global:
try: try:
icon = bs_config['Player Profiles'][profilename]['icon'] icon = appconfig['Player Profiles'][profilename]['icon']
except KeyError: except KeyError:
icon = _ba.charstr(SpecialChar.LOGO) icon = _ba.charstr(SpecialChar.LOGO)
else: else:
@ -71,9 +71,9 @@ def get_player_profile_colors(
profiles: Dict[str, Dict[str, Any]] = None profiles: Dict[str, Dict[str, Any]] = 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."""
bs_config = _ba.app.config appconfig = _ba.app.config
if profiles is None: if profiles is None:
profiles = bs_config['Player Profiles'] profiles = appconfig['Player Profiles']
# Special case: when being asked for a random color in kiosk mode, # Special case: when being asked for a random color in kiosk mode,
# always return default purple. # always return default purple.

View File

@ -238,7 +238,6 @@ class Session:
def on_player_leave(self, sessionplayer: ba.SessionPlayer) -> None: def on_player_leave(self, sessionplayer: ba.SessionPlayer) -> None:
"""Called when a previously-accepted ba.SessionPlayer leaves.""" """Called when a previously-accepted ba.SessionPlayer leaves."""
# pylint: disable=too-many-branches
if sessionplayer not in self.players: if sessionplayer not in self.players:
print('ERROR: Session.on_player_leave called' print('ERROR: Session.on_player_leave called'
@ -250,7 +249,8 @@ class Session:
activity = self._activity_weak() activity = self._activity_weak()
if not sessionplayer.in_game: if not sessionplayer.in_game:
# Ok, the player's still in the lobby. Simply remove them from it.
# Ok, the player is still in the lobby; simply remove them.
with _ba.Context(self): with _ba.Context(self):
try: try:
self.lobby.remove_chooser(sessionplayer) self.lobby.remove_chooser(sessionplayer)
@ -261,11 +261,10 @@ class Session:
# teams/activities/etc. # teams/activities/etc.
sessionteam = sessionplayer.team sessionteam = sessionplayer.team
assert sessionteam is not None assert sessionteam is not None
assert sessionplayer in sessionteam.players
_ba.screenmessage( _ba.screenmessage(
Lstr(resource='playerLeftText', Lstr(resource='playerLeftText',
subs=[('${PLAYER}', sessionplayer.get_name(full=True))])) subs=[('${PLAYER}', sessionplayer.getname(full=True))]))
# Remove them from their SessionTeam. # Remove them from their SessionTeam.
if sessionplayer in sessionteam.players: if sessionplayer in sessionteam.players:
@ -287,38 +286,42 @@ class Session:
# If we're a non-team session, remove their team too. # If we're a non-team session, remove their team too.
if not self.use_teams: if not self.use_teams:
self._remove_player_team(sessionteam, activity)
# They should have been the only one on their team.
assert not sessionteam.players
# Remove their Team from the Activity.
if activity is not None:
if sessionteam.gameteam in activity.teams:
activity.remove_team(sessionteam)
else:
print('Team not found in Activity in on_player_leave.')
# And then from the Session.
with _ba.Context(self):
if sessionteam in self.teams:
try:
self.teams.remove(sessionteam)
self.on_team_leave(sessionteam)
except Exception:
print_exception(
f'Error in on_team_leave for Session {self}.')
else:
print('Team no in Session teams in on_player_leave.')
try:
sessionteam.reset_sessiondata()
except Exception:
print_exception(
f'Error clearing sessiondata'
f' for team {sessionteam} in session {self}.')
# Now remove them from the session list. # Now remove them from the session list.
self.players.remove(sessionplayer) self.players.remove(sessionplayer)
def _remove_player_team(self, sessionteam: ba.SessionTeam,
activity: Optional[ba.Activity]) -> None:
"""Remove the player-specific team in non-teams mode."""
# They should have been the only one on their team.
assert not sessionteam.players
# Remove their Team from the Activity.
if activity is not None:
if sessionteam.gameteam in activity.teams:
activity.remove_team(sessionteam)
else:
print('Team not found in Activity in on_player_leave.')
# And then from the Session.
with _ba.Context(self):
if sessionteam in self.teams:
try:
self.teams.remove(sessionteam)
self.on_team_leave(sessionteam)
except Exception:
print_exception(
f'Error in on_team_leave for Session {self}.')
else:
print('Team no in Session teams in on_player_leave.')
try:
sessionteam.reset_sessiondata()
except Exception:
print_exception(f'Error clearing sessiondata'
f' for team {sessionteam} in session {self}.')
def end(self) -> None: def end(self) -> None:
"""Initiates an end to the session and a return to the main menu. """Initiates an end to the session and a return to the main menu.
@ -408,6 +411,15 @@ class Session:
return UNHANDLED return UNHANDLED
class _SetActivityLock:
def __init__(self, session: ba.Session) -> None:
self._session = session
self._session._in_set_activity = True
def __del__(self) -> None:
self._session._in_set_activity = False
def set_activity(self, activity: ba.Activity) -> None: def set_activity(self, activity: ba.Activity) -> None:
"""Assign a new current ba.Activity for the session. """Assign a new current ba.Activity for the session.
@ -420,8 +432,7 @@ class Session:
# Sanity test: make sure this doesn't get called recursively. # Sanity test: make sure this doesn't get called recursively.
if self._in_set_activity: if self._in_set_activity:
raise RuntimeError( raise RuntimeError('Session.set_activity() called recursively.')
'Session.set_activity() cannot be called recursively.')
self._in_set_activity = True self._in_set_activity = True
if activity.session is not _ba.getsession(): if activity.session is not _ba.getsession():
@ -432,7 +443,7 @@ class Session:
return return
if activity is self._activity_retained: if activity is self._activity_retained:
print_error('activity set to already-current activity') print_error('Activity set to already-current activity.')
return return
if self._next_activity is not None: if self._next_activity is not None:
@ -640,7 +651,7 @@ class Session:
_ba.screenmessage( _ba.screenmessage(
Lstr(resource='playerDelayedJoinText', Lstr(resource='playerDelayedJoinText',
subs=[('${PLAYER}', subs=[('${PLAYER}',
sessionplayer.get_name(full=True))]), sessionplayer.getname(full=True))]),
color=(0, 1, 0), color=(0, 1, 0),
) )
@ -654,7 +665,7 @@ class Session:
sessionteam = SessionTeam( sessionteam = SessionTeam(
team_id=our_team_id, team_id=our_team_id,
color=chooser.get_color(), color=chooser.get_color(),
name=chooser.getplayer().get_name(full=True, icon=False), name=chooser.getplayer().getname(full=True, icon=False),
) )
# Add player's team to the Session. # Add player's team to the Session.

View File

@ -104,7 +104,7 @@ class PlayerRecord:
raise SessionPlayerNotFoundError() raise SessionPlayerNotFoundError()
return self._player return self._player
def get_name(self, full: bool = False) -> str: def getname(self, full: bool = False) -> str:
"""Return the player entry's name.""" """Return the player entry's name."""
return self.name_full if full else self.name return self.name_full if full else self.name
@ -307,8 +307,8 @@ class Stats:
def register_player(self, player: ba.SessionPlayer) -> None: def register_player(self, player: ba.SessionPlayer) -> None:
"""Register a player with this score-set.""" """Register a player with this score-set."""
name = player.get_name() name = player.getname()
name_full = player.get_name(full=True) name_full = player.getname(full=True)
try: try:
# If the player already exists, update his character and such as # If the player already exists, update his character and such as
# it may have changed. # it may have changed.
@ -327,13 +327,13 @@ class Stats:
# corresponds to a player with that name. # corresponds to a player with that name.
for record_id, record in self._player_records.items(): for record_id, record in self._player_records.items():
lastplayer = record.get_last_player() lastplayer = record.get_last_player()
if lastplayer and lastplayer.get_name() == record_id: if lastplayer and lastplayer.getname() == record_id:
records[record_id] = record records[record_id] = record
return records return records
def player_got_hit(self, player: ba.SessionPlayer) -> None: def player_got_hit(self, player: ba.SessionPlayer) -> None:
"""Call this when a player got hit.""" """Call this when a player got hit."""
s_player = self._player_records[player.get_name()] s_player = self._player_records[player.getname()]
s_player.streak = 0 s_player.streak = 0
def player_scored(self, def player_scored(self,
@ -364,7 +364,7 @@ class Stats:
from ba._gameactivity import GameActivity from ba._gameactivity import GameActivity
from ba._lang import Lstr from ba._lang import Lstr
del victim_player # Currently unused. del victim_player # Currently unused.
name = player.get_name() name = player.getname()
s_player = self._player_records[name] s_player = self._player_records[name]
if kill: if kill:
@ -384,7 +384,7 @@ class Stats:
assert self._activity is not None assert self._activity is not None
activity = self._activity() activity = self._activity()
if isinstance(activity, GameActivity): if isinstance(activity, GameActivity):
name_full = player.get_name(full=True, icon=False) name_full = player.getname(full=True, icon=False)
activity.show_zoom_message( activity.show_zoom_message(
Lstr(resource='nameScoresText', Lstr(resource='nameScoresText',
subs=[('${NAME}', name_full)]), subs=[('${NAME}', name_full)]),
@ -450,7 +450,7 @@ class Stats:
killer: ba.Player = None) -> None: killer: ba.Player = None) -> None:
"""Should be called when a player is killed.""" """Should be called when a player is killed."""
from ba._lang import Lstr from ba._lang import Lstr
name = player.get_name() name = player.getname()
prec = self._player_records[name] prec = self._player_records[name]
prec.streak = 0 prec.streak = 0
if killed: if killed:
@ -468,7 +468,7 @@ class Stats:
if killer.team is player.team: if killer.team is player.team:
_ba.screenmessage(Lstr(resource='nameBetrayedText', _ba.screenmessage(Lstr(resource='nameBetrayedText',
subs=[('${NAME}', subs=[('${NAME}',
killer.get_name()), killer.getname()),
('${VICTIM}', name)]), ('${VICTIM}', name)]),
top=True, top=True,
color=killer.color, color=killer.color,
@ -476,7 +476,7 @@ class Stats:
else: else:
_ba.screenmessage(Lstr(resource='nameKilledText', _ba.screenmessage(Lstr(resource='nameKilledText',
subs=[('${NAME}', subs=[('${NAME}',
killer.get_name()), killer.getname()),
('${VICTIM}', name)]), ('${VICTIM}', name)]),
top=True, top=True,
color=killer.color, color=killer.color,

View File

@ -61,12 +61,12 @@ class FreeForAllVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
player_order_prev.sort( player_order_prev.sort(
reverse=True, reverse=True,
key=lambda p: key=lambda p:
(p.team.sessiondata['previous_score'], p.get_name(full=True))) (p.team.sessiondata['previous_score'], p.getname(full=True)))
player_order = list(self.players) player_order = list(self.players)
player_order.sort(reverse=True, player_order.sort(reverse=True,
key=lambda p: key=lambda p:
(p.team.sessiondata['score'], p.team.sessiondata[ (p.team.sessiondata['score'], p.team.sessiondata[
'score'], p.get_name(full=True))) 'score'], p.getname(full=True)))
v_offs = -74.0 + spacing * len(player_order_prev) * 0.5 v_offs = -74.0 + spacing * len(player_order_prev) * 0.5
delay1 = 1.3 + 0.1 delay1 = 1.3 + 0.1
@ -161,7 +161,7 @@ class FreeForAllVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
0: ts_h_offs - 72.0 * scale, 0: ts_h_offs - 72.0 * scale,
transtime2: ts_h_offs - (72.0 + slide_amt) * scale transtime2: ts_h_offs - (72.0 + slide_amt) * scale
})) }))
txt = Text(ba.Lstr(value=player.get_name(full=True)), txt = Text(ba.Lstr(value=player.getname(full=True)),
maxwidth=130.0, maxwidth=130.0,
scale=0.75 * scale, scale=0.75 * scale,
position=(ts_h_offs - 50.0 * scale, position=(ts_h_offs - 50.0 * scale,

View File

@ -212,7 +212,7 @@ class MultiTeamScoreScreenActivity(ScoreScreenActivity):
scale=(30.0 * scale, 30.0 * scale), scale=(30.0 * scale, 30.0 * scale),
transition=Image.Transition.IN_LEFT, transition=Image.Transition.IN_LEFT,
transition_delay=tdelay).autoretain() transition_delay=tdelay).autoretain()
Text(ba.Lstr(value=playerrec.get_name(full=True)), Text(ba.Lstr(value=playerrec.getname(full=True)),
maxwidth=160, maxwidth=160,
scale=0.75 * scale, scale=0.75 * scale,
position=(ts_h_offs + 10.0 * scale, position=(ts_h_offs + 10.0 * scale,

View File

@ -80,7 +80,7 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
if prec.player.in_game: if prec.player.in_game:
player_entries.append( player_entries.append(
(prec.player.team.sessiondata['score'], (prec.player.team.sessiondata['score'],
prec.get_name(full=True), prec)) prec.getname(full=True), prec))
player_entries.sort(reverse=True, key=lambda x: x[0]) player_entries.sort(reverse=True, key=lambda x: x[0])
else: else:
for _pkey, prec in self.stats.get_records().items(): for _pkey, prec in self.stats.get_records().items():
@ -364,7 +364,7 @@ class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
assert i.node assert i.node
ba.animate(i.node, 'opacity', {0.0: 0.0, 0.25: 1.0}) ba.animate(i.node, 'opacity', {0.0: 0.0, 0.25: 1.0})
ZoomText(ba.Lstr( ZoomText(ba.Lstr(
value=team.players[0].get_name(full=True, icon=False)), value=team.players[0].getname(full=True, icon=False)),
position=(0, 97 + offs_v), position=(0, 97 + offs_v),
color=team.color, color=team.color,
scale=1.15, scale=1.15,

View File

@ -88,7 +88,7 @@ class RespawnIcon:
attrs={ attrs={
'v_attach': 'top', 'v_attach': 'top',
'h_attach': 'right' if on_right else 'left', 'h_attach': 'right' if on_right else 'left',
'text': ba.Lstr(value=player.get_name()), 'text': ba.Lstr(value=player.getname()),
'maxwidth': 100, 'maxwidth': 100,
'h_align': 'center', 'h_align': 'center',
'v_align': 'center', 'v_align': 'center',

View File

@ -75,7 +75,7 @@ class Icon(ba.Actor):
'text', 'text',
owner=self.node, owner=self.node,
attrs={ attrs={
'text': ba.Lstr(value=player.get_name()), 'text': ba.Lstr(value=player.getname()),
'color': ba.safecolor(player.team.color), 'color': ba.safecolor(player.team.color),
'h_align': 'center', 'h_align': 'center',
'v_align': 'center', 'v_align': 'center',
@ -276,7 +276,7 @@ class EliminationGame(ba.TeamGameActivity[Player, Team]):
player.team.survival_seconds = 0 player.team.survival_seconds = 0
ba.screenmessage( ba.screenmessage(
ba.Lstr(resource='playerDelayedJoinText', ba.Lstr(resource='playerDelayedJoinText',
subs=[('${PLAYER}', player.get_name(full=True))]), subs=[('${PLAYER}', player.getname(full=True))]),
color=(0, 1, 0), color=(0, 1, 0),
) )
return return

View File

@ -117,7 +117,7 @@ class MeteorShowerGame(ba.TeamGameActivity[Player, Team]):
if self.has_begun(): if self.has_begun():
ba.screenmessage( ba.screenmessage(
ba.Lstr(resource='playerDelayedJoinText', ba.Lstr(resource='playerDelayedJoinText',
subs=[('${PLAYER}', player.get_name(full=True))]), subs=[('${PLAYER}', player.getname(full=True))]),
color=(0, 1, 0), color=(0, 1, 0),
) )
# For score purposes, mark them as having died right as the # For score purposes, mark them as having died right as the

View File

@ -901,7 +901,7 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
in [Preset.ENDLESS, Preset.ENDLESS_TOURNAMENT] or in [Preset.ENDLESS, Preset.ENDLESS_TOURNAMENT] or
(player.respawn_wave <= len(self._waves)))): (player.respawn_wave <= len(self._waves)))):
rtxt = ba.Lstr(resource='onslaughtRespawnText', rtxt = ba.Lstr(resource='onslaughtRespawnText',
subs=[('${PLAYER}', player.get_name()), subs=[('${PLAYER}', player.getname()),
('${WAVE}', str(player.respawn_wave)) ('${WAVE}', str(player.respawn_wave))
]) ])
text = ba.Lstr(value='${A}${B}\n', text = ba.Lstr(value='${A}${B}\n',

View File

@ -253,7 +253,7 @@ class RaceGame(ba.TeamGameActivity[Player, Team]):
ba.screenmessage(ba.Lstr( ba.screenmessage(ba.Lstr(
translate=('statements', 'Killing ${NAME} for' translate=('statements', 'Killing ${NAME} for'
' skipping part of the track!'), ' skipping part of the track!'),
subs=[('${NAME}', player.get_name(full=True))]), subs=[('${NAME}', player.getname(full=True))]),
color=(1, 0, 0)) color=(1, 0, 0))
else: else:
# If this player is in first, note that this is the # If this player is in first, note that this is the
@ -368,7 +368,7 @@ class RaceGame(ba.TeamGameActivity[Player, Team]):
translate=('statements', translate=('statements',
'${TEAM} is disqualified because ${PLAYER} left'), '${TEAM} is disqualified because ${PLAYER} left'),
subs=[('${TEAM}', player.team.name), subs=[('${TEAM}', player.team.name),
('${PLAYER}', player.get_name(full=True))]), ('${PLAYER}', player.getname(full=True))]),
color=(1, 1, 0)) color=(1, 1, 0))
player.team.finished = True player.team.finished = True
player.team.time = None player.team.time = None

View File

@ -354,7 +354,7 @@ class Target(ba.Actor):
# names and colors so they know who got the hit. # names and colors so they know who got the hit.
if len(activity.players) > 1: if len(activity.players) > 1:
popupcolor = ba.safecolor(player.color, target_intensity=0.75) popupcolor = ba.safecolor(player.color, target_intensity=0.75)
popupstr += ' ' + player.get_name() popupstr += ' ' + player.getname()
PopupText(popupstr, PopupText(popupstr,
position=self._position, position=self._position,
color=popupcolor, color=popupcolor,

View File

@ -935,7 +935,7 @@ class CoopBrowserWindow(ba.Window):
# add all custom user levels here.. # add all custom user levels here..
# items += [ # items += [
# 'User:' + l.get_name() # 'User:' + l.getname()
# for l in get_campaign('User').get_levels() # for l in get_campaign('User').get_levels()
# ] # ]

View File

@ -389,20 +389,20 @@ class KioskWindow(ba.Window):
pass pass
else: else:
# Also make sure there's no player profiles. # Also make sure there's no player profiles.
bs_config = ba.app.config appconfig = ba.app.config
bs_config['Player Profiles'] = {} appconfig['Player Profiles'] = {}
def _do_game(self, mode: str) -> None: def _do_game(self, mode: str) -> None:
self._save_state() self._save_state()
if mode in ['epic', 'ctf', 'hockey']: if mode in ['epic', 'ctf', 'hockey']:
bs_config = ba.app.config appconfig = ba.app.config
if 'Team Tournament Playlists' not in bs_config: if 'Team Tournament Playlists' not in appconfig:
bs_config['Team Tournament Playlists'] = {} appconfig['Team Tournament Playlists'] = {}
if 'Free-for-All Playlists' not in bs_config: if 'Free-for-All Playlists' not in appconfig:
bs_config['Free-for-All Playlists'] = {} appconfig['Free-for-All Playlists'] = {}
bs_config['Show Tutorial'] = False appconfig['Show Tutorial'] = False
if mode == 'epic': if mode == 'epic':
bs_config['Free-for-All Playlists']['Just Epic Elim'] = [{ appconfig['Free-for-All Playlists']['Just Epic Elim'] = [{
'settings': { 'settings': {
'Epic Mode': 1, 'Epic Mode': 1,
'Lives Per Player': 1, 'Lives Per Player': 1,
@ -412,7 +412,7 @@ class KioskWindow(ba.Window):
}, },
'type': 'bs_elimination.EliminationGame' 'type': 'bs_elimination.EliminationGame'
}] }]
bs_config['Free-for-All Playlist Selection'] = 'Just Epic Elim' appconfig['Free-for-All Playlist Selection'] = 'Just Epic Elim'
_ba.fade_screen(False, _ba.fade_screen(False,
endcall=ba.Call( endcall=ba.Call(
ba.pushcall, ba.pushcall,
@ -420,7 +420,7 @@ class KioskWindow(ba.Window):
ba.FreeForAllSession))) ba.FreeForAllSession)))
else: else:
if mode == 'ctf': if mode == 'ctf':
bs_config['Team Tournament Playlists']['Just CTF'] = [{ appconfig['Team Tournament Playlists']['Just CTF'] = [{
'settings': { 'settings': {
'Epic Mode': False, 'Epic Mode': False,
'Flag Idle Return Time': 30, 'Flag Idle Return Time': 30,
@ -432,10 +432,10 @@ class KioskWindow(ba.Window):
}, },
'type': 'bs_capture_the_flag.CTFGame' 'type': 'bs_capture_the_flag.CTFGame'
}] }]
bs_config[ appconfig[
'Team Tournament Playlist Selection'] = 'Just CTF' 'Team Tournament Playlist Selection'] = 'Just CTF'
else: else:
bs_config['Team Tournament Playlists']['Just Hockey'] = [{ appconfig['Team Tournament Playlists']['Just Hockey'] = [{
'settings': { 'settings': {
'Respawn Times': 1.0, 'Respawn Times': 1.0,
'Score to Win': 1, 'Score to Win': 1,
@ -444,8 +444,8 @@ class KioskWindow(ba.Window):
}, },
'type': 'bs_hockey.HockeyGame' 'type': 'bs_hockey.HockeyGame'
}] }]
bs_config['Team Tournament Playlist Selection'] = \ appconfig['Team Tournament Playlist Selection'] = (
'Just Hockey' 'Just Hockey')
_ba.fade_screen(False, _ba.fade_screen(False,
endcall=ba.Call( endcall=ba.Call(
ba.pushcall, ba.pushcall,

View File

@ -708,7 +708,7 @@ class MainMenuWindow(ba.Window):
# Player name if applicable. # Player name if applicable.
if self._input_player: if self._input_player:
player_name = self._input_player.get_name() player_name = self._input_player.getname()
h, v, scale = positions[self._p_index] h, v, scale = positions[self._p_index]
v += 35 v += 35
ba.textwidget(parent=self._root_widget, ba.textwidget(parent=self._root_widget,

View File

@ -338,7 +338,7 @@ class PlaylistBrowserWindow(ba.Window):
v_align='center') v_align='center')
index = 0 index = 0
bs_config = ba.app.config appconfig = ba.app.config
model_opaque = ba.getmodel('level_select_button_opaque') model_opaque = ba.getmodel('level_select_button_opaque')
model_transparent = ba.getmodel('level_select_button_transparent') model_transparent = ba.getmodel('level_select_button_transparent')
@ -418,13 +418,13 @@ class PlaylistBrowserWindow(ba.Window):
raise Exception('unrecognized session-type: ' + raise Exception('unrecognized session-type: ' +
str(self._sessiontype)) str(self._sessiontype))
else: else:
if name not in bs_config[self._pvars.config_name + if name not in appconfig[self._pvars.config_name +
' Playlists']: ' Playlists']:
print( print(
'NOT FOUND ERR', 'NOT FOUND ERR',
bs_config[self._pvars.config_name + appconfig[self._pvars.config_name +
' Playlists']) ' Playlists'])
playlist = bs_config[self._pvars.config_name + playlist = appconfig[self._pvars.config_name +
' Playlists'][name] ' Playlists'][name]
playlist = filter_playlist(playlist, playlist = filter_playlist(playlist,
self._sessiontype, self._sessiontype,

View File

@ -110,7 +110,7 @@ class PlaylistEditWindow(ba.Window):
parent=self._root_widget, parent=self._root_widget,
position=(210 + x_inset, v + 7), position=(210 + x_inset, v + 7),
size=(self._scroll_width - 53, 43), size=(self._scroll_width - 53, 43),
text=self._editcontroller.get_name(), text=self._editcontroller.getname(),
h_align='left', h_align='left',
v_align='center', v_align='center',
max_chars=40, max_chars=40,

View File

@ -44,7 +44,7 @@ class PlaylistEditController:
from bastd.ui import playlist as playlistui from bastd.ui import playlist as playlistui
from bastd.ui.playlist import edit as peditui from bastd.ui.playlist import edit as peditui
bs_config = ba.app.config appconfig = ba.app.config
# Since we may be showing our map list momentarily, # Since we may be showing our map list momentarily,
# lets go ahead and preload all map preview textures. # lets go ahead and preload all map preview textures.
@ -58,8 +58,8 @@ class PlaylistEditController:
self._config_name_full = self._pvars.config_name + ' Playlists' self._config_name_full = self._pvars.config_name + ' Playlists'
# Make sure config exists. # Make sure config exists.
if self._config_name_full not in bs_config: if self._config_name_full not in appconfig:
bs_config[self._config_name_full] = {} appconfig[self._config_name_full] = {}
self._selected_index = 0 self._selected_index = 0
if existing_playlist_name: if existing_playlist_name:
@ -67,7 +67,7 @@ class PlaylistEditController:
# Filter out invalid games. # Filter out invalid games.
self._playlist = filter_playlist( self._playlist = filter_playlist(
bs_config[self._pvars.config_name + appconfig[self._pvars.config_name +
' Playlists'][existing_playlist_name], ' Playlists'][existing_playlist_name],
sessiontype=sessiontype, sessiontype=sessiontype,
remove_unowned=False) remove_unowned=False)
@ -87,7 +87,7 @@ class PlaylistEditController:
self._name = ( self._name = (
self._pvars.default_new_list_name.evaluate() + self._pvars.default_new_list_name.evaluate() +
((' ' + str(i)) if i > 1 else '')) ((' ' + str(i)) if i > 1 else ''))
if self._name not in bs_config[self._pvars.config_name + if self._name not in appconfig[self._pvars.config_name +
' Playlists']: ' Playlists']:
break break
i += 1 i += 1
@ -115,7 +115,7 @@ class PlaylistEditController:
"""(internal)""" """(internal)"""
self._edit_ui_selection = selection self._edit_ui_selection = selection
def get_name(self) -> str: def getname(self) -> str:
"""(internal)""" """(internal)"""
return self._name return self._name

View File

@ -41,7 +41,7 @@ class EditProfileWindow(ba.Window):
"""Transitions out and recreates ourself.""" """Transitions out and recreates ourself."""
ba.containerwidget(edit=self._root_widget, transition='out_left') ba.containerwidget(edit=self._root_widget, transition='out_left')
ba.app.main_menu_window = EditProfileWindow( ba.app.main_menu_window = EditProfileWindow(
self.get_name(), self._in_main_menu).get_root_widget() self.getname(), self._in_main_menu).get_root_widget()
def __init__(self, def __init__(self,
existing_profile: Optional[str], existing_profile: Optional[str],
@ -605,7 +605,7 @@ class EditProfileWindow(ba.Window):
def _update_clipped_name(self) -> None: def _update_clipped_name(self) -> None:
if not self._clipped_name_text: if not self._clipped_name_text:
return return
name = self.get_name() name = self.getname()
if name == '__account__': if name == '__account__':
name = (_ba.get_account_name() name = (_ba.get_account_name()
if _ba.get_account_state() == 'signed_in' else '???') if _ba.get_account_state() == 'signed_in' else '???')
@ -630,7 +630,7 @@ class EditProfileWindow(ba.Window):
if self._icon_button_label: if self._icon_button_label:
ba.textwidget(edit=self._icon_button_label, text=self._icon) ba.textwidget(edit=self._icon_button_label, text=self._icon)
def get_name(self) -> str: def getname(self) -> str:
"""Return the current profile name value.""" """Return the current profile name value."""
if self._is_account_profile: if self._is_account_profile:
new_name = '__account__' new_name = '__account__'
@ -643,7 +643,7 @@ class EditProfileWindow(ba.Window):
def save(self, transition_out: bool = True) -> bool: def save(self, transition_out: bool = True) -> bool:
"""Save has been selected.""" """Save has been selected."""
from bastd.ui.profile import browser as pbrowser from bastd.ui.profile import browser as pbrowser
new_name = self.get_name().strip() new_name = self.getname().strip()
if not new_name: if not new_name:
ba.screenmessage(ba.Lstr(resource='nameNotEmptyText')) ba.screenmessage(ba.Lstr(resource='nameNotEmptyText'))

View File

@ -48,7 +48,7 @@ class ProfileUpgradeWindow(ba.Window):
self._base_scale = (2.05 if ba.app.small_ui else self._base_scale = (2.05 if ba.app.small_ui else
1.5 if ba.app.med_ui else 1.2) 1.5 if ba.app.med_ui else 1.2)
self._upgrade_start_time: Optional[float] = None self._upgrade_start_time: Optional[float] = None
self._name = edit_profile_window.get_name() self._name = edit_profile_window.getname()
self._edit_profile_window = weakref.ref(edit_profile_window) self._edit_profile_window = weakref.ref(edit_profile_window)
top_extra = 15 if ba.app.small_ui else 15 top_extra = 15 if ba.app.small_ui else 15

View File

@ -55,7 +55,6 @@ class ConfigKeyboardWindow(ba.Window):
stack_offset=(0, -10) if ba.app.small_ui else (0, 0), stack_offset=(0, -10) if ba.app.small_ui else (0, 0),
transition=transition)) transition=transition))
# don't ask to config joysticks while we're in here..
self._rebuild_ui() self._rebuild_ui()
def _rebuild_ui(self) -> None: def _rebuild_ui(self) -> None:
@ -63,7 +62,7 @@ class ConfigKeyboardWindow(ba.Window):
for widget in self._root_widget.get_children(): for widget in self._root_widget.get_children():
widget.delete() widget.delete()
# fill our temp config with present values # Fill our temp config with present values.
self._settings: Dict[str, int] = {} self._settings: Dict[str, int] = {}
for button in [ for button in [
'buttonJump', 'buttonPunch', 'buttonBomb', 'buttonPickUp', 'buttonJump', 'buttonPunch', 'buttonBomb', 'buttonPickUp',
@ -197,8 +196,10 @@ class ConfigKeyboardWindow(ba.Window):
label='', label='',
color=color) color=color)
# do this deferred so it shows up on top of other buttons # Do this deferred so it shows up on top of other buttons. (ew.)
def doit() -> None: def doit() -> None:
if not self._root_widget:
return
uiscale = 0.66 * scale * 2.0 uiscale = 0.66 * scale * 2.0
maxwidth = 76.0 * scale maxwidth = 76.0 * scale
txt = ba.textwidget(parent=self._root_widget, txt = ba.textwidget(parent=self._root_widget,
@ -288,17 +289,14 @@ class AwaitKeyboardInputWindow(ba.Window):
color=(1, 1, 1, 0.3), color=(1, 1, 1, 0.3),
text=str(self._counter)) text=str(self._counter))
self._decrement_timer: Optional[ba.Timer] = ba.Timer( self._decrement_timer: Optional[ba.Timer] = ba.Timer(
1.0, 1.0, self._decrement, repeat=True, timetype=ba.TimeType.REAL)
ba.Call(self._decrement),
repeat=True,
timetype=ba.TimeType.REAL)
_ba.capture_keyboard_input(ba.WeakCall(self._button_callback)) _ba.capture_keyboard_input(ba.WeakCall(self._button_callback))
def __del__(self) -> None: def __del__(self) -> None:
_ba.release_keyboard_input() _ba.release_keyboard_input()
def _die(self) -> None: def _die(self) -> None:
# this strong-refs us; killing it allow us to die now # This strong-refs us; killing it allows us to die now.
self._decrement_timer = None self._decrement_timer = None
if self._root_widget: if self._root_widget:
ba.containerwidget(edit=self._root_widget, transition='out_left') ba.containerwidget(edit=self._root_widget, transition='out_left')

View File

@ -39,7 +39,7 @@ class SoundtrackEditWindow(ba.Window):
existing_soundtrack: Optional[Union[str, Dict[str, Any]]], existing_soundtrack: Optional[Union[str, Dict[str, Any]]],
transition: str = 'in_right'): transition: str = 'in_right'):
# pylint: disable=too-many-statements # pylint: disable=too-many-statements
bs_config = ba.app.config appconfig = ba.app.config
self._r = 'editSoundtrackWindow' self._r = 'editSoundtrackWindow'
self._folder_tex = ba.gettexture('folder') self._folder_tex = ba.gettexture('folder')
self._file_tex = ba.gettexture('file') self._file_tex = ba.gettexture('file')
@ -81,8 +81,8 @@ class SoundtrackEditWindow(ba.Window):
v_align='center', v_align='center',
maxwidth=280) maxwidth=280)
v = self._height - 110 v = self._height - 110
if 'Soundtracks' not in bs_config: if 'Soundtracks' not in appconfig:
bs_config['Soundtracks'] = {} appconfig['Soundtracks'] = {}
self._soundtrack_name: Optional[str] self._soundtrack_name: Optional[str]
self._existing_soundtrack_name: Optional[str] self._existing_soundtrack_name: Optional[str]
@ -90,7 +90,7 @@ class SoundtrackEditWindow(ba.Window):
# if they passed just a name, pull info from that soundtrack # if they passed just a name, pull info from that soundtrack
if isinstance(existing_soundtrack, str): if isinstance(existing_soundtrack, str):
self._soundtrack = copy.deepcopy( self._soundtrack = copy.deepcopy(
bs_config['Soundtracks'][existing_soundtrack]) appconfig['Soundtracks'][existing_soundtrack])
self._soundtrack_name = existing_soundtrack self._soundtrack_name = existing_soundtrack
self._existing_soundtrack_name = existing_soundtrack self._existing_soundtrack_name = existing_soundtrack
self._last_edited_song_type = None self._last_edited_song_type = None
@ -129,7 +129,7 @@ class SoundtrackEditWindow(ba.Window):
while True: while True:
self._soundtrack_name = st_name_text.replace( self._soundtrack_name = st_name_text.replace(
'${COUNT}', str(i)) '${COUNT}', str(i))
if self._soundtrack_name not in bs_config['Soundtracks']: if self._soundtrack_name not in appconfig['Soundtracks']:
break break
i += 1 i += 1

View File

@ -48,16 +48,16 @@ class TeamNamesColorsWindow(popup.PopupWindow):
size=(self._width, self._height), size=(self._width, self._height),
scale=scale) scale=scale)
bs_config = ba.app.config appconfig = ba.app.config
self._names = list( self._names = list(
bs_config.get('Custom Team Names', DEFAULT_TEAM_NAMES)) appconfig.get('Custom Team Names', DEFAULT_TEAM_NAMES))
# We need to flatten the translation since it will be an # We need to flatten the translation since it will be an
# editable string. # editable string.
self._names = [ self._names = [
ba.Lstr(translate=('teamNames', n)).evaluate() for n in self._names ba.Lstr(translate=('teamNames', n)).evaluate() for n in self._names
] ]
self._colors = list( self._colors = list(
bs_config.get('Custom Team Colors', DEFAULT_TEAM_COLORS)) appconfig.get('Custom Team Colors', DEFAULT_TEAM_COLORS))
self._color_buttons: List[ba.Widget] = [] self._color_buttons: List[ba.Widget] = []
self._color_text_fields: List[ba.Widget] = [] self._color_text_fields: List[ba.Widget] = []

View File

@ -1,5 +1,5 @@
<!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND --> <!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND -->
<h4><em>last updated on 2020-05-30 for Ballistica version 1.5.0 build 20035</em></h4> <h4><em>last updated on 2020-05-30 for Ballistica version 1.5.0 build 20036</em></h4>
<p>This page documents the Python classes and functions in the 'ba' module, <p>This page documents the Python classes and functions in the 'ba' module,
which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please <a href="mailto:support@froemling.net">let me know</a>. Happy modding!</p> which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please <a href="mailto:support@froemling.net">let me know</a>. Happy modding!</p>
<hr> <hr>
@ -1595,7 +1595,7 @@ start_long_action(callback_when_done=<a href="#class_ba_ContextCall">ba.ContextC
</dd> </dd>
</dl> </dl>
<h3>Methods Inherited:</h3> <h3>Methods Inherited:</h3>
<h5><a href="#method_ba_GameActivity__add_actor_weak_ref">add_actor_weak_ref()</a>, <a href="#method_ba_GameActivity__add_player">add_player()</a>, <a href="#method_ba_GameActivity__add_team">add_team()</a>, <a href="#method_ba_GameActivity__begin">begin()</a>, <a href="#method_ba_GameActivity__continue_or_end_game">continue_or_end_game()</a>, <a href="#method_ba_GameActivity__create_player">create_player()</a>, <a href="#method_ba_GameActivity__create_settings_ui">create_settings_ui()</a>, <a href="#method_ba_GameActivity__create_team">create_team()</a>, <a href="#method_ba_GameActivity__dep_is_present">dep_is_present()</a>, <a href="#method_ba_GameActivity__destroy">destroy()</a>, <a href="#method_ba_GameActivity__end">end()</a>, <a href="#method_ba_GameActivity__end_game">end_game()</a>, <a href="#method_ba_GameActivity__get_description">get_description()</a>, <a href="#method_ba_GameActivity__get_description_display_string">get_description_display_string()</a>, <a href="#method_ba_GameActivity__get_display_string">get_display_string()</a>, <a href="#method_ba_GameActivity__get_dynamic_deps">get_dynamic_deps()</a>, <a href="#method_ba_GameActivity__get_game_settings">get_game_settings()</a>, <a href="#method_ba_GameActivity__get_instance_description">get_instance_description()</a>, <a href="#method_ba_GameActivity__get_instance_description_short">get_instance_description_short()</a>, <a href="#method_ba_GameActivity__get_instance_display_string">get_instance_display_string()</a>, <a href="#method_ba_GameActivity__get_instance_scoreboard_display_string">get_instance_scoreboard_display_string()</a>, <a href="#method_ba_GameActivity__get_name">get_name()</a>, <a href="#method_ba_GameActivity__get_score_info">get_score_info()</a>, <a href="#method_ba_GameActivity__get_settings_display_string">get_settings_display_string()</a>, <a href="#method_ba_GameActivity__get_supported_maps">get_supported_maps()</a>, <a href="#method_ba_GameActivity__get_team_display_string">get_team_display_string()</a>, <a href="#method_ba_GameActivity__handlemessage">handlemessage()</a>, <a href="#method_ba_GameActivity__has_begun">has_begun()</a>, <a href="#method_ba_GameActivity__has_ended">has_ended()</a>, <a href="#method_ba_GameActivity__has_transitioned_in">has_transitioned_in()</a>, <a href="#method_ba_GameActivity__is_transitioning_out">is_transitioning_out()</a>, <a href="#method_ba_GameActivity__is_waiting_for_continue">is_waiting_for_continue()</a>, <a href="#method_ba_GameActivity__on_continue">on_continue()</a>, <a href="#method_ba_GameActivity__on_expire">on_expire()</a>, <a href="#method_ba_GameActivity__on_player_join">on_player_join()</a>, <a href="#method_ba_GameActivity__on_player_leave">on_player_leave()</a>, <a href="#method_ba_GameActivity__on_team_join">on_team_join()</a>, <a href="#method_ba_GameActivity__on_team_leave">on_team_leave()</a>, <a href="#method_ba_GameActivity__on_transition_in">on_transition_in()</a>, <a href="#method_ba_GameActivity__on_transition_out">on_transition_out()</a>, <a href="#method_ba_GameActivity__remove_player">remove_player()</a>, <a href="#method_ba_GameActivity__remove_team">remove_team()</a>, <a href="#method_ba_GameActivity__respawn_player">respawn_player()</a>, <a href="#method_ba_GameActivity__retain_actor">retain_actor()</a>, <a href="#method_ba_GameActivity__set_has_ended">set_has_ended()</a>, <a href="#method_ba_GameActivity__setup_standard_powerup_drops">setup_standard_powerup_drops()</a>, <a href="#method_ba_GameActivity__setup_standard_time_limit">setup_standard_time_limit()</a>, <a href="#method_ba_GameActivity__show_zoom_message">show_zoom_message()</a>, <a href="#method_ba_GameActivity__spawn_player">spawn_player()</a>, <a href="#method_ba_GameActivity__spawn_player_if_exists">spawn_player_if_exists()</a>, <a href="#method_ba_GameActivity__transition_in">transition_in()</a>, <a href="#method_ba_GameActivity__transition_out">transition_out()</a></h5> <h5><a href="#method_ba_GameActivity__add_actor_weak_ref">add_actor_weak_ref()</a>, <a href="#method_ba_GameActivity__add_player">add_player()</a>, <a href="#method_ba_GameActivity__add_team">add_team()</a>, <a href="#method_ba_GameActivity__begin">begin()</a>, <a href="#method_ba_GameActivity__continue_or_end_game">continue_or_end_game()</a>, <a href="#method_ba_GameActivity__create_player">create_player()</a>, <a href="#method_ba_GameActivity__create_settings_ui">create_settings_ui()</a>, <a href="#method_ba_GameActivity__create_team">create_team()</a>, <a href="#method_ba_GameActivity__dep_is_present">dep_is_present()</a>, <a href="#method_ba_GameActivity__destroy">destroy()</a>, <a href="#method_ba_GameActivity__end">end()</a>, <a href="#method_ba_GameActivity__end_game">end_game()</a>, <a href="#method_ba_GameActivity__get_description">get_description()</a>, <a href="#method_ba_GameActivity__get_description_display_string">get_description_display_string()</a>, <a href="#method_ba_GameActivity__get_display_string">get_display_string()</a>, <a href="#method_ba_GameActivity__get_dynamic_deps">get_dynamic_deps()</a>, <a href="#method_ba_GameActivity__get_game_settings">get_game_settings()</a>, <a href="#method_ba_GameActivity__get_instance_description">get_instance_description()</a>, <a href="#method_ba_GameActivity__get_instance_description_short">get_instance_description_short()</a>, <a href="#method_ba_GameActivity__get_instance_display_string">get_instance_display_string()</a>, <a href="#method_ba_GameActivity__get_instance_scoreboard_display_string">get_instance_scoreboard_display_string()</a>, <a href="#method_ba_GameActivity__get_score_info">get_score_info()</a>, <a href="#method_ba_GameActivity__get_settings_display_string">get_settings_display_string()</a>, <a href="#method_ba_GameActivity__get_supported_maps">get_supported_maps()</a>, <a href="#method_ba_GameActivity__get_team_display_string">get_team_display_string()</a>, <a href="#method_ba_GameActivity__getname">getname()</a>, <a href="#method_ba_GameActivity__handlemessage">handlemessage()</a>, <a href="#method_ba_GameActivity__has_begun">has_begun()</a>, <a href="#method_ba_GameActivity__has_ended">has_ended()</a>, <a href="#method_ba_GameActivity__has_transitioned_in">has_transitioned_in()</a>, <a href="#method_ba_GameActivity__is_transitioning_out">is_transitioning_out()</a>, <a href="#method_ba_GameActivity__is_waiting_for_continue">is_waiting_for_continue()</a>, <a href="#method_ba_GameActivity__on_continue">on_continue()</a>, <a href="#method_ba_GameActivity__on_expire">on_expire()</a>, <a href="#method_ba_GameActivity__on_player_join">on_player_join()</a>, <a href="#method_ba_GameActivity__on_player_leave">on_player_leave()</a>, <a href="#method_ba_GameActivity__on_team_join">on_team_join()</a>, <a href="#method_ba_GameActivity__on_team_leave">on_team_leave()</a>, <a href="#method_ba_GameActivity__on_transition_in">on_transition_in()</a>, <a href="#method_ba_GameActivity__on_transition_out">on_transition_out()</a>, <a href="#method_ba_GameActivity__remove_player">remove_player()</a>, <a href="#method_ba_GameActivity__remove_team">remove_team()</a>, <a href="#method_ba_GameActivity__respawn_player">respawn_player()</a>, <a href="#method_ba_GameActivity__retain_actor">retain_actor()</a>, <a href="#method_ba_GameActivity__set_has_ended">set_has_ended()</a>, <a href="#method_ba_GameActivity__setup_standard_powerup_drops">setup_standard_powerup_drops()</a>, <a href="#method_ba_GameActivity__setup_standard_time_limit">setup_standard_time_limit()</a>, <a href="#method_ba_GameActivity__show_zoom_message">show_zoom_message()</a>, <a href="#method_ba_GameActivity__spawn_player">spawn_player()</a>, <a href="#method_ba_GameActivity__spawn_player_if_exists">spawn_player_if_exists()</a>, <a href="#method_ba_GameActivity__transition_in">transition_in()</a>, <a href="#method_ba_GameActivity__transition_out">transition_out()</a></h5>
<h3>Methods Defined or Overridden:</h3> <h3>Methods Defined or Overridden:</h3>
<h5><a href="#method_ba_CoopGameActivity____init__">&lt;constructor&gt;</a>, <a href="#method_ba_CoopGameActivity__celebrate">celebrate()</a>, <a href="#method_ba_CoopGameActivity__fade_to_red">fade_to_red()</a>, <a href="#method_ba_CoopGameActivity__get_score_type">get_score_type()</a>, <a href="#method_ba_CoopGameActivity__on_begin">on_begin()</a>, <a href="#method_ba_CoopGameActivity__setup_low_life_warning_sound">setup_low_life_warning_sound()</a>, <a href="#method_ba_CoopGameActivity__spawn_player_spaz">spawn_player_spaz()</a>, <a href="#method_ba_CoopGameActivity__supports_session_type">supports_session_type()</a></h5> <h5><a href="#method_ba_CoopGameActivity____init__">&lt;constructor&gt;</a>, <a href="#method_ba_CoopGameActivity__celebrate">celebrate()</a>, <a href="#method_ba_CoopGameActivity__fade_to_red">fade_to_red()</a>, <a href="#method_ba_CoopGameActivity__get_score_type">get_score_type()</a>, <a href="#method_ba_CoopGameActivity__on_begin">on_begin()</a>, <a href="#method_ba_CoopGameActivity__setup_low_life_warning_sound">setup_low_life_warning_sound()</a>, <a href="#method_ba_CoopGameActivity__spawn_player_spaz">spawn_player_spaz()</a>, <a href="#method_ba_CoopGameActivity__supports_session_type">supports_session_type()</a></h5>
<dl> <dl>
@ -2182,7 +2182,7 @@ its time with lingering corpses, sound effects, etc.</p>
<h3>Methods Inherited:</h3> <h3>Methods Inherited:</h3>
<h5><a href="#method_ba_Activity__add_actor_weak_ref">add_actor_weak_ref()</a>, <a href="#method_ba_Activity__add_player">add_player()</a>, <a href="#method_ba_Activity__add_team">add_team()</a>, <a href="#method_ba_Activity__begin">begin()</a>, <a href="#method_ba_Activity__create_player">create_player()</a>, <a href="#method_ba_Activity__create_team">create_team()</a>, <a href="#method_ba_Activity__dep_is_present">dep_is_present()</a>, <a href="#method_ba_Activity__destroy">destroy()</a>, <a href="#method_ba_Activity__get_dynamic_deps">get_dynamic_deps()</a>, <a href="#method_ba_Activity__has_begun">has_begun()</a>, <a href="#method_ba_Activity__has_ended">has_ended()</a>, <a href="#method_ba_Activity__has_transitioned_in">has_transitioned_in()</a>, <a href="#method_ba_Activity__is_transitioning_out">is_transitioning_out()</a>, <a href="#method_ba_Activity__on_expire">on_expire()</a>, <a href="#method_ba_Activity__on_player_leave">on_player_leave()</a>, <a href="#method_ba_Activity__on_team_join">on_team_join()</a>, <a href="#method_ba_Activity__on_team_leave">on_team_leave()</a>, <a href="#method_ba_Activity__on_transition_out">on_transition_out()</a>, <a href="#method_ba_Activity__remove_player">remove_player()</a>, <a href="#method_ba_Activity__remove_team">remove_team()</a>, <a href="#method_ba_Activity__retain_actor">retain_actor()</a>, <a href="#method_ba_Activity__set_has_ended">set_has_ended()</a>, <a href="#method_ba_Activity__transition_in">transition_in()</a>, <a href="#method_ba_Activity__transition_out">transition_out()</a></h5> <h5><a href="#method_ba_Activity__add_actor_weak_ref">add_actor_weak_ref()</a>, <a href="#method_ba_Activity__add_player">add_player()</a>, <a href="#method_ba_Activity__add_team">add_team()</a>, <a href="#method_ba_Activity__begin">begin()</a>, <a href="#method_ba_Activity__create_player">create_player()</a>, <a href="#method_ba_Activity__create_team">create_team()</a>, <a href="#method_ba_Activity__dep_is_present">dep_is_present()</a>, <a href="#method_ba_Activity__destroy">destroy()</a>, <a href="#method_ba_Activity__get_dynamic_deps">get_dynamic_deps()</a>, <a href="#method_ba_Activity__has_begun">has_begun()</a>, <a href="#method_ba_Activity__has_ended">has_ended()</a>, <a href="#method_ba_Activity__has_transitioned_in">has_transitioned_in()</a>, <a href="#method_ba_Activity__is_transitioning_out">is_transitioning_out()</a>, <a href="#method_ba_Activity__on_expire">on_expire()</a>, <a href="#method_ba_Activity__on_player_leave">on_player_leave()</a>, <a href="#method_ba_Activity__on_team_join">on_team_join()</a>, <a href="#method_ba_Activity__on_team_leave">on_team_leave()</a>, <a href="#method_ba_Activity__on_transition_out">on_transition_out()</a>, <a href="#method_ba_Activity__remove_player">remove_player()</a>, <a href="#method_ba_Activity__remove_team">remove_team()</a>, <a href="#method_ba_Activity__retain_actor">retain_actor()</a>, <a href="#method_ba_Activity__set_has_ended">set_has_ended()</a>, <a href="#method_ba_Activity__transition_in">transition_in()</a>, <a href="#method_ba_Activity__transition_out">transition_out()</a></h5>
<h3>Methods Defined or Overridden:</h3> <h3>Methods Defined or Overridden:</h3>
<h5><a href="#method_ba_GameActivity____init__">&lt;constructor&gt;</a>, <a href="#method_ba_GameActivity__continue_or_end_game">continue_or_end_game()</a>, <a href="#method_ba_GameActivity__create_settings_ui">create_settings_ui()</a>, <a href="#method_ba_GameActivity__end">end()</a>, <a href="#method_ba_GameActivity__end_game">end_game()</a>, <a href="#method_ba_GameActivity__get_description">get_description()</a>, <a href="#method_ba_GameActivity__get_description_display_string">get_description_display_string()</a>, <a href="#method_ba_GameActivity__get_display_string">get_display_string()</a>, <a href="#method_ba_GameActivity__get_game_settings">get_game_settings()</a>, <a href="#method_ba_GameActivity__get_instance_description">get_instance_description()</a>, <a href="#method_ba_GameActivity__get_instance_description_short">get_instance_description_short()</a>, <a href="#method_ba_GameActivity__get_instance_display_string">get_instance_display_string()</a>, <a href="#method_ba_GameActivity__get_instance_scoreboard_display_string">get_instance_scoreboard_display_string()</a>, <a href="#method_ba_GameActivity__get_name">get_name()</a>, <a href="#method_ba_GameActivity__get_score_info">get_score_info()</a>, <a href="#method_ba_GameActivity__get_settings_display_string">get_settings_display_string()</a>, <a href="#method_ba_GameActivity__get_supported_maps">get_supported_maps()</a>, <a href="#method_ba_GameActivity__get_team_display_string">get_team_display_string()</a>, <a href="#method_ba_GameActivity__handlemessage">handlemessage()</a>, <a href="#method_ba_GameActivity__is_waiting_for_continue">is_waiting_for_continue()</a>, <a href="#method_ba_GameActivity__on_begin">on_begin()</a>, <a href="#method_ba_GameActivity__on_continue">on_continue()</a>, <a href="#method_ba_GameActivity__on_player_join">on_player_join()</a>, <a href="#method_ba_GameActivity__on_transition_in">on_transition_in()</a>, <a href="#method_ba_GameActivity__respawn_player">respawn_player()</a>, <a href="#method_ba_GameActivity__setup_standard_powerup_drops">setup_standard_powerup_drops()</a>, <a href="#method_ba_GameActivity__setup_standard_time_limit">setup_standard_time_limit()</a>, <a href="#method_ba_GameActivity__show_zoom_message">show_zoom_message()</a>, <a href="#method_ba_GameActivity__spawn_player">spawn_player()</a>, <a href="#method_ba_GameActivity__spawn_player_if_exists">spawn_player_if_exists()</a>, <a href="#method_ba_GameActivity__spawn_player_spaz">spawn_player_spaz()</a>, <a href="#method_ba_GameActivity__supports_session_type">supports_session_type()</a></h5> <h5><a href="#method_ba_GameActivity____init__">&lt;constructor&gt;</a>, <a href="#method_ba_GameActivity__continue_or_end_game">continue_or_end_game()</a>, <a href="#method_ba_GameActivity__create_settings_ui">create_settings_ui()</a>, <a href="#method_ba_GameActivity__end">end()</a>, <a href="#method_ba_GameActivity__end_game">end_game()</a>, <a href="#method_ba_GameActivity__get_description">get_description()</a>, <a href="#method_ba_GameActivity__get_description_display_string">get_description_display_string()</a>, <a href="#method_ba_GameActivity__get_display_string">get_display_string()</a>, <a href="#method_ba_GameActivity__get_game_settings">get_game_settings()</a>, <a href="#method_ba_GameActivity__get_instance_description">get_instance_description()</a>, <a href="#method_ba_GameActivity__get_instance_description_short">get_instance_description_short()</a>, <a href="#method_ba_GameActivity__get_instance_display_string">get_instance_display_string()</a>, <a href="#method_ba_GameActivity__get_instance_scoreboard_display_string">get_instance_scoreboard_display_string()</a>, <a href="#method_ba_GameActivity__get_score_info">get_score_info()</a>, <a href="#method_ba_GameActivity__get_settings_display_string">get_settings_display_string()</a>, <a href="#method_ba_GameActivity__get_supported_maps">get_supported_maps()</a>, <a href="#method_ba_GameActivity__get_team_display_string">get_team_display_string()</a>, <a href="#method_ba_GameActivity__getname">getname()</a>, <a href="#method_ba_GameActivity__handlemessage">handlemessage()</a>, <a href="#method_ba_GameActivity__is_waiting_for_continue">is_waiting_for_continue()</a>, <a href="#method_ba_GameActivity__on_begin">on_begin()</a>, <a href="#method_ba_GameActivity__on_continue">on_continue()</a>, <a href="#method_ba_GameActivity__on_player_join">on_player_join()</a>, <a href="#method_ba_GameActivity__on_transition_in">on_transition_in()</a>, <a href="#method_ba_GameActivity__respawn_player">respawn_player()</a>, <a href="#method_ba_GameActivity__setup_standard_powerup_drops">setup_standard_powerup_drops()</a>, <a href="#method_ba_GameActivity__setup_standard_time_limit">setup_standard_time_limit()</a>, <a href="#method_ba_GameActivity__show_zoom_message">show_zoom_message()</a>, <a href="#method_ba_GameActivity__spawn_player">spawn_player()</a>, <a href="#method_ba_GameActivity__spawn_player_if_exists">spawn_player_if_exists()</a>, <a href="#method_ba_GameActivity__spawn_player_spaz">spawn_player_spaz()</a>, <a href="#method_ba_GameActivity__supports_session_type">supports_session_type()</a></h5>
<dl> <dl>
<dt><h4><a name="method_ba_GameActivity____init__">&lt;constructor&gt;</a></dt></h4><dd> <dt><h4><a name="method_ba_GameActivity____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.GameActivity(settings: Dict[str, Any])</span></p> <p><span>ba.GameActivity(settings: Dict[str, Any])</span></p>
@ -2265,7 +2265,7 @@ can override this method.</p>
<p>Return a descriptive name for this game/settings combo.</p> <p>Return a descriptive name for this game/settings combo.</p>
<p>Subclasses should override get_name(); not this.</p> <p>Subclasses should override getname(); not this.</p>
</dd> </dd>
<dt><h4><a name="method_ba_GameActivity__get_game_settings">get_game_settings()</a></dt></h4><dd> <dt><h4><a name="method_ba_GameActivity__get_game_settings">get_game_settings()</a></dt></h4><dd>
@ -2397,15 +2397,6 @@ with the first value, ${ARG2} with the second, etc.</p>
<p>This name is used above the game scoreboard in the corner <p>This name is used above the game scoreboard in the corner
of the screen, so it should be as concise as possible.</p> of the screen, so it should be as concise as possible.</p>
</dd>
<dt><h4><a name="method_ba_GameActivity__get_name">get_name()</a></dt></h4><dd>
<h5><span><em>&lt;class method&gt;</span></em></h5>
<p><span>get_name() -&gt; str </span></p>
<p>Return a str name for this game type.</p>
<p>This default implementation simply returns the 'name' class attr.</p>
</dd> </dd>
<dt><h4><a name="method_ba_GameActivity__get_score_info">get_score_info()</a></dt></h4><dd> <dt><h4><a name="method_ba_GameActivity__get_score_info">get_score_info()</a></dt></h4><dd>
<h5><span><em>&lt;class method&gt;</span></em></h5> <h5><span><em>&lt;class method&gt;</span></em></h5>
@ -2439,6 +2430,15 @@ for this game-type for the given <a href="#class_ba_Session">ba.Session</a> type
<p>Given a team name, returns a localized version of it.</p> <p>Given a team name, returns a localized version of it.</p>
</dd>
<dt><h4><a name="method_ba_GameActivity__getname">getname()</a></dt></h4><dd>
<h5><span><em>&lt;class method&gt;</span></em></h5>
<p><span>getname() -&gt; str </span></p>
<p>Return a str name for this game type.</p>
<p>This default implementation simply returns the 'name' class attr.</p>
</dd> </dd>
<dt><h4><a name="method_ba_GameActivity__handlemessage">handlemessage()</a></dt></h4><dd> <dt><h4><a name="method_ba_GameActivity__handlemessage">handlemessage()</a></dt></h4><dd>
<p><span>handlemessage(self, msg: Any) -&gt; Any</span></p> <p><span>handlemessage(self, msg: Any) -&gt; Any</span></p>
@ -3021,7 +3021,7 @@ etc.</p>
<h3>Methods Inherited:</h3> <h3>Methods Inherited:</h3>
<h5><a href="#method_ba_Actor__autoretain">autoretain()</a>, <a href="#method_ba_Actor__getactivity">getactivity()</a>, <a href="#method_ba_Actor__is_alive">is_alive()</a>, <a href="#method_ba_Actor__on_expire">on_expire()</a></h5> <h5><a href="#method_ba_Actor__autoretain">autoretain()</a>, <a href="#method_ba_Actor__getactivity">getactivity()</a>, <a href="#method_ba_Actor__is_alive">is_alive()</a>, <a href="#method_ba_Actor__on_expire">on_expire()</a></h5>
<h3>Methods Defined or Overridden:</h3> <h3>Methods Defined or Overridden:</h3>
<h5><a href="#method_ba_Map____init__">&lt;constructor&gt;</a>, <a href="#method_ba_Map__exists">exists()</a>, <a href="#method_ba_Map__get_def_bound_box">get_def_bound_box()</a>, <a href="#method_ba_Map__get_def_point">get_def_point()</a>, <a href="#method_ba_Map__get_def_points">get_def_points()</a>, <a href="#method_ba_Map__get_ffa_start_position">get_ffa_start_position()</a>, <a href="#method_ba_Map__get_flag_position">get_flag_position()</a>, <a href="#method_ba_Map__get_music_type">get_music_type()</a>, <a href="#method_ba_Map__get_name">get_name()</a>, <a href="#method_ba_Map__get_play_types">get_play_types()</a>, <a href="#method_ba_Map__get_preview_texture_name">get_preview_texture_name()</a>, <a href="#method_ba_Map__get_start_position">get_start_position()</a>, <a href="#method_ba_Map__handlemessage">handlemessage()</a>, <a href="#method_ba_Map__is_point_near_edge">is_point_near_edge()</a>, <a href="#method_ba_Map__on_preload">on_preload()</a>, <a href="#method_ba_Map__preload">preload()</a></h5> <h5><a href="#method_ba_Map____init__">&lt;constructor&gt;</a>, <a href="#method_ba_Map__exists">exists()</a>, <a href="#method_ba_Map__get_def_bound_box">get_def_bound_box()</a>, <a href="#method_ba_Map__get_def_point">get_def_point()</a>, <a href="#method_ba_Map__get_def_points">get_def_points()</a>, <a href="#method_ba_Map__get_ffa_start_position">get_ffa_start_position()</a>, <a href="#method_ba_Map__get_flag_position">get_flag_position()</a>, <a href="#method_ba_Map__get_music_type">get_music_type()</a>, <a href="#method_ba_Map__get_play_types">get_play_types()</a>, <a href="#method_ba_Map__get_preview_texture_name">get_preview_texture_name()</a>, <a href="#method_ba_Map__get_start_position">get_start_position()</a>, <a href="#method_ba_Map__getname">getname()</a>, <a href="#method_ba_Map__handlemessage">handlemessage()</a>, <a href="#method_ba_Map__is_point_near_edge">is_point_near_edge()</a>, <a href="#method_ba_Map__on_preload">on_preload()</a>, <a href="#method_ba_Map__preload">preload()</a></h5>
<dl> <dl>
<dt><h4><a name="method_ba_Map____init__">&lt;constructor&gt;</a></dt></h4><dd> <dt><h4><a name="method_ba_Map____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.Map(vr_overlay_offset: Optional[Sequence[float]] = None)</span></p> <p><span>ba.Map(vr_overlay_offset: Optional[Sequence[float]] = None)</span></p>
@ -3096,13 +3096,6 @@ as far from these players as possible.</p>
<p>If None is returned, default music will be used.</p> <p>If None is returned, default music will be used.</p>
</dd>
<dt><h4><a name="method_ba_Map__get_name">get_name()</a></dt></h4><dd>
<h5><span><em>&lt;class method&gt;</span></em></h5>
<p><span>get_name() -&gt; str </span></p>
<p>Return the unique name of this map, in English.</p>
</dd> </dd>
<dt><h4><a name="method_ba_Map__get_play_types">get_play_types()</a></dt></h4><dd> <dt><h4><a name="method_ba_Map__get_play_types">get_play_types()</a></dt></h4><dd>
<h5><span><em>&lt;class method&gt;</span></em></h5> <h5><span><em>&lt;class method&gt;</span></em></h5>
@ -3123,6 +3116,13 @@ as far from these players as possible.</p>
<p>Return a random starting position for the given team index.</p> <p>Return a random starting position for the given team index.</p>
</dd>
<dt><h4><a name="method_ba_Map__getname">getname()</a></dt></h4><dd>
<h5><span><em>&lt;class method&gt;</span></em></h5>
<p><span>getname() -&gt; str </span></p>
<p>Return the unique name of this map, in English.</p>
</dd> </dd>
<dt><h4><a name="method_ba_Map__handlemessage">handlemessage()</a></dt></h4><dd> <dt><h4><a name="method_ba_Map__handlemessage">handlemessage()</a></dt></h4><dd>
<p><span>handlemessage(self, msg: Any) -&gt; Any</span></p> <p><span>handlemessage(self, msg: Any) -&gt; Any</span></p>
@ -3590,7 +3590,7 @@ a live node in the game.</p>
Node reference (sometimes used as attr values/etc).</p> Node reference (sometimes used as attr values/etc).</p>
<h3>Methods:</h3> <h3>Methods:</h3>
<h5><a href="#method_ba_Node__add_death_action">add_death_action()</a>, <a href="#method_ba_Node__connectattr">connectattr()</a>, <a href="#method_ba_Node__delete">delete()</a>, <a href="#method_ba_Node__exists">exists()</a>, <a href="#method_ba_Node__get_name">get_name()</a>, <a href="#method_ba_Node__getdelegate">getdelegate()</a>, <a href="#method_ba_Node__getnodetype">getnodetype()</a>, <a href="#method_ba_Node__handlemessage">handlemessage()</a></h5> <h5><a href="#method_ba_Node__add_death_action">add_death_action()</a>, <a href="#method_ba_Node__connectattr">connectattr()</a>, <a href="#method_ba_Node__delete">delete()</a>, <a href="#method_ba_Node__exists">exists()</a>, <a href="#method_ba_Node__getdelegate">getdelegate()</a>, <a href="#method_ba_Node__getname">getname()</a>, <a href="#method_ba_Node__getnodetype">getnodetype()</a>, <a href="#method_ba_Node__handlemessage">handlemessage()</a></h5>
<dl> <dl>
<dt><h4><a name="method_ba_Node__add_death_action">add_death_action()</a></dt></h4><dd> <dt><h4><a name="method_ba_Node__add_death_action">add_death_action()</a></dt></h4><dd>
<p><span>add_death_action(action: Callable[[], None]) -&gt; None</span></p> <p><span>add_death_action(action: Callable[[], None]) -&gt; None</span></p>
@ -3633,12 +3633,6 @@ idea to check this.</p>
functionality, so a statement such as "if mynode" will do functionality, so a statement such as "if mynode" will do
the right thing both for Node objects and values of None.</p> the right thing both for Node objects and values of None.</p>
</dd>
<dt><h4><a name="method_ba_Node__get_name">get_name()</a></dt></h4><dd>
<p><span>get_name() -&gt; str</span></p>
<p>Return the name assigned to a Node; used mainly for debugging</p>
</dd> </dd>
<dt><h4><a name="method_ba_Node__getdelegate">getdelegate()</a></dt></h4><dd> <dt><h4><a name="method_ba_Node__getdelegate">getdelegate()</a></dt></h4><dd>
<p><span>getdelegate(type: Type, doraise: bool = False) -&gt; &lt;varies&gt;</span></p> <p><span>getdelegate(type: Type, doraise: bool = False) -&gt; &lt;varies&gt;</span></p>
@ -3649,6 +3643,12 @@ the right thing both for Node objects and values of None.</p>
type, then None will be returned. If 'doraise' is True, then an type, then None will be returned. If 'doraise' is True, then an
<a href="#class_ba_DelegateNotFoundError">ba.DelegateNotFoundError</a> will be raised instead.</p> <a href="#class_ba_DelegateNotFoundError">ba.DelegateNotFoundError</a> will be raised instead.</p>
</dd>
<dt><h4><a name="method_ba_Node__getname">getname()</a></dt></h4><dd>
<p><span>getname() -&gt; str</span></p>
<p>Return the name assigned to a Node; used mainly for debugging</p>
</dd> </dd>
<dt><h4><a name="method_ba_Node__getnodetype">getnodetype()</a></dt></h4><dd> <dt><h4><a name="method_ba_Node__getnodetype">getnodetype()</a></dt></h4><dd>
<p><span>getnodetype() -&gt; str</span></p> <p><span>getnodetype() -&gt; str</span></p>
@ -3874,7 +3874,7 @@ even if myactor is set to None.</p>
</dd> </dd>
</dl> </dl>
<h3>Methods:</h3> <h3>Methods:</h3>
<h5><a href="#method_ba_Player__assign_input_call">assign_input_call()</a>, <a href="#method_ba_Player__exists">exists()</a>, <a href="#method_ba_Player__get_icon">get_icon()</a>, <a href="#method_ba_Player__get_name">get_name()</a>, <a href="#method_ba_Player__is_alive">is_alive()</a>, <a href="#method_ba_Player__reset_input">reset_input()</a></h5> <h5><a href="#method_ba_Player__assign_input_call">assign_input_call()</a>, <a href="#method_ba_Player__exists">exists()</a>, <a href="#method_ba_Player__get_icon">get_icon()</a>, <a href="#method_ba_Player__getname">getname()</a>, <a href="#method_ba_Player__is_alive">is_alive()</a>, <a href="#method_ba_Player__reset_input">reset_input()</a></h5>
<dl> <dl>
<dt><h4><a name="method_ba_Player__assign_input_call">assign_input_call()</a></dt></h4><dd> <dt><h4><a name="method_ba_Player__assign_input_call">assign_input_call()</a></dt></h4><dd>
<p><span>assign_input_call(self, inputtype: Union[str, Tuple[str, ...]], call: Callable) -&gt; None</span></p> <p><span>assign_input_call(self, inputtype: Union[str, Tuple[str, ...]], call: Callable) -&gt; None</span></p>
@ -3910,10 +3910,10 @@ the right thing both for Player objects and values of None.</p>
<p>Returns the character's icon (images, colors, etc contained in a dict)</p> <p>Returns the character's icon (images, colors, etc contained in a dict)</p>
</dd> </dd>
<dt><h4><a name="method_ba_Player__get_name">get_name()</a></dt></h4><dd> <dt><h4><a name="method_ba_Player__getname">getname()</a></dt></h4><dd>
<p><span>get_name(self, full: bool = False, icon: bool = True) -&gt; str</span></p> <p><span>getname(self, full: bool = False, icon: bool = True) -&gt; str</span></p>
<p>get_name(full: bool = False, icon: bool = True) -&gt; str</p> <p>getname(full: bool = False, icon: bool = True) -&gt; str</p>
<p>Returns the player's name. If icon is True, the long version of the <p>Returns the player's name. If icon is True, the long version of the
name may include an icon.</p> name may include an icon.</p>
@ -4047,7 +4047,7 @@ the type-checker properly identifies the returned value as one.</p>
</dd> </dd>
</dl> </dl>
<h3>Methods:</h3> <h3>Methods:</h3>
<h5><a href="#method_ba_PlayerRecord____init__">&lt;constructor&gt;</a>, <a href="#method_ba_PlayerRecord__associate_with_player">associate_with_player()</a>, <a href="#method_ba_PlayerRecord__cancel_multi_kill_timer">cancel_multi_kill_timer()</a>, <a href="#method_ba_PlayerRecord__get_icon">get_icon()</a>, <a href="#method_ba_PlayerRecord__get_last_player">get_last_player()</a>, <a href="#method_ba_PlayerRecord__get_name">get_name()</a>, <a href="#method_ba_PlayerRecord__getactivity">getactivity()</a>, <a href="#method_ba_PlayerRecord__submit_kill">submit_kill()</a></h5> <h5><a href="#method_ba_PlayerRecord____init__">&lt;constructor&gt;</a>, <a href="#method_ba_PlayerRecord__associate_with_player">associate_with_player()</a>, <a href="#method_ba_PlayerRecord__cancel_multi_kill_timer">cancel_multi_kill_timer()</a>, <a href="#method_ba_PlayerRecord__get_icon">get_icon()</a>, <a href="#method_ba_PlayerRecord__get_last_player">get_last_player()</a>, <a href="#method_ba_PlayerRecord__getactivity">getactivity()</a>, <a href="#method_ba_PlayerRecord__getname">getname()</a>, <a href="#method_ba_PlayerRecord__submit_kill">submit_kill()</a></h5>
<dl> <dl>
<dt><h4><a name="method_ba_PlayerRecord____init__">&lt;constructor&gt;</a></dt></h4><dd> <dt><h4><a name="method_ba_PlayerRecord____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.PlayerRecord(name: str, name_full: str, player: <a href="#class_ba_SessionPlayer">ba.SessionPlayer</a>, stats: <a href="#class_ba_Stats">ba.Stats</a>)</span></p> <p><span>ba.PlayerRecord(name: str, name_full: str, player: <a href="#class_ba_SessionPlayer">ba.SessionPlayer</a>, stats: <a href="#class_ba_Stats">ba.Stats</a>)</span></p>
@ -4076,12 +4076,6 @@ the type-checker properly identifies the returned value as one.</p>
<p>Return the last <a href="#class_ba_Player">ba.Player</a> we were associated with.</p> <p>Return the last <a href="#class_ba_Player">ba.Player</a> we were associated with.</p>
</dd>
<dt><h4><a name="method_ba_PlayerRecord__get_name">get_name()</a></dt></h4><dd>
<p><span>get_name(self, full: bool = False) -&gt; str</span></p>
<p>Return the player entry's name.</p>
</dd> </dd>
<dt><h4><a name="method_ba_PlayerRecord__getactivity">getactivity()</a></dt></h4><dd> <dt><h4><a name="method_ba_PlayerRecord__getactivity">getactivity()</a></dt></h4><dd>
<p><span>getactivity(self) -&gt; Optional[<a href="#class_ba_Activity">ba.Activity</a>]</span></p> <p><span>getactivity(self) -&gt; Optional[<a href="#class_ba_Activity">ba.Activity</a>]</span></p>
@ -4090,6 +4084,12 @@ the type-checker properly identifies the returned value as one.</p>
<p>Returns None if the activity no longer exists.</p> <p>Returns None if the activity no longer exists.</p>
</dd>
<dt><h4><a name="method_ba_PlayerRecord__getname">getname()</a></dt></h4><dd>
<p><span>getname(self, full: bool = False) -&gt; str</span></p>
<p>Return the player entry's name.</p>
</dd> </dd>
<dt><h4><a name="method_ba_PlayerRecord__submit_kill">submit_kill()</a></dt></h4><dd> <dt><h4><a name="method_ba_PlayerRecord__submit_kill">submit_kill()</a></dt></h4><dd>
<p><span>submit_kill(self, showpoints: bool = True) -&gt; None</span></p> <p><span>submit_kill(self, showpoints: bool = True) -&gt; None</span></p>
@ -4568,7 +4568,7 @@ is still in its lobby selecting a team/etc. then a
</dd> </dd>
</dl> </dl>
<h3>Methods:</h3> <h3>Methods:</h3>
<h5><a href="#method_ba_SessionPlayer__assign_input_call">assign_input_call()</a>, <a href="#method_ba_SessionPlayer__exists">exists()</a>, <a href="#method_ba_SessionPlayer__get_account_id">get_account_id()</a>, <a href="#method_ba_SessionPlayer__get_icon">get_icon()</a>, <a href="#method_ba_SessionPlayer__get_name">get_name()</a>, <a href="#method_ba_SessionPlayer__remove_from_game">remove_from_game()</a>, <a href="#method_ba_SessionPlayer__reset_input">reset_input()</a>, <a href="#method_ba_SessionPlayer__set_name">set_name()</a></h5> <h5><a href="#method_ba_SessionPlayer__assign_input_call">assign_input_call()</a>, <a href="#method_ba_SessionPlayer__exists">exists()</a>, <a href="#method_ba_SessionPlayer__get_account_id">get_account_id()</a>, <a href="#method_ba_SessionPlayer__get_icon">get_icon()</a>, <a href="#method_ba_SessionPlayer__getname">getname()</a>, <a href="#method_ba_SessionPlayer__remove_from_game">remove_from_game()</a>, <a href="#method_ba_SessionPlayer__reset_input">reset_input()</a>, <a href="#method_ba_SessionPlayer__set_name">set_name()</a></h5>
<dl> <dl>
<dt><h4><a name="method_ba_SessionPlayer__assign_input_call">assign_input_call()</a></dt></h4><dd> <dt><h4><a name="method_ba_SessionPlayer__assign_input_call">assign_input_call()</a></dt></h4><dd>
<p><span>assign_input_call(type: Union[str, Tuple[str, ...]], <p><span>assign_input_call(type: Union[str, Tuple[str, ...]],
@ -4606,8 +4606,8 @@ joins (while verification occurs).</p>
<p>Returns the character's icon (images, colors, etc contained in a dict)</p> <p>Returns the character's icon (images, colors, etc contained in a dict)</p>
</dd> </dd>
<dt><h4><a name="method_ba_SessionPlayer__get_name">get_name()</a></dt></h4><dd> <dt><h4><a name="method_ba_SessionPlayer__getname">getname()</a></dt></h4><dd>
<p><span>get_name(full: bool = False, icon: bool = True) -&gt; str</span></p> <p><span>getname(full: bool = False, icon: bool = True) -&gt; str</span></p>
<p>Returns the player's name. If icon is True, the long version of the <p>Returns the player's name. If icon is True, the long version of the
name may include an icon.</p> name may include an icon.</p>
@ -5061,7 +5061,7 @@ of the session.</p>
</dd> </dd>
</dl> </dl>
<h3>Methods Inherited:</h3> <h3>Methods Inherited:</h3>
<h5><a href="#method_ba_GameActivity__add_actor_weak_ref">add_actor_weak_ref()</a>, <a href="#method_ba_GameActivity__add_player">add_player()</a>, <a href="#method_ba_GameActivity__add_team">add_team()</a>, <a href="#method_ba_GameActivity__begin">begin()</a>, <a href="#method_ba_GameActivity__continue_or_end_game">continue_or_end_game()</a>, <a href="#method_ba_GameActivity__create_player">create_player()</a>, <a href="#method_ba_GameActivity__create_settings_ui">create_settings_ui()</a>, <a href="#method_ba_GameActivity__create_team">create_team()</a>, <a href="#method_ba_GameActivity__dep_is_present">dep_is_present()</a>, <a href="#method_ba_GameActivity__destroy">destroy()</a>, <a href="#method_ba_GameActivity__end_game">end_game()</a>, <a href="#method_ba_GameActivity__get_description">get_description()</a>, <a href="#method_ba_GameActivity__get_description_display_string">get_description_display_string()</a>, <a href="#method_ba_GameActivity__get_display_string">get_display_string()</a>, <a href="#method_ba_GameActivity__get_dynamic_deps">get_dynamic_deps()</a>, <a href="#method_ba_GameActivity__get_game_settings">get_game_settings()</a>, <a href="#method_ba_GameActivity__get_instance_description">get_instance_description()</a>, <a href="#method_ba_GameActivity__get_instance_description_short">get_instance_description_short()</a>, <a href="#method_ba_GameActivity__get_instance_display_string">get_instance_display_string()</a>, <a href="#method_ba_GameActivity__get_instance_scoreboard_display_string">get_instance_scoreboard_display_string()</a>, <a href="#method_ba_GameActivity__get_name">get_name()</a>, <a href="#method_ba_GameActivity__get_score_info">get_score_info()</a>, <a href="#method_ba_GameActivity__get_settings_display_string">get_settings_display_string()</a>, <a href="#method_ba_GameActivity__get_supported_maps">get_supported_maps()</a>, <a href="#method_ba_GameActivity__get_team_display_string">get_team_display_string()</a>, <a href="#method_ba_GameActivity__handlemessage">handlemessage()</a>, <a href="#method_ba_GameActivity__has_begun">has_begun()</a>, <a href="#method_ba_GameActivity__has_ended">has_ended()</a>, <a href="#method_ba_GameActivity__has_transitioned_in">has_transitioned_in()</a>, <a href="#method_ba_GameActivity__is_transitioning_out">is_transitioning_out()</a>, <a href="#method_ba_GameActivity__is_waiting_for_continue">is_waiting_for_continue()</a>, <a href="#method_ba_GameActivity__on_continue">on_continue()</a>, <a href="#method_ba_GameActivity__on_expire">on_expire()</a>, <a href="#method_ba_GameActivity__on_player_join">on_player_join()</a>, <a href="#method_ba_GameActivity__on_player_leave">on_player_leave()</a>, <a href="#method_ba_GameActivity__on_team_join">on_team_join()</a>, <a href="#method_ba_GameActivity__on_team_leave">on_team_leave()</a>, <a href="#method_ba_GameActivity__on_transition_out">on_transition_out()</a>, <a href="#method_ba_GameActivity__remove_player">remove_player()</a>, <a href="#method_ba_GameActivity__remove_team">remove_team()</a>, <a href="#method_ba_GameActivity__respawn_player">respawn_player()</a>, <a href="#method_ba_GameActivity__retain_actor">retain_actor()</a>, <a href="#method_ba_GameActivity__set_has_ended">set_has_ended()</a>, <a href="#method_ba_GameActivity__setup_standard_powerup_drops">setup_standard_powerup_drops()</a>, <a href="#method_ba_GameActivity__setup_standard_time_limit">setup_standard_time_limit()</a>, <a href="#method_ba_GameActivity__show_zoom_message">show_zoom_message()</a>, <a href="#method_ba_GameActivity__spawn_player">spawn_player()</a>, <a href="#method_ba_GameActivity__spawn_player_if_exists">spawn_player_if_exists()</a>, <a href="#method_ba_GameActivity__transition_in">transition_in()</a>, <a href="#method_ba_GameActivity__transition_out">transition_out()</a></h5> <h5><a href="#method_ba_GameActivity__add_actor_weak_ref">add_actor_weak_ref()</a>, <a href="#method_ba_GameActivity__add_player">add_player()</a>, <a href="#method_ba_GameActivity__add_team">add_team()</a>, <a href="#method_ba_GameActivity__begin">begin()</a>, <a href="#method_ba_GameActivity__continue_or_end_game">continue_or_end_game()</a>, <a href="#method_ba_GameActivity__create_player">create_player()</a>, <a href="#method_ba_GameActivity__create_settings_ui">create_settings_ui()</a>, <a href="#method_ba_GameActivity__create_team">create_team()</a>, <a href="#method_ba_GameActivity__dep_is_present">dep_is_present()</a>, <a href="#method_ba_GameActivity__destroy">destroy()</a>, <a href="#method_ba_GameActivity__end_game">end_game()</a>, <a href="#method_ba_GameActivity__get_description">get_description()</a>, <a href="#method_ba_GameActivity__get_description_display_string">get_description_display_string()</a>, <a href="#method_ba_GameActivity__get_display_string">get_display_string()</a>, <a href="#method_ba_GameActivity__get_dynamic_deps">get_dynamic_deps()</a>, <a href="#method_ba_GameActivity__get_game_settings">get_game_settings()</a>, <a href="#method_ba_GameActivity__get_instance_description">get_instance_description()</a>, <a href="#method_ba_GameActivity__get_instance_description_short">get_instance_description_short()</a>, <a href="#method_ba_GameActivity__get_instance_display_string">get_instance_display_string()</a>, <a href="#method_ba_GameActivity__get_instance_scoreboard_display_string">get_instance_scoreboard_display_string()</a>, <a href="#method_ba_GameActivity__get_score_info">get_score_info()</a>, <a href="#method_ba_GameActivity__get_settings_display_string">get_settings_display_string()</a>, <a href="#method_ba_GameActivity__get_supported_maps">get_supported_maps()</a>, <a href="#method_ba_GameActivity__get_team_display_string">get_team_display_string()</a>, <a href="#method_ba_GameActivity__getname">getname()</a>, <a href="#method_ba_GameActivity__handlemessage">handlemessage()</a>, <a href="#method_ba_GameActivity__has_begun">has_begun()</a>, <a href="#method_ba_GameActivity__has_ended">has_ended()</a>, <a href="#method_ba_GameActivity__has_transitioned_in">has_transitioned_in()</a>, <a href="#method_ba_GameActivity__is_transitioning_out">is_transitioning_out()</a>, <a href="#method_ba_GameActivity__is_waiting_for_continue">is_waiting_for_continue()</a>, <a href="#method_ba_GameActivity__on_continue">on_continue()</a>, <a href="#method_ba_GameActivity__on_expire">on_expire()</a>, <a href="#method_ba_GameActivity__on_player_join">on_player_join()</a>, <a href="#method_ba_GameActivity__on_player_leave">on_player_leave()</a>, <a href="#method_ba_GameActivity__on_team_join">on_team_join()</a>, <a href="#method_ba_GameActivity__on_team_leave">on_team_leave()</a>, <a href="#method_ba_GameActivity__on_transition_out">on_transition_out()</a>, <a href="#method_ba_GameActivity__remove_player">remove_player()</a>, <a href="#method_ba_GameActivity__remove_team">remove_team()</a>, <a href="#method_ba_GameActivity__respawn_player">respawn_player()</a>, <a href="#method_ba_GameActivity__retain_actor">retain_actor()</a>, <a href="#method_ba_GameActivity__set_has_ended">set_has_ended()</a>, <a href="#method_ba_GameActivity__setup_standard_powerup_drops">setup_standard_powerup_drops()</a>, <a href="#method_ba_GameActivity__setup_standard_time_limit">setup_standard_time_limit()</a>, <a href="#method_ba_GameActivity__show_zoom_message">show_zoom_message()</a>, <a href="#method_ba_GameActivity__spawn_player">spawn_player()</a>, <a href="#method_ba_GameActivity__spawn_player_if_exists">spawn_player_if_exists()</a>, <a href="#method_ba_GameActivity__transition_in">transition_in()</a>, <a href="#method_ba_GameActivity__transition_out">transition_out()</a></h5>
<h3>Methods Defined or Overridden:</h3> <h3>Methods Defined or Overridden:</h3>
<h5><a href="#method_ba_TeamGameActivity____init__">&lt;constructor&gt;</a>, <a href="#method_ba_TeamGameActivity__end">end()</a>, <a href="#method_ba_TeamGameActivity__on_begin">on_begin()</a>, <a href="#method_ba_TeamGameActivity__on_transition_in">on_transition_in()</a>, <a href="#method_ba_TeamGameActivity__spawn_player_spaz">spawn_player_spaz()</a>, <a href="#method_ba_TeamGameActivity__supports_session_type">supports_session_type()</a></h5> <h5><a href="#method_ba_TeamGameActivity____init__">&lt;constructor&gt;</a>, <a href="#method_ba_TeamGameActivity__end">end()</a>, <a href="#method_ba_TeamGameActivity__on_begin">on_begin()</a>, <a href="#method_ba_TeamGameActivity__on_transition_in">on_transition_in()</a>, <a href="#method_ba_TeamGameActivity__spawn_player_spaz">spawn_player_spaz()</a>, <a href="#method_ba_TeamGameActivity__supports_session_type">supports_session_type()</a></h5>
<dl> <dl>