mirror of
https://github.com/hypervortex/VH-Bombsquad-Modded-Server-Files
synced 2026-08-15 13:04:50 +00:00
138 lines
4.3 KiB
Python
138 lines
4.3 KiB
Python
# Released under the MIT License. See LICENSE for details.
|
|
#
|
|
"""Defines the about tab in the gather UI."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
import ba
|
|
import ba.internal
|
|
from bastd.ui.gather import GatherTab
|
|
|
|
if TYPE_CHECKING:
|
|
from bastd.ui.gather import GatherWindow
|
|
|
|
|
|
class AboutGatherTab(GatherTab):
|
|
"""The about tab in the gather UI"""
|
|
|
|
def __init__(self, window: GatherWindow) -> None:
|
|
super().__init__(window)
|
|
self._container: ba.Widget | None = None
|
|
|
|
def on_activate(
|
|
self,
|
|
parent_widget: ba.Widget,
|
|
tab_button: ba.Widget,
|
|
region_width: float,
|
|
region_height: float,
|
|
region_left: float,
|
|
region_bottom: float,
|
|
) -> ba.Widget:
|
|
party_button_label = (
|
|
'X'
|
|
if ba.app.iircade_mode
|
|
else ba.charstr(ba.SpecialChar.TOP_BUTTON)
|
|
)
|
|
message = ba.Lstr(
|
|
resource='gatherWindow.aboutDescriptionText',
|
|
subs=[
|
|
('${PARTY}', ba.charstr(ba.SpecialChar.PARTY_ICON)),
|
|
('${BUTTON}', party_button_label),
|
|
],
|
|
)
|
|
|
|
# Let's not talk about sharing in vr-mode; its tricky to fit more
|
|
# than one head in a VR-headset ;-)
|
|
if not ba.app.vr_mode:
|
|
message = ba.Lstr(
|
|
value='${A}\n\n${B}',
|
|
subs=[
|
|
('${A}', message),
|
|
(
|
|
'${B}',
|
|
ba.Lstr(
|
|
resource='gatherWindow.'
|
|
'aboutDescriptionLocalMultiplayerExtraText'
|
|
),
|
|
),
|
|
],
|
|
)
|
|
string_height = 400
|
|
include_invite = True
|
|
msc_scale = 1.1
|
|
c_height_2 = min(region_height, string_height * msc_scale + 100)
|
|
try_tickets = ba.internal.get_v1_account_misc_read_val(
|
|
'friendTryTickets', None
|
|
)
|
|
if try_tickets is None:
|
|
include_invite = False
|
|
self._container = ba.containerwidget(
|
|
parent=parent_widget,
|
|
position=(
|
|
region_left,
|
|
region_bottom + (region_height - c_height_2) * 0.5,
|
|
),
|
|
size=(region_width, c_height_2),
|
|
background=False,
|
|
selectable=include_invite,
|
|
)
|
|
ba.widget(edit=self._container, up_widget=tab_button)
|
|
|
|
ba.textwidget(
|
|
parent=self._container,
|
|
position=(
|
|
region_width * 0.5,
|
|
c_height_2 * (0.58 if include_invite else 0.5),
|
|
),
|
|
color=(0.6, 1.0, 0.6),
|
|
scale=msc_scale,
|
|
size=(0, 0),
|
|
maxwidth=region_width * 0.9,
|
|
max_height=c_height_2 * (0.7 if include_invite else 0.9),
|
|
h_align='center',
|
|
v_align='center',
|
|
text=message,
|
|
)
|
|
|
|
if include_invite:
|
|
ba.textwidget(
|
|
parent=self._container,
|
|
position=(region_width * 0.57, 35),
|
|
color=(0, 1, 0),
|
|
scale=0.6,
|
|
size=(0, 0),
|
|
maxwidth=region_width * 0.5,
|
|
h_align='right',
|
|
v_align='center',
|
|
flatness=1.0,
|
|
text=ba.Lstr(
|
|
resource='gatherWindow.inviteAFriendText',
|
|
subs=[('${COUNT}', str(try_tickets))],
|
|
),
|
|
)
|
|
ba.buttonwidget(
|
|
parent=self._container,
|
|
position=(region_width * 0.59, 10),
|
|
size=(230, 50),
|
|
color=(0.54, 0.42, 0.56),
|
|
textcolor=(0, 1, 0),
|
|
label=ba.Lstr(
|
|
resource='gatherWindow.inviteFriendsText',
|
|
fallback_resource='gatherWindow.getFriendInviteCodeText',
|
|
),
|
|
autoselect=True,
|
|
on_activate_call=ba.WeakCall(self._invite_to_try_press),
|
|
up_widget=tab_button,
|
|
)
|
|
return self._container
|
|
|
|
def _invite_to_try_press(self) -> None:
|
|
from bastd.ui.account import show_sign_in_prompt
|
|
from bastd.ui.appinvite import handle_app_invites_press
|
|
|
|
if ba.internal.get_v1_account_state() != 'signed_in':
|
|
show_sign_in_prompt()
|
|
return
|
|
handle_app_invites_press()
|