From 9c81450c9278ad3f6a8ca8f3a6792fb56c1e5fa2 Mon Sep 17 00:00:00 2001 From: Eric Froemling Date: Tue, 2 Jun 2020 22:35:34 -0700 Subject: [PATCH] Added proper type for assigning input --- .efrocachemap | 24 +- .idea/dictionaries/ericf.xml | 1 + assets/src/ba_data/python/_ba.py | 44 ++- assets/src/ba_data/python/ba/__init__.py | 6 +- .../src/ba_data/python/ba/_activitytypes.py | 7 +- assets/src/ba_data/python/ba/_benchmark.py | 2 +- assets/src/ba_data/python/ba/_coopsession.py | 22 +- .../src/ba_data/python/ba/_dualteamsession.py | 21 +- assets/src/ba_data/python/ba/_enums.py | 33 +++ .../ba_data/python/ba/_freeforallsession.py | 13 +- assets/src/ba_data/python/ba/_gameactivity.py | 4 +- assets/src/ba_data/python/ba/_gameresults.py | 6 +- assets/src/ba_data/python/ba/_lobby.py | 28 +- .../ba_data/python/ba/_multiteamsession.py | 10 +- assets/src/ba_data/python/ba/_player.py | 11 +- assets/src/ba_data/python/ba/_session.py | 4 +- assets/src/ba_data/python/ba/_teamgame.py | 4 +- .../bastd/activity/freeforallvictory.py | 2 +- .../python/bastd/activity/multiteamscore.py | 8 +- .../ba_data/python/bastd/actor/playerspaz.py | 32 ++- .../src/ba_data/python/bastd/game/assault.py | 2 +- .../python/bastd/game/capturetheflag.py | 2 +- .../ba_data/python/bastd/game/chosenone.py | 2 +- .../src/ba_data/python/bastd/game/conquest.py | 8 +- .../ba_data/python/bastd/game/deathmatch.py | 2 +- .../python/bastd/game/easteregghunt.py | 2 +- .../ba_data/python/bastd/game/elimination.py | 2 +- .../src/ba_data/python/bastd/game/football.py | 2 +- .../src/ba_data/python/bastd/game/hockey.py | 2 +- .../src/ba_data/python/bastd/game/keepaway.py | 2 +- .../python/bastd/game/kingofthehill.py | 2 +- .../ba_data/python/bastd/game/meteorshower.py | 2 +- .../ba_data/python/bastd/game/ninjafight.py | 2 +- assets/src/ba_data/python/bastd/game/race.py | 2 +- .../ba_data/python/bastd/game/runaround.py | 2 +- .../python/bastd/game/targetpractice.py | 2 +- assets/src/ba_data/python/bastd/mainmenu.py | 4 +- assets/src/ba_data/python/bastd/tutorial.py | 3 +- docs/ba_module.md | 264 ++++++++++-------- tools/update_project | 19 +- 40 files changed, 335 insertions(+), 275 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index 988b9239..9f34ff7b 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4132,16 +4132,16 @@ "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/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/1f/1d/c3e431b8c9116fb76eb10c7c3351", - "build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/66/b8/9cb66184745ef1d783af3f7d3f22", - "build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/52/e8/4826278e2030d629a682a8de070f", - "build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/a5/8a/9e07236256d006f0357d5d1aa887", - "build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/81/38/985294f68973344e2f012fe93c45", - "build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d3/57/2cdf16147cdd25263ba76aa40198", - "build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a7/ec/1d64c0c31d58ef530b6894fabf2a", - "build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/4c/ea/c136ba4360d210842915c2f6c55e", - "build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/35/06/d5ae11c90f89d1c10ca62a2b2f66", - "build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/a1/e9/960e434759c45b623fba34725e64", - "build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/dd/d0/f85582938a539d2d677d3e36b61b", - "build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/8d/e9/3685ecf7b07f3e3568867da5536f" + "build/prefab/linux-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/6d/a5/bc48ad0c1b5757913b8d354e4302", + "build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/94/e0/cd115dbd1ce795e9b6a2878e8912", + "build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/44/78/d3166e9e3f2f443c13838768b4ee", + "build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/79/af/4d26abbac53e9fc396d1fc5660ae", + "build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e0/85/8d8d8d74685d0823bc341942c31c", + "build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/34/81/06f6dff6c5686d1b2ffb1b44bb46", + "build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/34/96/f1d361405a41d118016a576ef517", + "build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/0c/7e/116fdd2bb269fd3c4c3826f526b9", + "build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/75/a6/320d0a4b79a1e0c0cb8fecbc69e2", + "build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/8a/de/f35f0be58d20cc58cf1ba078013a", + "build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/2b/23/849c8e6286a8de4f6140f249c59a", + "build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/ba/fd/49fe8a41b0448e2fd81a462618cb" } \ No newline at end of file diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml index 563dcadb..ecf35539 100644 --- a/.idea/dictionaries/ericf.xml +++ b/.idea/dictionaries/ericf.xml @@ -934,6 +934,7 @@ instancer interstitials intex + intp introspectable ipaddress ipos diff --git a/assets/src/ba_data/python/_ba.py b/assets/src/ba_data/python/_ba.py index 667f6921..e7c48f86 100644 --- a/assets/src/ba_data/python/_ba.py +++ b/assets/src/ba_data/python/_ba.py @@ -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) -# SOURCES_HASH=48988468250135652281791058794704714718 +# SOURCES_HASH=289441941088504861465847265420796017643 # I'm sorry Pylint. I know this file saddens you. Be strong. # pylint: disable=useless-suppression @@ -855,18 +855,12 @@ class SessionPlayer: character: str activityplayer: Optional[ba.Player] - def assigninput(self, type: Union[str, Tuple[str, ...]], + def assigninput(self, type: Union[ba.InputType, Tuple[ba.InputType, ...]], call: Callable) -> None: - """assigninput(type: Union[str, Tuple[str, ...]], + """assigninput(type: Union[ba.InputType, Tuple[ba.InputType, ...]], call: Callable) -> None Set the python callable to be run for one or more types of input. - Valid type values are: 'jumpPress', 'jumpRelease', 'punchPress', - 'punchRelease','bombPress', 'bombRelease', 'pickUpPress', - 'pickUpRelease', 'upDown','leftRight','upPress', 'upRelease', - 'downPress', 'downRelease', 'leftPress','leftRelease','rightPress', - 'rightRelease', 'run', 'flyPress', 'flyRelease', 'startPress', - 'startRelease' """ return None @@ -2922,22 +2916,6 @@ def music_player_stop() -> None: return None -def new_activity(activity_type: Type[ba.Activity], - settings: dict = None) -> ba.Activity: - """new_activity(activity_type: Type[ba.Activity], - settings: dict = None) -> ba.Activity - - Instantiates a ba.Activity given a type object. - - Category: General Utility Functions - - Activities require special setup and thus cannot be directly - instantiated; You must go through this function. - """ - import ba # pylint: disable=cyclic-import - return ba.Activity(settings={}) - - def new_host_session(sessiontype: Type[ba.Session], benchmark_type: str = None) -> None: """new_host_session(sessiontype: Type[ba.Session], @@ -2956,6 +2934,22 @@ def new_replay_session(file_name: str) -> None: return None +def newactivity(activity_type: Type[ba.Activity], + settings: dict = None) -> ba.Activity: + """newactivity(activity_type: Type[ba.Activity], + settings: dict = None) -> ba.Activity + + Instantiates a ba.Activity given a type object. + + Category: General Utility Functions + + Activities require special setup and thus cannot be directly + instantiated; You must go through this function. + """ + import ba # pylint: disable=cyclic-import + return ba.Activity(settings={}) + + def newnode(type: str, owner: ba.Node = None, attrs: dict = None, diff --git a/assets/src/ba_data/python/ba/__init__.py b/assets/src/ba_data/python/ba/__init__.py index 9f1c38b3..26bdf607 100644 --- a/assets/src/ba_data/python/ba/__init__.py +++ b/assets/src/ba_data/python/ba/__init__.py @@ -32,7 +32,7 @@ from _ba import (CollideModel, Context, ContextCall, Data, InputDevice, Vec3, Widget, buttonwidget, camerashake, checkboxwidget, columnwidget, containerwidget, do_once, emitfx, getactivity, getcollidemodel, getmodel, getnodes, getsession, getsound, - gettexture, hscrollwidget, imagewidget, log, new_activity, + gettexture, hscrollwidget, imagewidget, log, newactivity, newnode, playsound, printnodes, printobjects, pushcall, quit, rowwidget, safecolor, screenmessage, scrollwidget, set_analytics_screen, charstr, textwidget, time, timer, @@ -46,7 +46,7 @@ from ba._coopgame import CoopGameActivity from ba._coopsession import CoopSession from ba._dependency import (Dependency, DependencyComponent, DependencySet, AssetPackage) -from ba._enums import TimeType, Permission, TimeFormat, SpecialChar +from ba._enums import TimeType, Permission, TimeFormat, SpecialChar, InputType from ba._error import ( print_exception, print_error, ContextError, NotFoundError, PlayerNotFoundError, SessionPlayerNotFoundError, NodeNotFoundError, @@ -55,7 +55,7 @@ from ba._error import ( SessionNotFoundError, DelegateNotFoundError, DependencyError) from ba._freeforallsession import FreeForAllSession from ba._gameactivity import GameActivity -from ba._gameresults import TeamGameResults +from ba._gameresults import GameResults from ba._gamesettings import (Setting, IntSetting, FloatSetting, ChoiceSetting, BoolSetting, IntChoiceSetting, FloatChoiceSetting) diff --git a/assets/src/ba_data/python/ba/_activitytypes.py b/assets/src/ba_data/python/ba/_activitytypes.py index 66bbc980..01e3fc55 100644 --- a/assets/src/ba_data/python/ba/_activitytypes.py +++ b/assets/src/ba_data/python/ba/_activitytypes.py @@ -26,6 +26,7 @@ from typing import TYPE_CHECKING import _ba from ba._activity import Activity from ba._music import setmusic, MusicType +from ba._enums import InputType # False-positive from pylint due to our class-generics-filter. from ba._player import EmptyPlayer # pylint: disable=W0611 from ba._team import EmptyTeam # pylint: disable=W0611 @@ -229,6 +230,6 @@ class ScoreScreenActivity(Activity[EmptyPlayer, EmptyTeam]): # Just to be extra careful, don't assign if we're transitioning out. # (though theoretically that would be ok). if not self.is_transitioning_out() and player: - player.assigninput( - ('jumpPress', 'punchPress', 'bombPress', 'pickUpPress'), - self._player_press) + player.assigninput((InputType.JUMP_PRESS, InputType.PUNCH_PRESS, + InputType.BOMB_PRESS, InputType.PICK_UP_PRESS), + self._player_press) diff --git a/assets/src/ba_data/python/ba/_benchmark.py b/assets/src/ba_data/python/ba/_benchmark.py index 7646f03a..539cc31d 100644 --- a/assets/src/ba_data/python/ba/_benchmark.py +++ b/assets/src/ba_data/python/ba/_benchmark.py @@ -53,7 +53,7 @@ def run_cpu_benchmark() -> None: cfg['Graphics Quality'] = 'Low' cfg.apply() self.benchmark_type = 'cpu' - self.setactivity(_ba.new_activity(tutorial.TutorialActivity)) + self.setactivity(_ba.newactivity(tutorial.TutorialActivity)) def __del__(self) -> None: diff --git a/assets/src/ba_data/python/ba/_coopsession.py b/assets/src/ba_data/python/ba/_coopsession.py index ac2b4add..926d1cc9 100644 --- a/assets/src/ba_data/python/ba/_coopsession.py +++ b/assets/src/ba_data/python/ba/_coopsession.py @@ -98,7 +98,7 @@ class CoopSession(Session): self._custom_menu_ui: List[Dict[str, Any]] = [] # Start our joining screen. - self.setactivity(_ba.new_activity(CoopJoinActivity)) + self.setactivity(_ba.newactivity(CoopJoinActivity)) self._next_game_instance: Optional[ba.GameActivity] = None self._next_game_level_name: Optional[str] = None @@ -126,7 +126,7 @@ class CoopSession(Session): if setting.name not in settings: settings[setting.name] = setting.default - newactivity = _ba.new_activity(gametype, settings) + newactivity = _ba.newactivity(gametype, settings) assert isinstance(newactivity, GameActivity) self._current_game_instance: GameActivity = newactivity @@ -150,7 +150,7 @@ class CoopSession(Session): settings[setting.name] = setting.default # We wanna be in the activity's context while taking it down. - newactivity = _ba.new_activity(gametype, settings) + newactivity = _ba.newactivity(gametype, settings) assert isinstance(newactivity, GameActivity) self._next_game_instance = newactivity self._next_game_level_name = nextlevel.name @@ -165,7 +165,7 @@ class CoopSession(Session): and self._tutorial_activity is None and not self._ran_tutorial_activity): from bastd.tutorial import TutorialActivity - self._tutorial_activity = _ba.new_activity(TutorialActivity) + self._tutorial_activity = _ba.newactivity(TutorialActivity) def get_custom_menu_entries(self) -> List[Dict[str, Any]]: return self._custom_menu_ui @@ -250,7 +250,7 @@ class CoopSession(Session): from ba._lang import Lstr from ba._general import WeakCall from ba._coopgame import CoopGameActivity - from ba._gameresults import TeamGameResults + from ba._gameresults import GameResults from ba._score import ScoreType from ba._player import PlayerInfo from bastd.tutorial import TutorialActivity @@ -258,10 +258,10 @@ class CoopSession(Session): app = _ba.app - # If we're running a TeamGameActivity we'll have a TeamGameResults + # If we're running a TeamGameActivity we'll have a GameResults # as results. Otherwise its an old CoopGameActivity so its giving # us a dict of random stuff. - if isinstance(results, TeamGameResults): + if isinstance(results, GameResults): outcome = 'defeat' # This can't be 'beaten'. else: try: @@ -338,13 +338,13 @@ class CoopSession(Session): # If we were in a tutorial, just pop a transition to get to the # actual round. elif isinstance(activity, TutorialActivity): - self.setactivity(_ba.new_activity(TransitionActivity)) + self.setactivity(_ba.newactivity(TransitionActivity)) else: playerinfos: List[ba.PlayerInfo] # Generic team games. - if isinstance(results, TeamGameResults): + if isinstance(results, GameResults): playerinfos = results.playerinfos score = results.get_team_score(results.sessionteams[0]) fail_message = None @@ -390,10 +390,10 @@ class CoopSession(Session): if outcome == 'restart': # This will pop up back in the same round. - self.setactivity(_ba.new_activity(TransitionActivity)) + self.setactivity(_ba.newactivity(TransitionActivity)) else: self.setactivity( - _ba.new_activity( + _ba.newactivity( CoopScoreScreen, { 'playerinfos': playerinfos, 'score': score, diff --git a/assets/src/ba_data/python/ba/_dualteamsession.py b/assets/src/ba_data/python/ba/_dualteamsession.py index c07e0451..b53eb62f 100644 --- a/assets/src/ba_data/python/ba/_dualteamsession.py +++ b/assets/src/ba_data/python/ba/_dualteamsession.py @@ -35,8 +35,11 @@ class DualTeamSession(MultiTeamSession): Category: Gameplay Classes """ + + # Base class overrides: use_teams = True use_team_colors = True + _playlist_selection_var = 'Team Tournament Playlist Selection' _playlist_randomize_var = 'Team Tournament Playlist Randomize' _playlists_var = 'Team Tournament Playlists' @@ -45,28 +48,28 @@ class DualTeamSession(MultiTeamSession): _ba.increment_analytics_count('Teams session start') super().__init__() - def _switch_to_score_screen(self, results: ba.TeamGameResults) -> None: + def _switch_to_score_screen(self, results: ba.GameResults) -> None: # pylint: disable=cyclic-import from bastd.activity.drawscore import DrawScoreScreenActivity from bastd.activity.dualteamscore import ( TeamVictoryScoreScreenActivity) from bastd.activity.multiteamvictory import ( TeamSeriesVictoryScoreScreenActivity) - winners = results.winnergroups + winnergroups = results.winnergroups # If everyone has the same score, call it a draw. - if len(winners) < 2: - self.setactivity(_ba.new_activity(DrawScoreScreenActivity)) + if len(winnergroups) < 2: + self.setactivity(_ba.newactivity(DrawScoreScreenActivity)) else: - winner = winners[0].teams[0] + winner = winnergroups[0].teams[0] winner.customdata['score'] += 1 # If a team has won, show final victory screen. if winner.customdata['score'] >= (self._series_length - 1) / 2 + 1: self.setactivity( - _ba.new_activity(TeamSeriesVictoryScoreScreenActivity, - {'winner': winner})) + _ba.newactivity(TeamSeriesVictoryScoreScreenActivity, + {'winner': winner})) else: self.setactivity( - _ba.new_activity(TeamVictoryScoreScreenActivity, - {'winner': winner})) + _ba.newactivity(TeamVictoryScoreScreenActivity, + {'winner': winner})) diff --git a/assets/src/ba_data/python/ba/_enums.py b/assets/src/ba_data/python/ba/_enums.py index 4d69467e..3d78425a 100644 --- a/assets/src/ba_data/python/ba/_enums.py +++ b/assets/src/ba_data/python/ba/_enums.py @@ -23,6 +23,39 @@ from enum import Enum +class InputType(Enum): + """Types of input a controller can send to the game. + + Category: Enums + + """ + UP_DOWN = 0 + LEFT_RIGHT = 1 + JUMP_PRESS = 2 + JUMP_RELEASE = 3 + PUNCH_PRESS = 4 + PUNCH_RELEASE = 5 + BOMB_PRESS = 6 + BOMB_RELEASE = 7 + PICK_UP_PRESS = 8 + PICK_UP_RELEASE = 9 + RUN = 10 + FLY_PRESS = 11 + FLY_RELEASE = 12 + START_PRESS = 13 + START_RELEASE = 14 + HOLD_POSITION_PRESS = 15 + HOLD_POSITION_RELEASE = 16 + LEFT_PRESS = 17 + LEFT_RELEASE = 18 + RIGHT_PRESS = 19 + RIGHT_RELEASE = 20 + UP_PRESS = 21 + UP_RELEASE = 22 + DOWN_PRESS = 23 + DOWN_RELEASE = 24 + + class TimeType(Enum): """Specifies the type of time for various operations to target/use. diff --git a/assets/src/ba_data/python/ba/_freeforallsession.py b/assets/src/ba_data/python/ba/_freeforallsession.py index 71ac1088..2f39ba5c 100644 --- a/assets/src/ba_data/python/ba/_freeforallsession.py +++ b/assets/src/ba_data/python/ba/_freeforallsession.py @@ -69,7 +69,7 @@ class FreeForAllSession(MultiTeamSession): _ba.increment_analytics_count('Free-for-all session start') super().__init__() - def _switch_to_score_screen(self, results: ba.TeamGameResults) -> None: + def _switch_to_score_screen(self, results: ba.GameResults) -> None: # pylint: disable=cyclic-import from bastd.activity.drawscore import DrawScoreScreenActivity from bastd.activity.multiteamvictory import ( @@ -82,8 +82,7 @@ class FreeForAllSession(MultiTeamSession): # call it a draw. if len(self.players) > 1 and len(winners) < 2: self.setactivity( - _ba.new_activity(DrawScoreScreenActivity, - {'results': results})) + _ba.newactivity(DrawScoreScreenActivity, {'results': results})) else: # Award different point amounts based on number of players. point_awards = self.get_ffa_point_awards() @@ -106,9 +105,9 @@ class FreeForAllSession(MultiTeamSession): and series_winners[0].customdata['score'] != series_winners[1].customdata['score'])): self.setactivity( - _ba.new_activity(TeamSeriesVictoryScoreScreenActivity, - {'winner': series_winners[0]})) + _ba.newactivity(TeamSeriesVictoryScoreScreenActivity, + {'winner': series_winners[0]})) else: self.setactivity( - _ba.new_activity(FreeForAllVictoryScoreScreenActivity, - {'results': results})) + _ba.newactivity(FreeForAllVictoryScoreScreenActivity, + {'results': results})) diff --git a/assets/src/ba_data/python/ba/_gameactivity.py b/assets/src/ba_data/python/ba/_gameactivity.py index 66f8d263..a6320fa8 100644 --- a/assets/src/ba_data/python/ba/_gameactivity.py +++ b/assets/src/ba_data/python/ba/_gameactivity.py @@ -820,11 +820,11 @@ class GameActivity(Activity[PlayerType, TeamType]): results: Any = None, delay: float = 0.0, force: bool = False) -> None: - from ba._gameresults import TeamGameResults + from ba._gameresults import GameResults # If results is a standard team-game-results, associate it with us # so it can grab our score prefs. - if isinstance(results, TeamGameResults): + if isinstance(results, GameResults): results.set_game(self) # If we had a standard time-limit that had not expired, stop it so diff --git a/assets/src/ba_data/python/ba/_gameresults.py b/assets/src/ba_data/python/ba/_gameresults.py index 58e0a285..8b850f80 100644 --- a/assets/src/ba_data/python/ba/_gameresults.py +++ b/assets/src/ba_data/python/ba/_gameresults.py @@ -39,9 +39,9 @@ class WinnerGroup: teams: Sequence[ba.SessionTeam] -class TeamGameResults: +class GameResults: """ - Results for a completed ba.TeamGameActivity. + Results for a completed game. Category: Gameplay Classes @@ -65,7 +65,7 @@ class TeamGameResults: def set_game(self, game: ba.GameActivity) -> None: """Set the game instance these results are applying to.""" if self._game_set: - raise RuntimeError('Game set twice for TeamGameResults.') + raise RuntimeError('Game set twice for GameResults.') self._game_set = True self._sessionteams = [weakref.ref(team) for team in game.teams] scoreconfig = game.getscoreconfig() diff --git a/assets/src/ba_data/python/ba/_lobby.py b/assets/src/ba_data/python/ba/_lobby.py index 10cfa563..c3564c81 100644 --- a/assets/src/ba_data/python/ba/_lobby.py +++ b/assets/src/ba_data/python/ba/_lobby.py @@ -30,7 +30,7 @@ import _ba from ba._error import print_exception, print_error, NotFoundError from ba._gameutils import animate, animate_array from ba._lang import Lstr -from ba._enums import SpecialChar +from ba._enums import SpecialChar, InputType from ba._profile import get_player_profile_colors if TYPE_CHECKING: @@ -515,32 +515,36 @@ class Chooser: if not ready: self._sessionplayer.assigninput( - 'leftPress', Call(self.handlemessage, - ChangeMessage('team', -1))) + InputType.LEFT_PRESS, + Call(self.handlemessage, ChangeMessage('team', -1))) self._sessionplayer.assigninput( - 'rightPress', Call(self.handlemessage, - ChangeMessage('team', 1))) + InputType.RIGHT_PRESS, + Call(self.handlemessage, ChangeMessage('team', 1))) self._sessionplayer.assigninput( - 'bombPress', + InputType.BOMB_PRESS, Call(self.handlemessage, ChangeMessage('character', 1))) self._sessionplayer.assigninput( - 'upPress', + InputType.UP_PRESS, Call(self.handlemessage, ChangeMessage('profileindex', -1))) self._sessionplayer.assigninput( - 'downPress', + InputType.DOWN_PRESS, Call(self.handlemessage, ChangeMessage('profileindex', 1))) self._sessionplayer.assigninput( - ('jumpPress', 'pickUpPress', 'punchPress'), + (InputType.JUMP_PRESS, InputType.PICK_UP_PRESS, + InputType.PUNCH_PRESS), Call(self.handlemessage, ChangeMessage('ready', 1))) self._ready = False self._update_text() self._sessionplayer.setname('untitled', real=False) else: self._sessionplayer.assigninput( - ('leftPress', 'rightPress', 'upPress', 'downPress', - 'jumpPress', 'bombPress', 'pickUpPress'), self._do_nothing) + (InputType.LEFT_PRESS, InputType.RIGHT_PRESS, + InputType.UP_PRESS, InputType.DOWN_PRESS, + InputType.JUMP_PRESS, InputType.BOMB_PRESS, + InputType.PICK_UP_PRESS), self._do_nothing) self._sessionplayer.assigninput( - ('jumpPress', 'bombPress', 'pickUpPress', 'punchPress'), + (InputType.JUMP_PRESS, InputType.BOMB_PRESS, + InputType.PICK_UP_PRESS, InputType.PUNCH_PRESS), Call(self.handlemessage, ChangeMessage('ready', 0))) # Store the last profile picked by this input for reuse. diff --git a/assets/src/ba_data/python/ba/_multiteamsession.py b/assets/src/ba_data/python/ba/_multiteamsession.py index 91a17e5c..90bd4b1f 100644 --- a/assets/src/ba_data/python/ba/_multiteamsession.py +++ b/assets/src/ba_data/python/ba/_multiteamsession.py @@ -85,7 +85,7 @@ class MultiTeamSession(Session): from bastd.tutorial import TutorialActivity # Get this loading. - self._tutorial_activity_instance = _ba.new_activity( + self._tutorial_activity_instance = _ba.newactivity( TutorialActivity) else: self._tutorial_activity_instance = None @@ -133,7 +133,7 @@ class MultiTeamSession(Session): self._instantiate_next_game() # Start in our custom join screen. - self.setactivity(_ba.new_activity(MultiTeamJoinActivity)) + self.setactivity(_ba.newactivity(MultiTeamJoinActivity)) def get_ffa_series_length(self) -> int: """Return free-for-all series length.""" @@ -165,7 +165,7 @@ class MultiTeamSession(Session): return _ba.app.config.get('Free-for-All Max Players', 8) def _instantiate_next_game(self) -> None: - self._next_game_instance = _ba.new_activity( + self._next_game_instance = _ba.newactivity( self._next_game_spec['resolved_type'], self._next_game_spec['settings']) @@ -187,7 +187,7 @@ class MultiTeamSession(Session): # to transition us into a round gracefully (otherwise we'd snap from # one terrain to another instantly). elif isinstance(activity, TutorialActivity): - self.setactivity(_ba.new_activity(TransitionActivity)) + self.setactivity(_ba.newactivity(TransitionActivity)) # If we're in a between-round activity or a restart-activity, hop # into a round. @@ -241,7 +241,7 @@ class MultiTeamSession(Session): def announce_game_results(self, activity: ba.GameActivity, - results: ba.TeamGameResults, + results: ba.GameResults, delay: float, announce_winning_team: bool = True) -> None: """Show basic game result at the end of a game. diff --git a/assets/src/ba_data/python/ba/_player.py b/assets/src/ba_data/python/ba/_player.py index 3a1c38e1..a07bc61d 100644 --- a/assets/src/ba_data/python/ba/_player.py +++ b/assets/src/ba_data/python/ba/_player.py @@ -269,18 +269,13 @@ class Player(Generic[TeamType]): assert not self._expired return self._sessionplayer.get_icon() - def assigninput(self, inputtype: Union[str, Tuple[str, ...]], + def assigninput(self, inputtype: Union[ba.InputType, Tuple[ba.InputType, + ...]], call: Callable) -> None: - """assigninput(type: Union[str, Tuple[str, ...]], + """assigninput(type: Union[ba.InputType, Tuple[ba.InputType, ...]], call: Callable) -> None Set the python callable to be run for one or more types of input. - Valid type values are: 'jumpPress', 'jumpRelease', 'punchPress', - 'punchRelease','bombPress', 'bombRelease', 'pickUpPress', - 'pickUpRelease', 'upDown','leftRight','upPress', 'upRelease', - 'downPress', 'downRelease', 'leftPress','leftRelease','rightPress', - 'rightRelease', 'run', 'flyPress', 'flyRelease', 'startPress', - 'startRelease' """ assert self._postinited assert not self._expired diff --git a/assets/src/ba_data/python/ba/_session.py b/assets/src/ba_data/python/ba/_session.py index a290efde..2025cc42 100644 --- a/assets/src/ba_data/python/ba/_session.py +++ b/assets/src/ba_data/python/ba/_session.py @@ -177,7 +177,7 @@ class Session: self._ending = False self._activity_should_end_immediately = False self._activity_should_end_immediately_results: ( - Optional[ba.TeamGameResults]) = None + Optional[ba.GameResults]) = None self._activity_should_end_immediately_delay = 0.0 # Create static teams if we're using them. @@ -348,7 +348,7 @@ class Session: '_launch_end_session_activity called twice (since_last=' + str(since_last) + ')') self._launch_end_session_activity_time = curtime - self.setactivity(_ba.new_activity(EndSessionActivity)) + self.setactivity(_ba.newactivity(EndSessionActivity)) self._wants_to_end = False self._ending = True # Prevent further actions. diff --git a/assets/src/ba_data/python/ba/_teamgame.py b/assets/src/ba_data/python/ba/_teamgame.py index b6cb3386..0bd3736c 100644 --- a/assets/src/ba_data/python/ba/_teamgame.py +++ b/assets/src/ba_data/python/ba/_teamgame.py @@ -26,7 +26,7 @@ from typing import TYPE_CHECKING, TypeVar from ba._freeforallsession import FreeForAllSession from ba._gameactivity import GameActivity -from ba._gameresults import TeamGameResults +from ba._gameresults import GameResults from ba._dualteamsession import DualTeamSession import _ba @@ -152,7 +152,7 @@ class TeamGameActivity(GameActivity[PlayerType, TeamType]): super().end(results, delay=2.0 + announce_delay, force=force) # Need to do this *after* end end call so that results is valid. - assert isinstance(results, TeamGameResults) + assert isinstance(results, GameResults) if do_announce and isinstance(session, MultiTeamSession): session.announce_game_results( self, diff --git a/assets/src/ba_data/python/bastd/activity/freeforallvictory.py b/assets/src/ba_data/python/bastd/activity/freeforallvictory.py index 3dd4232c..d3147b32 100644 --- a/assets/src/ba_data/python/bastd/activity/freeforallvictory.py +++ b/assets/src/ba_data/python/bastd/activity/freeforallvictory.py @@ -83,7 +83,7 @@ class FreeForAllVictoryScoreScreenActivity(MultiTeamScoreScreenActivity): ba.timer(0.3, ba.Call(ba.playsound, self._score_display_sound)) results = self.settings_raw['results'] - assert isinstance(results, ba.TeamGameResults) + assert isinstance(results, ba.GameResults) self.show_player_scores(delay=0.001, results=results, scale=1.2, diff --git a/assets/src/ba_data/python/bastd/activity/multiteamscore.py b/assets/src/ba_data/python/bastd/activity/multiteamscore.py index 909619b5..c95266d1 100644 --- a/assets/src/ba_data/python/bastd/activity/multiteamscore.py +++ b/assets/src/ba_data/python/bastd/activity/multiteamscore.py @@ -70,7 +70,7 @@ class MultiTeamScoreScreenActivity(ScoreScreenActivity): def show_player_scores(self, delay: float = 2.5, - results: Optional[ba.TeamGameResults] = None, + results: Optional[ba.GameResults] = None, scale: float = 1.0, x_offset: float = 0.0, y_offset: float = 0.0) -> None: @@ -87,7 +87,7 @@ class MultiTeamScoreScreenActivity(ScoreScreenActivity): def _get_prec_score(p_rec: ba.PlayerRecord) -> Optional[int]: if is_free_for_all and results is not None: - assert isinstance(results, ba.TeamGameResults) + assert isinstance(results, ba.GameResults) assert p_rec.team.gameteam is not None val = results.get_team_score(p_rec.team) return val @@ -95,7 +95,7 @@ class MultiTeamScoreScreenActivity(ScoreScreenActivity): def _get_prec_score_str(p_rec: ba.PlayerRecord) -> Union[str, ba.Lstr]: if is_free_for_all and results is not None: - assert isinstance(results, ba.TeamGameResults) + assert isinstance(results, ba.GameResults) assert p_rec.team.gameteam is not None val = results.get_team_score_str(p_rec.team.gameteam) assert val is not None @@ -107,7 +107,7 @@ class MultiTeamScoreScreenActivity(ScoreScreenActivity): # (since they're not in results and that's where we pull their # scores from) if results is not None: - assert isinstance(results, ba.TeamGameResults) + assert isinstance(results, ba.GameResults) player_records = [] assert self.stats valid_players = list(self.stats.get_records().items()) diff --git a/assets/src/ba_data/python/bastd/actor/playerspaz.py b/assets/src/ba_data/python/bastd/actor/playerspaz.py index 7d8da8d5..48acc0aa 100644 --- a/assets/src/ba_data/python/bastd/actor/playerspaz.py +++ b/assets/src/ba_data/python/bastd/actor/playerspaz.py @@ -143,28 +143,30 @@ class PlayerSpaz(Spaz): else: player.resetinput() - player.assigninput('upDown', self.on_move_up_down) - player.assigninput('leftRight', self.on_move_left_right) - player.assigninput('holdPositionPress', self.on_hold_position_press) - player.assigninput('holdPositionRelease', + player.assigninput(ba.InputType.UP_DOWN, self.on_move_up_down) + player.assigninput(ba.InputType.LEFT_RIGHT, self.on_move_left_right) + player.assigninput(ba.InputType.HOLD_POSITION_PRESS, + self.on_hold_position_press) + player.assigninput(ba.InputType.HOLD_POSITION_RELEASE, self.on_hold_position_release) + intp = ba.InputType if enable_jump: - player.assigninput('jumpPress', self.on_jump_press) - player.assigninput('jumpRelease', self.on_jump_release) + player.assigninput(intp.JUMP_PRESS, self.on_jump_press) + player.assigninput(intp.JUMP_RELEASE, self.on_jump_release) if enable_pickup: - player.assigninput('pickUpPress', self.on_pickup_press) - player.assigninput('pickUpRelease', self.on_pickup_release) + player.assigninput(intp.PICK_UP_PRESS, self.on_pickup_press) + player.assigninput(intp.PICK_UP_RELEASE, self.on_pickup_release) if enable_punch: - player.assigninput('punchPress', self.on_punch_press) - player.assigninput('punchRelease', self.on_punch_release) + player.assigninput(intp.PUNCH_PRESS, self.on_punch_press) + player.assigninput(intp.PUNCH_RELEASE, self.on_punch_release) if enable_bomb: - player.assigninput('bombPress', self.on_bomb_press) - player.assigninput('bombRelease', self.on_bomb_release) + player.assigninput(intp.BOMB_PRESS, self.on_bomb_press) + player.assigninput(intp.BOMB_RELEASE, self.on_bomb_release) if enable_run: - player.assigninput('run', self.on_run) + player.assigninput(intp.RUN, self.on_run) if enable_fly: - player.assigninput('flyPress', self.on_fly_press) - player.assigninput('flyRelease', self.on_fly_release) + player.assigninput(intp.FLY_PRESS, self.on_fly_press) + player.assigninput(intp.FLY_RELEASE, self.on_fly_release) self._connected_to_player = player diff --git a/assets/src/ba_data/python/bastd/game/assault.py b/assets/src/ba_data/python/bastd/game/assault.py index d1226977..17d6fea2 100644 --- a/assets/src/ba_data/python/bastd/game/assault.py +++ b/assets/src/ba_data/python/bastd/game/assault.py @@ -261,7 +261,7 @@ class AssaultGame(ba.TeamGameActivity[Player, Team]): self.end_game() def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results=results) diff --git a/assets/src/ba_data/python/bastd/game/capturetheflag.py b/assets/src/ba_data/python/bastd/game/capturetheflag.py index 3f709d0b..f12cdde8 100644 --- a/assets/src/ba_data/python/bastd/game/capturetheflag.py +++ b/assets/src/ba_data/python/bastd/game/capturetheflag.py @@ -388,7 +388,7 @@ class CaptureTheFlagGame(ba.TeamGameActivity[Player, Team]): self.end_game() def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results=results, announce_delay=0.8) diff --git a/assets/src/ba_data/python/bastd/game/chosenone.py b/assets/src/ba_data/python/bastd/game/chosenone.py index 95fc6527..b9d4463f 100644 --- a/assets/src/ba_data/python/bastd/game/chosenone.py +++ b/assets/src/ba_data/python/bastd/game/chosenone.py @@ -262,7 +262,7 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]): self._set_chosen_one_player(None) def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, self._chosen_one_time - team.time_remaining) diff --git a/assets/src/ba_data/python/bastd/game/conquest.py b/assets/src/ba_data/python/bastd/game/conquest.py index 7849910b..06ac4d21 100644 --- a/assets/src/ba_data/python/bastd/game/conquest.py +++ b/assets/src/ba_data/python/bastd/game/conquest.py @@ -149,8 +149,10 @@ class ConquestGame(ba.TeamGameActivity[Player, Team]): # We want flags to tell us they've been hit but not react physically. self._extraflagmat.add_actions( conditions=('they_have_material', shared.player_material), - actions=(('modify_part_collision', 'collide', True), - ('call', 'at_connect', self._handle_flag_player_collide))) + actions=( + ('modify_part_collision', 'collide', True), + ('call', 'at_connect', self._handle_flag_player_collide), + )) def get_instance_description(self) -> Union[str, Sequence]: return 'Secure all ${ARG1} flags.', len(self.map.flag_points) @@ -229,7 +231,7 @@ class ConquestGame(ba.TeamGameActivity[Player, Team]): len(self._flags)) def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.flags_held) self.end(results=results) diff --git a/assets/src/ba_data/python/bastd/game/deathmatch.py b/assets/src/ba_data/python/bastd/game/deathmatch.py index 0b29ef1f..4a8c95c4 100644 --- a/assets/src/ba_data/python/bastd/game/deathmatch.py +++ b/assets/src/ba_data/python/bastd/game/deathmatch.py @@ -211,7 +211,7 @@ class DeathMatchGame(ba.TeamGameActivity[Player, Team]): self._score_to_win) def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results=results) diff --git a/assets/src/ba_data/python/bastd/game/easteregghunt.py b/assets/src/ba_data/python/bastd/game/easteregghunt.py index bc37fcca..aa0c99ea 100644 --- a/assets/src/ba_data/python/bastd/game/easteregghunt.py +++ b/assets/src/ba_data/python/bastd/game/easteregghunt.py @@ -230,7 +230,7 @@ class EasterEggHuntGame(ba.TeamGameActivity[Player, Team]): self._scoreboard.set_team_value(team, team.score) def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results) diff --git a/assets/src/ba_data/python/bastd/game/elimination.py b/assets/src/ba_data/python/bastd/game/elimination.py index 3ab82c96..14c428fc 100644 --- a/assets/src/ba_data/python/bastd/game/elimination.py +++ b/assets/src/ba_data/python/bastd/game/elimination.py @@ -575,7 +575,7 @@ class EliminationGame(ba.TeamGameActivity[Player, Team]): def end_game(self) -> None: if self.has_ended(): return - results = ba.TeamGameResults() + results = ba.GameResults() self._vs_text = None # Kill our 'vs' if its there. for team in self.teams: results.set_team_score(team, team.survival_seconds) diff --git a/assets/src/ba_data/python/bastd/game/football.py b/assets/src/ba_data/python/bastd/game/football.py index 530ea8ef..c6b12473 100644 --- a/assets/src/ba_data/python/bastd/game/football.py +++ b/assets/src/ba_data/python/bastd/game/football.py @@ -266,7 +266,7 @@ class FootballTeamGame(ba.TeamGameActivity[Player, Team]): self._update_scoreboard() def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results=results, announce_delay=0.8) diff --git a/assets/src/ba_data/python/bastd/game/hockey.py b/assets/src/ba_data/python/bastd/game/hockey.py index 30a64f2b..bf09dff9 100644 --- a/assets/src/ba_data/python/bastd/game/hockey.py +++ b/assets/src/ba_data/python/bastd/game/hockey.py @@ -343,7 +343,7 @@ class HockeyGame(ba.TeamGameActivity[Player, Team]): self._update_scoreboard() def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results=results) diff --git a/assets/src/ba_data/python/bastd/game/keepaway.py b/assets/src/ba_data/python/bastd/game/keepaway.py index 79007e6d..a15de541 100644 --- a/assets/src/ba_data/python/bastd/game/keepaway.py +++ b/assets/src/ba_data/python/bastd/game/keepaway.py @@ -190,7 +190,7 @@ class KeepAwayGame(ba.TeamGameActivity[Player, Team]): self.end_game() def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, self._hold_time - team.timeremaining) self.end(results=results, announce_delay=0) diff --git a/assets/src/ba_data/python/bastd/game/kingofthehill.py b/assets/src/ba_data/python/bastd/game/kingofthehill.py index 5e44602e..079a1f73 100644 --- a/assets/src/ba_data/python/bastd/game/kingofthehill.py +++ b/assets/src/ba_data/python/bastd/game/kingofthehill.py @@ -227,7 +227,7 @@ class KingOfTheHillGame(ba.TeamGameActivity[Player, Team]): self.end_game() def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, self._hold_time - team.time_remaining) self.end(results=results, announce_delay=0) diff --git a/assets/src/ba_data/python/bastd/game/meteorshower.py b/assets/src/ba_data/python/bastd/game/meteorshower.py index 5f7df16f..233894c6 100644 --- a/assets/src/ba_data/python/bastd/game/meteorshower.py +++ b/assets/src/ba_data/python/bastd/game/meteorshower.py @@ -263,7 +263,7 @@ class MeteorShowerGame(ba.TeamGameActivity[Player, Team]): # Ok now calc game results: set a score for each team and then tell # the game to end. - results = ba.TeamGameResults() + results = ba.GameResults() # Remember that 'free-for-all' mode is simply a special form # of 'teams' mode where each player gets their own team, so we can diff --git a/assets/src/ba_data/python/bastd/game/ninjafight.py b/assets/src/ba_data/python/bastd/game/ninjafight.py index 54e0a20d..1180dda6 100644 --- a/assets/src/ba_data/python/bastd/game/ninjafight.py +++ b/assets/src/ba_data/python/bastd/game/ninjafight.py @@ -172,7 +172,7 @@ class NinjaFightGame(ba.TeamGameActivity[Player, Team]): assert self._timer is not None self._timer.stop() - results = ba.TeamGameResults() + results = ba.GameResults() # If we won, set our score to the elapsed time in milliseconds. # (there should just be 1 team here since this is co-op). diff --git a/assets/src/ba_data/python/bastd/game/race.py b/assets/src/ba_data/python/bastd/game/race.py index 9b050b96..bbe8dc26 100644 --- a/assets/src/ba_data/python/bastd/game/race.py +++ b/assets/src/ba_data/python/bastd/game/race.py @@ -712,7 +712,7 @@ class RaceGame(ba.TeamGameActivity[Player, Team]): endtime=None if self._last_team_time is None else ( self._timer.getstarttime() + self._last_team_time)) - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: if team.time is not None: diff --git a/assets/src/ba_data/python/bastd/game/runaround.py b/assets/src/ba_data/python/bastd/game/runaround.py index acccd945..34d6139d 100644 --- a/assets/src/ba_data/python/bastd/game/runaround.py +++ b/assets/src/ba_data/python/bastd/game/runaround.py @@ -68,7 +68,7 @@ class Point(Enum): @dataclass class Spawn: - """Defines a bot spawn.""" + """Defines a bot spawn event.""" type: Type[SpazBot] path: int = 0 point: Optional[Point] = None diff --git a/assets/src/ba_data/python/bastd/game/targetpractice.py b/assets/src/ba_data/python/bastd/game/targetpractice.py index c646a6af..2945551d 100644 --- a/assets/src/ba_data/python/bastd/game/targetpractice.py +++ b/assets/src/ba_data/python/bastd/game/targetpractice.py @@ -202,7 +202,7 @@ class TargetPracticeGame(ba.TeamGameActivity[Player, Team]): self._scoreboard.set_team_value(team, team.score) def end_game(self) -> None: - results = ba.TeamGameResults() + results = ba.GameResults() for team in self.teams: results.set_team_score(team, team.score) self.end(results) diff --git a/assets/src/ba_data/python/bastd/mainmenu.py b/assets/src/ba_data/python/bastd/mainmenu.py index e0e39deb..ae792fbb 100644 --- a/assets/src/ba_data/python/bastd/mainmenu.py +++ b/assets/src/ba_data/python/bastd/mainmenu.py @@ -920,14 +920,14 @@ class MainMenuSession(ba.Session): super().__init__([self._activity_deps]) self._locked = False - self.setactivity(ba.new_activity(MainMenuActivity)) + self.setactivity(ba.newactivity(MainMenuActivity)) def on_activity_end(self, activity: ba.Activity, results: Any) -> None: if self._locked: _ba.unlock_all_input() # Any ending activity leads us into the main menu one. - self.setactivity(ba.new_activity(MainMenuActivity)) + self.setactivity(ba.newactivity(MainMenuActivity)) def on_player_request(self, player: ba.SessionPlayer) -> bool: # Reject all player requests. diff --git a/assets/src/ba_data/python/bastd/tutorial.py b/assets/src/ba_data/python/bastd/tutorial.py index 95a65111..3aa0ca0d 100644 --- a/assets/src/ba_data/python/bastd/tutorial.py +++ b/assets/src/ba_data/python/bastd/tutorial.py @@ -2413,7 +2413,8 @@ class TutorialActivity(ba.Activity[Player, Team]): # We just wanna know if this player presses anything. player.assigninput( - ('jumpPress', 'punchPress', 'bombPress', 'pickUpPress'), + (ba.InputType.JUMP_PRESS, ba.InputType.PUNCH_PRESS, + ba.InputType.BOMB_PRESS, ba.InputType.PICK_UP_PRESS), ba.Call(self._player_pressed_button, player)) def on_player_leave(self, player: Player) -> None: diff --git a/docs/ba_module.md b/docs/ba_module.md index 1ecb47b6..c3fadfde 100644 --- a/docs/ba_module.md +++ b/docs/ba_module.md @@ -1,5 +1,5 @@ -

last updated on 2020-06-02 for Ballistica version 1.5.0 build 20042

+

last updated on 2020-06-02 for Ballistica version 1.5.0 build 20043

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 let me know. Happy modding!


@@ -20,6 +20,7 @@
  • ba.NodeActor
  • ba.Chooser
  • +
  • ba.GameResults
  • ba.InputDevice
  • ba.Level
  • ba.Lobby
  • @@ -50,7 +51,6 @@ -
  • ba.TeamGameResults
  • Gameplay Functions