diff --git a/.efrocachemap b/.efrocachemap index 375613f0..b656e348 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -421,21 +421,21 @@ "build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26", "build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8", "build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55", - "build/assets/ba_data/data/langdata.json": "4a35cc51d1021fa7e525123bcf99043c", + "build/assets/ba_data/data/langdata.json": "f200cdf431b9494d8b96cdd47e950dd1", "build/assets/ba_data/data/languages/arabic.json": "00ba700de6c672a56658a6bd1ad27523", - "build/assets/ba_data/data/languages/belarussian.json": "7fe38341815ca6ff4d95224196e7a67e", + "build/assets/ba_data/data/languages/belarussian.json": "40883823367f04c5a2403a96525bfcc3", "build/assets/ba_data/data/languages/chinese.json": "5761468d25f2bd4e79921826cebd572b", "build/assets/ba_data/data/languages/chinesetraditional.json": "f858da49be0a5374157c627857751078", "build/assets/ba_data/data/languages/croatian.json": "766532c67af5bd0144c2d63cab0516fa", "build/assets/ba_data/data/languages/czech.json": "cd21ad8c6b8e9ed700284cf1e1aecbf8", "build/assets/ba_data/data/languages/danish.json": "3fd69080783d5c9dcc0af737f02b6f1e", "build/assets/ba_data/data/languages/dutch.json": "22b44a33bf81142ba2befad14eb5746e", - "build/assets/ba_data/data/languages/english.json": "bd43b77b1ccca059573acbde148b4767", + "build/assets/ba_data/data/languages/english.json": "6a3fab4fb8b2879e00ed9877709bf504", "build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880", - "build/assets/ba_data/data/languages/filipino.json": "0f5ad7c06db70027b116dfd9324bdf67", + "build/assets/ba_data/data/languages/filipino.json": "6f4051ce78861a4666f4978d6f9a0ed2", "build/assets/ba_data/data/languages/french.json": "49ff6d211537b8003b8241438dca661d", "build/assets/ba_data/data/languages/german.json": "450fa41ae264f29a5d1af22143d0d0ad", - "build/assets/ba_data/data/languages/gibberish.json": "9aae526303a22372fe9b4cf1781520ef", + "build/assets/ba_data/data/languages/gibberish.json": "25fcb5130fae56985bee175aa19f86a2", "build/assets/ba_data/data/languages/greek.json": "287c0ec437b38772284ef9d3e4fb2fc3", "build/assets/ba_data/data/languages/hindi.json": "8848f6b0caec0fcf9d85bc6e683809ec", "build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e", diff --git a/CHANGELOG.md b/CHANGELOG.md index 34c408fd..96ff9ebd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ### 1.7.31 (build 21707, api 8, 2023-12-13) -- added `bascenev1.get_connection_to_host_info_2()` which is an improved +- Added `bascenev1.get_connection_to_host_info_2()` which is an improved type-safe version of `bascenev1.get_connection_to_host_info()`. +- There is now a link to the official Discord server in the About section + (thanks EraOSBeta!). ### 1.7.30 (build 21697, api 8, 2023-12-08) - Continued work on the big 1.7.28 update. diff --git a/src/assets/ba_data/python/bauiv1lib/discord.py b/src/assets/ba_data/python/bauiv1lib/discord.py index 6021d273..2e2eb520 100644 --- a/src/assets/ba_data/python/bauiv1lib/discord.py +++ b/src/assets/ba_data/python/bauiv1lib/discord.py @@ -73,6 +73,7 @@ class DiscordWindow(bui.Window): edit=self._root_widget, cancel_button=self._back_button ) + # Do we need to translate 'Discord'? Or is that always the name? self._title_text = bui.textwidget( parent=self._root_widget, position=(0, self._height - 52), @@ -91,6 +92,9 @@ class DiscordWindow(bui.Window): texture=bui.gettexture('discordServer'), ) + # Hmm should we translate this? The discord server is mostly + # English so being able to read this might be a good screening + # process?.. bui.textwidget( parent=self._root_widget, position=(self._width / 2 - 60, self._height - 100), @@ -110,7 +114,7 @@ class DiscordWindow(bui.Window): position=(self._width / 2 - 30, 20), size=(self._width / 2 - 60, 60), autoselect=True, - label='Join The Discord', + label=bui.Lstr(resource='discordJoinText'), text_scale=1.0, on_activate_call=bui.Call( bui.open_url, 'https://ballistica.net/discord' diff --git a/src/assets/ba_data/python/bauiv1lib/gather/abouttab.py b/src/assets/ba_data/python/bauiv1lib/gather/abouttab.py index 840ab400..b61ed339 100644 --- a/src/assets/ba_data/python/bauiv1lib/gather/abouttab.py +++ b/src/assets/ba_data/python/bauiv1lib/gather/abouttab.py @@ -16,10 +16,6 @@ if TYPE_CHECKING: class AboutGatherTab(GatherTab): """The about tab in the gather UI""" - def __init__(self, window: GatherWindow) -> None: - super().__init__(window) - self._container: bui.Widget | None = None - def on_activate( self, parent_widget: bui.Widget, @@ -34,6 +30,40 @@ class AboutGatherTab(GatherTab): plus = bui.app.plus assert plus is not None + try_tickets = plus.get_v1_account_misc_read_val( + 'friendTryTickets', None + ) + + show_message = True + # Squish message as needed to get things to fit nicely at + # various scales. + uiscale = bui.app.ui_v1.uiscale + message_height = ( + 210 + if uiscale is bui.UIScale.SMALL + else 305 + if uiscale is bui.UIScale.MEDIUM + else 370 + ) + # Let's not talk about sharing in vr-mode; its tricky to fit more + # than one head in a VR-headset. + show_message_extra = not bui.app.env.vr + message_extra_height = 60 + show_invite = try_tickets is not None + invite_height = 80 + show_discord = True + discord_height = 80 + + c_height = 0 + if show_message: + c_height += message_height + if show_message_extra: + c_height += message_extra_height + if show_invite: + c_height += invite_height + if show_discord: + c_height += discord_height + party_button_label = bui.charstr(bui.SpecialChar.TOP_BUTTON) message = bui.Lstr( resource='gatherWindow.aboutDescriptionText', @@ -43,9 +73,7 @@ class AboutGatherTab(GatherTab): ], ) - # Let's not talk about sharing in vr-mode; its tricky to fit more - # than one head in a VR-headset ;-) - if not bui.app.env.vr: + if show_message_extra: message = bui.Lstr( value='${A}\n\n${B}', subs=[ @@ -59,46 +87,52 @@ class AboutGatherTab(GatherTab): ), ], ) - string_height = 400 - include_invite = True - include_discord = False # Need to fix spacing on small first. - msc_scale = 1.1 - c_height_2 = min(region_height, string_height * msc_scale + 100) - try_tickets = plus.get_v1_account_misc_read_val( - 'friendTryTickets', None - ) - if try_tickets is None: - include_invite = False - self._container = bui.containerwidget( + scroll_widget = bui.scrollwidget( parent=parent_widget, + position=(region_left, region_bottom), + size=(region_width, region_height), + highlight=False, + border_opacity=0, + ) + msc_scale = 1.1 + + container = bui.containerwidget( + parent=scroll_widget, position=( region_left, - region_bottom + (region_height - c_height_2) * 0.5, + region_bottom + (region_height - c_height) * 0.5, ), - size=(region_width, c_height_2), + size=(region_width, c_height), background=False, - selectable=include_invite or include_discord, + selectable=show_invite or show_discord, ) - bui.widget(edit=self._container, up_widget=tab_button) + # Allows escaping if we select the container somehow (though + # shouldn't be possible when buttons are present). + bui.widget(edit=container, up_widget=tab_button) - bui.textwidget( - parent=self._container, - position=(region_width * 0.5, c_height_2 * 0.58), - 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, - h_align='center', - v_align='center', - text=message, - ) - - if include_invite: + y = c_height - 30 + if show_message: bui.textwidget( - parent=self._container, - position=(region_width * 0.57, 35), + parent=container, + position=(region_width * 0.5, y), + color=(0.6, 1.0, 0.6), + scale=msc_scale, + size=(0, 0), + maxwidth=region_width * 0.9, + max_height=message_height, + h_align='center', + v_align='top', + text=message, + ) + y -= message_height + if show_message_extra: + y -= message_extra_height + + if show_invite: + bui.textwidget( + parent=container, + position=(region_width * 0.57, y), color=(0, 1, 0), scale=0.6, size=(0, 0), @@ -112,8 +146,8 @@ class AboutGatherTab(GatherTab): ), ) invite_button = bui.buttonwidget( - parent=self._container, - position=(region_width * 0.59, 10), + parent=container, + position=(region_width * 0.59, y - 25), size=(230, 50), color=(0.54, 0.42, 0.56), textcolor=(0, 1, 0), @@ -125,13 +159,14 @@ class AboutGatherTab(GatherTab): on_activate_call=bui.WeakCall(self._invite_to_try_press), up_widget=tab_button, ) + y -= invite_height else: invite_button = None - if include_discord: + if show_discord: bui.textwidget( - parent=self._container, - position=(region_width * 0.57, 15 if include_invite else 75), + parent=container, + position=(region_width * 0.57, y), color=(0.6, 0.6, 1), scale=0.6, size=(0, 0), @@ -139,26 +174,29 @@ class AboutGatherTab(GatherTab): h_align='right', v_align='center', flatness=1.0, - text=( - 'Want to look for new people to play with?\n' - 'Join our Discord and find new friends!' - ), + text=bui.Lstr(resource='discordFriendsText'), ) - bui.buttonwidget( - parent=self._container, - position=(region_width * 0.59, -10 if include_invite else 50), + discord_button = bui.buttonwidget( + parent=container, + position=(region_width * 0.59, y - 25), size=(230, 50), color=(0.54, 0.42, 0.56), textcolor=(0.6, 0.6, 1), - label='Join The Discord', + label=bui.Lstr(resource='discordJoinText'), autoselect=True, on_activate_call=bui.WeakCall(self._join_the_discord_press), up_widget=( invite_button if invite_button is not None else tab_button ), ) + y -= discord_height + else: + discord_button = None - return self._container + if discord_button is not None: + pass + + return scroll_widget def _invite_to_try_press(self) -> None: from bauiv1lib.account import show_sign_in_prompt