Source code for bascenev1lib.activity.multiteamjoin

# Released under the MIT License. See LICENSE for details.
#
"""Functionality related to the join screen for multi-team sessions."""

from __future__ import annotations

from typing import override

import bascenev1 as bs

from bascenev1lib.actor.text import Text


[docs] class MultiTeamJoinActivity(bs.JoinActivity): """Join screen for teams sessions.""" def __init__(self, settings: dict): super().__init__(settings) self._next_up_text: Text | None = None
[docs] @override def on_transition_in(self) -> None: from bascenev1lib.actor.controlsguide import ControlsGuide super().on_transition_in() ControlsGuide(delay=1.0).autoretain() session = self.session assert isinstance(session, bs.MultiTeamSession) # Show info about the next up game. self._next_up_text = Text( bs.Lstr( value='${1} ${2}', subs=[ ('${1}', bs.Lstr(resource='upFirstText')), ('${2}', session.get_next_game_description()), ], ), h_attach=Text.HAttach.CENTER, scale=0.7, v_attach=Text.VAttach.TOP, h_align=Text.HAlign.CENTER, position=(0, -70), flash=False, color=(0.5, 0.5, 0.5, 1.0), transition=Text.Transition.FADE_IN, transition_delay=5.0, ) # In teams mode, show our two team names. # FIXME: Lobby should handle this. if isinstance(bs.getsession(), bs.DualTeamSession): team_names = [team.name for team in bs.getsession().sessionteams] team_colors = [ tuple(team.color) + (0.5,) for team in bs.getsession().sessionteams ] if len(team_names) == 2: for i in range(2): Text( team_names[i], scale=0.7, h_attach=Text.HAttach.CENTER, v_attach=Text.VAttach.TOP, h_align=Text.HAlign.CENTER, position=(-200 + 350 * i, -100), color=team_colors[i], transition=Text.Transition.FADE_IN, ).autoretain() Text( bs.Lstr( resource='mustInviteFriendsText', subs=[ ( '${GATHER}', bs.Lstr(resource='gatherWindow.titleText'), ) ], ), h_attach=Text.HAttach.CENTER, scale=0.8, host_only=True, v_attach=Text.VAttach.CENTER, h_align=Text.HAlign.CENTER, position=(0, 0), flash=False, color=(0, 1, 0, 1.0), transition=Text.Transition.FADE_IN, transition_delay=2.0, transition_out_delay=7.0, ).autoretain()
# 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