mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-01 20:33:46 +08:00
Cleaned up Session args
This commit is contained in:
parent
1ef716a2f2
commit
acb38415eb
@ -30,8 +30,8 @@ if TYPE_CHECKING:
|
|||||||
from typing import Any, List, Dict, Optional, Callable, Sequence
|
from typing import Any, List, Dict, Optional, Callable, Sequence
|
||||||
import ba
|
import ba
|
||||||
|
|
||||||
TEAM_COLORS = ((0.2, 0.4, 1.6), )
|
TEAM_COLORS = [(0.2, 0.4, 1.6)]
|
||||||
TEAM_NAMES = ('Good Guys', )
|
TEAM_NAMES = ['Good Guys']
|
||||||
|
|
||||||
|
|
||||||
class CoopSession(Session):
|
class CoopSession(Session):
|
||||||
@ -43,6 +43,9 @@ class CoopSession(Session):
|
|||||||
the computer and include functionality such as
|
the computer and include functionality such as
|
||||||
high score lists.
|
high score lists.
|
||||||
"""
|
"""
|
||||||
|
use_teams = True
|
||||||
|
use_team_colors = False
|
||||||
|
allow_mid_activity_joins = False
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
"""Instantiate a co-op mode session."""
|
"""Instantiate a co-op mode session."""
|
||||||
@ -51,7 +54,6 @@ class CoopSession(Session):
|
|||||||
from bastd.activity.coopjoin import CoopJoinActivity
|
from bastd.activity.coopjoin import CoopJoinActivity
|
||||||
|
|
||||||
_ba.increment_analytics_count('Co-op session start')
|
_ba.increment_analytics_count('Co-op session start')
|
||||||
|
|
||||||
app = _ba.app
|
app = _ba.app
|
||||||
|
|
||||||
# If they passed in explicit min/max, honor that.
|
# If they passed in explicit min/max, honor that.
|
||||||
@ -63,14 +65,7 @@ class CoopSession(Session):
|
|||||||
if 'max_players' in app.coop_session_args:
|
if 'max_players' in app.coop_session_args:
|
||||||
max_players = app.coop_session_args['max_players']
|
max_players = app.coop_session_args['max_players']
|
||||||
else:
|
else:
|
||||||
try:
|
max_players = app.config.get('Coop Game Max Players', 4)
|
||||||
max_players = app.config['Coop Game Max Players']
|
|
||||||
except Exception:
|
|
||||||
# Old pref value.
|
|
||||||
try:
|
|
||||||
max_players = app.config['Challenge Game Max Players']
|
|
||||||
except Exception:
|
|
||||||
max_players = 4
|
|
||||||
|
|
||||||
# print('FIXME: COOP SESSION WOULD CALC DEPS.')
|
# print('FIXME: COOP SESSION WOULD CALC DEPS.')
|
||||||
depsets: Sequence[ba.DependencySet] = []
|
depsets: Sequence[ba.DependencySet] = []
|
||||||
@ -78,10 +73,8 @@ class CoopSession(Session):
|
|||||||
super().__init__(depsets,
|
super().__init__(depsets,
|
||||||
team_names=TEAM_NAMES,
|
team_names=TEAM_NAMES,
|
||||||
team_colors=TEAM_COLORS,
|
team_colors=TEAM_COLORS,
|
||||||
use_team_colors=False,
|
|
||||||
min_players=min_players,
|
min_players=min_players,
|
||||||
max_players=max_players,
|
max_players=max_players)
|
||||||
allow_mid_activity_joins=False)
|
|
||||||
|
|
||||||
# Tournament-ID if we correspond to a co-op tournament (otherwise None)
|
# Tournament-ID if we correspond to a co-op tournament (otherwise None)
|
||||||
self.tournament_id = (app.coop_session_args['tournament_id']
|
self.tournament_id = (app.coop_session_args['tournament_id']
|
||||||
|
|||||||
@ -24,18 +24,19 @@ from __future__ import annotations
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
import _ba
|
import _ba
|
||||||
from ba import _multiteamsession
|
from ba._multiteamsession import MultiTeamSession
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
import ba
|
import ba
|
||||||
|
|
||||||
|
|
||||||
class DualTeamSession(_multiteamsession.MultiTeamSession):
|
class DualTeamSession(MultiTeamSession):
|
||||||
"""ba.Session type for teams mode games.
|
"""ba.Session type for teams mode games.
|
||||||
|
|
||||||
Category: Gameplay Classes
|
Category: Gameplay Classes
|
||||||
"""
|
"""
|
||||||
_use_teams = True
|
use_teams = True
|
||||||
|
use_team_colors = True
|
||||||
_playlist_selection_var = 'Team Tournament Playlist Selection'
|
_playlist_selection_var = 'Team Tournament Playlist Selection'
|
||||||
_playlist_randomize_var = 'Team Tournament Playlist Randomize'
|
_playlist_randomize_var = 'Team Tournament Playlist Randomize'
|
||||||
_playlists_var = 'Team Tournament Playlists'
|
_playlists_var = 'Team Tournament Playlists'
|
||||||
|
|||||||
@ -37,7 +37,8 @@ class FreeForAllSession(MultiTeamSession):
|
|||||||
|
|
||||||
Category: Gameplay Classes
|
Category: Gameplay Classes
|
||||||
"""
|
"""
|
||||||
_use_teams = False
|
use_teams = False
|
||||||
|
use_team_colors = True
|
||||||
_playlist_selection_var = 'Free-for-All Playlist Selection'
|
_playlist_selection_var = 'Free-for-All Playlist Selection'
|
||||||
_playlist_randomize_var = 'Free-for-All Playlist Randomize'
|
_playlist_randomize_var = 'Free-for-All Playlist Randomize'
|
||||||
_playlists_var = 'Free-for-All Playlists'
|
_playlists_var = 'Free-for-All Playlists'
|
||||||
|
|||||||
@ -889,18 +889,16 @@ class Lobby:
|
|||||||
player.reset()
|
player.reset()
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
from ba import _team as bs_team
|
from ba._team import SessionTeam
|
||||||
from ba import _coopsession
|
from ba._coopsession import CoopSession
|
||||||
session = _ba.getsession()
|
session = _ba.getsession()
|
||||||
teams = session.teams if session.use_teams else None
|
|
||||||
self._use_team_colors = session.use_team_colors
|
self._use_team_colors = session.use_team_colors
|
||||||
if teams is not None:
|
if session.use_teams:
|
||||||
self._teams = [weakref.ref(team) for team in teams]
|
self._teams = [weakref.ref(team) for team in session.teams]
|
||||||
else:
|
else:
|
||||||
self._dummy_teams = bs_team.SessionTeam()
|
self._dummy_teams = SessionTeam()
|
||||||
self._teams = [weakref.ref(self._dummy_teams)]
|
self._teams = [weakref.ref(self._dummy_teams)]
|
||||||
v_offset = (-150
|
v_offset = (-150 if isinstance(session, CoopSession) else -50)
|
||||||
if isinstance(session, _coopsession.CoopSession) else -50)
|
|
||||||
self.choosers: List[Chooser] = []
|
self.choosers: List[Chooser] = []
|
||||||
self.base_v_offset = v_offset
|
self.base_v_offset = v_offset
|
||||||
self.update_positions()
|
self.update_positions()
|
||||||
|
|||||||
@ -59,7 +59,7 @@ class MultiTeamSession(Session):
|
|||||||
app = _ba.app
|
app = _ba.app
|
||||||
cfg = app.config
|
cfg = app.config
|
||||||
|
|
||||||
if self._use_teams:
|
if self.use_teams:
|
||||||
team_names = cfg.get('Custom Team Names', DEFAULT_TEAM_NAMES)
|
team_names = cfg.get('Custom Team Names', DEFAULT_TEAM_NAMES)
|
||||||
team_colors = cfg.get('Custom Team Colors', DEFAULT_TEAM_COLORS)
|
team_colors = cfg.get('Custom Team Colors', DEFAULT_TEAM_COLORS)
|
||||||
else:
|
else:
|
||||||
@ -72,7 +72,6 @@ class MultiTeamSession(Session):
|
|||||||
super().__init__(depsets,
|
super().__init__(depsets,
|
||||||
team_names=team_names,
|
team_names=team_names,
|
||||||
team_colors=team_colors,
|
team_colors=team_colors,
|
||||||
use_team_colors=self._use_teams,
|
|
||||||
min_players=1,
|
min_players=1,
|
||||||
max_players=self.get_max_players())
|
max_players=self.get_max_players())
|
||||||
|
|
||||||
@ -107,7 +106,7 @@ class MultiTeamSession(Session):
|
|||||||
# got it and we don't want that to affect our config.
|
# got it and we don't want that to affect our config.
|
||||||
playlist = copy.deepcopy(playlists[self._playlist_name])
|
playlist = copy.deepcopy(playlists[self._playlist_name])
|
||||||
else:
|
else:
|
||||||
if self._use_teams:
|
if self.use_teams:
|
||||||
playlist = _playlist.get_default_teams_playlist()
|
playlist = _playlist.get_default_teams_playlist()
|
||||||
else:
|
else:
|
||||||
playlist = _playlist.get_default_free_for_all_playlist()
|
playlist = _playlist.get_default_free_for_all_playlist()
|
||||||
@ -161,7 +160,7 @@ class MultiTeamSession(Session):
|
|||||||
|
|
||||||
def get_max_players(self) -> int:
|
def get_max_players(self) -> int:
|
||||||
"""Return max number of ba.Players allowed to join the game at once."""
|
"""Return max number of ba.Players allowed to join the game at once."""
|
||||||
if self._use_teams:
|
if self.use_teams:
|
||||||
return _ba.app.config.get('Team Game Max Players', 8)
|
return _ba.app.config.get('Team Game Max Players', 8)
|
||||||
return _ba.app.config.get('Free-for-All Max Players', 8)
|
return _ba.app.config.get('Free-for-All Max Players', 8)
|
||||||
|
|
||||||
|
|||||||
@ -75,6 +75,9 @@ class Session:
|
|||||||
there is no associated Campaign.
|
there is no associated Campaign.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
use_teams = False
|
||||||
|
use_team_colors = True
|
||||||
|
allow_mid_activity_joins = True
|
||||||
|
|
||||||
# Note: even though these are instance vars, we annotate them at the
|
# Note: even though these are instance vars, we annotate them at the
|
||||||
# class level so that docs generation can access their types.
|
# class level so that docs generation can access their types.
|
||||||
@ -89,10 +92,8 @@ class Session:
|
|||||||
depsets: Sequence[ba.DependencySet],
|
depsets: Sequence[ba.DependencySet],
|
||||||
team_names: Sequence[str] = None,
|
team_names: Sequence[str] = None,
|
||||||
team_colors: Sequence[Sequence[float]] = None,
|
team_colors: Sequence[Sequence[float]] = None,
|
||||||
use_team_colors: bool = True,
|
|
||||||
min_players: int = 1,
|
min_players: int = 1,
|
||||||
max_players: int = 8,
|
max_players: int = 8):
|
||||||
allow_mid_activity_joins: bool = True):
|
|
||||||
"""Instantiate a session.
|
"""Instantiate a session.
|
||||||
|
|
||||||
depsets should be a sequence of successfully resolved ba.DependencySet
|
depsets should be a sequence of successfully resolved ba.DependencySet
|
||||||
@ -154,16 +155,12 @@ class Session:
|
|||||||
self.campaign = None
|
self.campaign = None
|
||||||
self.campaign_state: Dict[str, str] = {}
|
self.campaign_state: Dict[str, str] = {}
|
||||||
|
|
||||||
self._use_teams = (team_names is not None)
|
|
||||||
self._use_team_colors = use_team_colors
|
|
||||||
self._in_set_activity = False
|
|
||||||
self._allow_mid_activity_joins = allow_mid_activity_joins
|
|
||||||
|
|
||||||
self.teams = []
|
self.teams = []
|
||||||
self.players = []
|
self.players = []
|
||||||
|
self._in_set_activity = False
|
||||||
self._next_team_id = 0
|
self._next_team_id = 0
|
||||||
self._activity_retained: Optional[ba.Activity] = None
|
self._activity_retained: Optional[ba.Activity] = None
|
||||||
self.launch_end_session_activity_time: Optional[float] = None
|
self._launch_end_session_activity_time: Optional[float] = None
|
||||||
self._activity_end_timer: Optional[ba.Timer] = None
|
self._activity_end_timer: Optional[ba.Timer] = None
|
||||||
self._activity_weak = empty_weakref(Activity)
|
self._activity_weak = empty_weakref(Activity)
|
||||||
if self._activity_weak() is not None:
|
if self._activity_weak() is not None:
|
||||||
@ -175,8 +172,8 @@ class Session:
|
|||||||
self.min_players = min_players
|
self.min_players = min_players
|
||||||
self.max_players = max_players
|
self.max_players = max_players
|
||||||
|
|
||||||
# Create Teams.
|
# Create static teams if we're using them.
|
||||||
if self._use_teams:
|
if self.use_teams:
|
||||||
assert team_names is not None
|
assert team_names is not None
|
||||||
assert team_colors is not None
|
assert team_colors is not None
|
||||||
for i, color in enumerate(team_colors):
|
for i, color in enumerate(team_colors):
|
||||||
@ -199,16 +196,6 @@ class Session:
|
|||||||
# Instantiate our session globals node which will apply its settings.
|
# Instantiate our session globals node which will apply its settings.
|
||||||
sharedobj('globals')
|
sharedobj('globals')
|
||||||
|
|
||||||
@property
|
|
||||||
def use_teams(self) -> bool:
|
|
||||||
"""(internal)"""
|
|
||||||
return self._use_teams
|
|
||||||
|
|
||||||
@property
|
|
||||||
def use_team_colors(self) -> bool:
|
|
||||||
"""(internal)"""
|
|
||||||
return self._use_team_colors
|
|
||||||
|
|
||||||
def on_player_request(self, player: ba.SessionPlayer) -> bool:
|
def on_player_request(self, player: ba.SessionPlayer) -> bool:
|
||||||
"""Called when a new ba.Player wants to join the Session.
|
"""Called when a new ba.Player wants to join the Session.
|
||||||
|
|
||||||
@ -284,7 +271,7 @@ class Session:
|
|||||||
print('Player not found in Activity in on_player_leave.')
|
print('Player not found in Activity in on_player_leave.')
|
||||||
|
|
||||||
# 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:
|
||||||
|
|
||||||
# They should have been the only one on their team.
|
# They should have been the only one on their team.
|
||||||
assert not sessionteam.players
|
assert not sessionteam.players
|
||||||
@ -335,14 +322,14 @@ class Session:
|
|||||||
curtime = _ba.time(TimeType.REAL)
|
curtime = _ba.time(TimeType.REAL)
|
||||||
if self._ending:
|
if self._ending:
|
||||||
# Ignore repeats unless its been a while.
|
# Ignore repeats unless its been a while.
|
||||||
assert self.launch_end_session_activity_time is not None
|
assert self._launch_end_session_activity_time is not None
|
||||||
since_last = (curtime - self.launch_end_session_activity_time)
|
since_last = (curtime - self._launch_end_session_activity_time)
|
||||||
if since_last < 30.0:
|
if since_last < 30.0:
|
||||||
return
|
return
|
||||||
print_error(
|
print_error(
|
||||||
'launch_end_session_activity called twice (since_last=' +
|
'launch_end_session_activity called twice (since_last=' +
|
||||||
str(since_last) + ')')
|
str(since_last) + ')')
|
||||||
self.launch_end_session_activity_time = curtime
|
self._launch_end_session_activity_time = curtime
|
||||||
self.set_activity(_ba.new_activity(EndSessionActivity))
|
self.set_activity(_ba.new_activity(EndSessionActivity))
|
||||||
self.wants_to_end = False
|
self.wants_to_end = False
|
||||||
self._ending = True # Prevent further actions.
|
self._ending = True # Prevent further actions.
|
||||||
@ -603,7 +590,7 @@ class Session:
|
|||||||
# If we're not allowing mid-game joins, don't pass; just announce
|
# If we're not allowing mid-game joins, don't pass; just announce
|
||||||
# the arrival and say they'll partake next round.
|
# the arrival and say they'll partake next round.
|
||||||
if pass_to_activity:
|
if pass_to_activity:
|
||||||
if not self._allow_mid_activity_joins:
|
if not self.allow_mid_activity_joins:
|
||||||
pass_to_activity = False
|
pass_to_activity = False
|
||||||
with _ba.Context(self):
|
with _ba.Context(self):
|
||||||
_ba.screenmessage(
|
_ba.screenmessage(
|
||||||
@ -615,7 +602,7 @@ class Session:
|
|||||||
|
|
||||||
# If we're a non-team session, each player gets their own team.
|
# If we're a non-team session, each player gets their own team.
|
||||||
# (keeps mini-game coding simpler if we can always deal with teams).
|
# (keeps mini-game coding simpler if we can always deal with teams).
|
||||||
if self._use_teams:
|
if self.use_teams:
|
||||||
sessionteam = chooser.get_team()
|
sessionteam = chooser.get_team()
|
||||||
else:
|
else:
|
||||||
our_team_id = self._next_team_id
|
our_team_id = self._next_team_id
|
||||||
|
|||||||
@ -34,8 +34,19 @@ if TYPE_CHECKING:
|
|||||||
from typing import Any, Type, List, Dict, Tuple, Union, Sequence
|
from typing import Any, Type, List, Dict, Tuple, Union, Sequence
|
||||||
|
|
||||||
|
|
||||||
|
class Player(ba.Player['Team']):
|
||||||
|
"""Our player type for this game."""
|
||||||
|
|
||||||
|
|
||||||
|
class Team(ba.Team[Player]):
|
||||||
|
"""Our team type for this game."""
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
# ba_meta export game
|
# ba_meta export game
|
||||||
class DeathMatchGame(ba.TeamGameActivity[ba.Player, ba.Team]):
|
class DeathMatchGame(ba.TeamGameActivity[Player, Team]):
|
||||||
"""A game type based on acquiring kills."""
|
"""A game type based on acquiring kills."""
|
||||||
|
|
||||||
name = 'Death Match'
|
name = 'Death Match'
|
||||||
@ -92,12 +103,15 @@ class DeathMatchGame(ba.TeamGameActivity[ba.Player, ba.Team]):
|
|||||||
def __init__(self, settings: Dict[str, Any]):
|
def __init__(self, settings: Dict[str, Any]):
|
||||||
from bastd.actor.scoreboard import Scoreboard
|
from bastd.actor.scoreboard import Scoreboard
|
||||||
super().__init__(settings)
|
super().__init__(settings)
|
||||||
if self.settings_raw['Epic Mode']:
|
|
||||||
self.slow_motion = True
|
|
||||||
|
|
||||||
self._scoreboard = Scoreboard()
|
self._scoreboard = Scoreboard()
|
||||||
self._score_to_win = None
|
self._score_to_win = None
|
||||||
self._dingsound = ba.getsound('dingSmall')
|
self._dingsound = ba.getsound('dingSmall')
|
||||||
|
self._epic_mode = bool(settings['Epic Mode'])
|
||||||
|
|
||||||
|
# Base class overrides.
|
||||||
|
self.slow_motion = self._epic_mode
|
||||||
|
self.default_music = (ba.MusicType.EPIC if self._epic_mode else
|
||||||
|
ba.MusicType.TO_THE_DEATH)
|
||||||
|
|
||||||
def get_instance_description(self) -> Union[str, Sequence]:
|
def get_instance_description(self) -> Union[str, Sequence]:
|
||||||
return 'Crush ${ARG1} of your enemies.', self._score_to_win
|
return 'Crush ${ARG1} of your enemies.', self._score_to_win
|
||||||
@ -105,13 +119,7 @@ class DeathMatchGame(ba.TeamGameActivity[ba.Player, ba.Team]):
|
|||||||
def get_instance_description_short(self) -> Union[str, Sequence]:
|
def get_instance_description_short(self) -> Union[str, Sequence]:
|
||||||
return 'kill ${ARG1} enemies', self._score_to_win
|
return 'kill ${ARG1} enemies', self._score_to_win
|
||||||
|
|
||||||
def on_transition_in(self) -> None:
|
def on_team_join(self, team: Team) -> None:
|
||||||
self.default_music = (ba.MusicType.EPIC
|
|
||||||
if self.settings_raw['Epic Mode'] else
|
|
||||||
ba.MusicType.TO_THE_DEATH)
|
|
||||||
super().on_transition_in()
|
|
||||||
|
|
||||||
def on_team_join(self, team: ba.Team) -> None:
|
|
||||||
team.gamedata['score'] = 0
|
team.gamedata['score'] = 0
|
||||||
if self.has_begun():
|
if self.has_begun():
|
||||||
self._update_scoreboard()
|
self._update_scoreboard()
|
||||||
|
|||||||
@ -242,7 +242,6 @@ class MeteorShowerGame(ba.TeamGameActivity[Player, Team]):
|
|||||||
# (these per-player scores are only meaningful in team-games)
|
# (these per-player scores are only meaningful in team-games)
|
||||||
for team in self.teams:
|
for team in self.teams:
|
||||||
for player in team.players:
|
for player in team.players:
|
||||||
|
|
||||||
survived = False
|
survived = False
|
||||||
|
|
||||||
# Throw an extra fudge factor in so teams that
|
# Throw an extra fudge factor in so teams that
|
||||||
|
|||||||
@ -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-19 for Ballistica version 1.5.0 build 20023</em></h4>
|
<h4><em>last updated on 2020-05-20 for Ballistica version 1.5.0 build 20023</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>
|
||||||
@ -4145,7 +4145,7 @@ list in <a href="#class_ba_Activity">ba.Activity</a>; not this.</p>
|
|||||||
<h5><a href="#method_ba_Session____init__"><constructor></a>, <a href="#method_ba_Session__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_Session__end">end()</a>, <a href="#method_ba_Session__end_activity">end_activity()</a>, <a href="#method_ba_Session__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_Session__getactivity">getactivity()</a>, <a href="#method_ba_Session__handlemessage">handlemessage()</a>, <a href="#method_ba_Session__on_activity_end">on_activity_end()</a>, <a href="#method_ba_Session__on_player_leave">on_player_leave()</a>, <a href="#method_ba_Session__on_player_request">on_player_request()</a>, <a href="#method_ba_Session__on_team_join">on_team_join()</a>, <a href="#method_ba_Session__on_team_leave">on_team_leave()</a>, <a href="#method_ba_Session__set_activity">set_activity()</a></h5>
|
<h5><a href="#method_ba_Session____init__"><constructor></a>, <a href="#method_ba_Session__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_Session__end">end()</a>, <a href="#method_ba_Session__end_activity">end_activity()</a>, <a href="#method_ba_Session__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_Session__getactivity">getactivity()</a>, <a href="#method_ba_Session__handlemessage">handlemessage()</a>, <a href="#method_ba_Session__on_activity_end">on_activity_end()</a>, <a href="#method_ba_Session__on_player_leave">on_player_leave()</a>, <a href="#method_ba_Session__on_player_request">on_player_request()</a>, <a href="#method_ba_Session__on_team_join">on_team_join()</a>, <a href="#method_ba_Session__on_team_leave">on_team_leave()</a>, <a href="#method_ba_Session__set_activity">set_activity()</a></h5>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><h4><a name="method_ba_Session____init__"><constructor></a></dt></h4><dd>
|
<dt><h4><a name="method_ba_Session____init__"><constructor></a></dt></h4><dd>
|
||||||
<p><span>ba.Session(depsets: Sequence[<a href="#class_ba_DependencySet">ba.DependencySet</a>], team_names: Sequence[str] = None, team_colors: Sequence[Sequence[float]] = None, use_team_colors: bool = True, min_players: int = 1, max_players: int = 8, allow_mid_activity_joins: bool = True)</span></p>
|
<p><span>ba.Session(depsets: Sequence[<a href="#class_ba_DependencySet">ba.DependencySet</a>], team_names: Sequence[str] = None, team_colors: Sequence[Sequence[float]] = None, min_players: int = 1, max_players: int = 8)</span></p>
|
||||||
|
|
||||||
<p>Instantiate a session.</p>
|
<p>Instantiate a session.</p>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user