Source code for bascenev1._dualteamsession
# Released under the MIT License. See LICENSE for details.
#
"""Functionality related to teams sessions."""
from __future__ import annotations
from typing import TYPE_CHECKING, override
import babase
import _bascenev1
from bascenev1._multiteamsession import MultiTeamSession
if TYPE_CHECKING:
import bascenev1
[docs]
class DualTeamSession(MultiTeamSession):
"""bascenev1.Session type for teams mode games."""
# 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'
def __init__(self) -> None:
babase.increment_analytics_count('Teams session start')
super().__init__()
@override
def _switch_to_score_screen(self, results: bascenev1.GameResults) -> None:
# pylint: disable=cyclic-import
from bascenev1lib.activity.multiteamvictory import (
TeamSeriesVictoryScoreScreenActivity,
)
from bascenev1lib.activity.dualteamscore import (
TeamVictoryScoreScreenActivity,
)
from bascenev1lib.activity.drawscore import DrawScoreScreenActivity
winnergroups = results.winnergroups
# If everyone has the same score, call it a draw.
if len(winnergroups) < 2:
self.setactivity(_bascenev1.newactivity(DrawScoreScreenActivity))
else:
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(
_bascenev1.newactivity(
TeamSeriesVictoryScoreScreenActivity,
{'winner': winner},
)
)
else:
self.setactivity(
_bascenev1.newactivity(
TeamVictoryScoreScreenActivity, {'winner': winner}
)
)
# Docs-generation hack; import some stuff that we likely only forward-declared
# in our actual source code so that docs tools can find it.
from typing import (Coroutine, Any, Literal, Callable,
Generator, Awaitable, Sequence, Self)
import asyncio
from concurrent.futures import Future
from pathlib import Path
from enum import Enum