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