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()