# Released under the MIT License. See LICENSE for details.
#
# Auto-generated; do not edit by hand.
"""Asset-package wrapper for ``a-0.babuiltinassets.260819`` (bauiv1).
Bare minimum assets always bundled with the engine.
These are loaded at launch and always available in the C++ layer.
"""
from __future__ import annotations # Docs-generation hack.
# ba_meta require api 9
# ba_meta require asset-package a-0.babuiltinassets.260819
# pylint: disable=useless-suppression
# pylint: disable=too-many-lines
# pylint: disable=too-few-public-methods, disallowed-name
__asset_package__ = 'a-0.babuiltinassets.260819'
from typing import TYPE_CHECKING
from bauiv1._assetref import AssetGroup
from babase import LangStrDir
TYPE_CHECKING = True # Docs-generation hack
if TYPE_CHECKING:
import datetime
from bauiv1._assetref import MeshHandle, SoundHandle, TextureHandle
from babase import LangStr
[docs]
class AudioGroup:
"""
::
Sounds needed during engine bootstrap and early UI (clicks, errors,
and other always-available effects).
See source for the full asset list.
"""
blank: SoundHandle
blip: SoundHandle
cash_register: SoundHandle
click01: SoundHandle
cork_pop: SoundHandle
deek: SoundHandle
ding: SoundHandle
error: SoundHandle
gun_cocking: SoundHandle
powerdown01: SoundHandle
punch01: SoundHandle
score_increase: SoundHandle
sparkle01: SoundHandle
sparkle02: SoundHandle
sparkle03: SoundHandle
swish: SoundHandle
swish2: SoundHandle
swish3: SoundHandle
tap: SoundHandle
ticking_crazy: SoundHandle
[docs]
class MeshesGroup:
"""
::
Meshes needed during engine bootstrap and early UI.
See source for the full asset list.
"""
action_button_bottom: MeshHandle
action_button_left: MeshHandle
action_button_right: MeshHandle
action_button_top: MeshHandle
arrow_back: MeshHandle
arrow_front: MeshHandle
box: MeshHandle
boxing_glove: MeshHandle
button_back_opaque: MeshHandle
button_back_small_opaque: MeshHandle
button_back_small_transparent: MeshHandle
button_back_transparent: MeshHandle
button_large_opaque: MeshHandle
button_large_transparent: MeshHandle
button_larger_opaque: MeshHandle
button_larger_transparent: MeshHandle
button_medium_opaque: MeshHandle
button_medium_transparent: MeshHandle
button_small_opaque: MeshHandle
button_small_transparent: MeshHandle
button_square_opaque: MeshHandle
button_square_transparent: MeshHandle
button_tab_opaque: MeshHandle
button_tab_transparent: MeshHandle
check_transparent: MeshHandle
cross_out: MeshHandle
cylinder: MeshHandle
eye_ball: MeshHandle
eye_ball_iris: MeshHandle
eye_lid: MeshHandle
flag_pole: MeshHandle
flag_stand: MeshHandle
flash: MeshHandle
hair_tuft1: MeshHandle
hair_tuft1b: MeshHandle
hair_tuft2: MeshHandle
hair_tuft3: MeshHandle
hair_tuft4: MeshHandle
image16x1: MeshHandle
image1x1: MeshHandle
image1x1_full_screen: MeshHandle
image1x1_vrfull_screen: MeshHandle
image2x1: MeshHandle
image4x1: MeshHandle
locator: MeshHandle
locator_box: MeshHandle
locator_circle: MeshHandle
locator_circle_outline: MeshHandle
overlay_guide: MeshHandle
scorch: MeshHandle
scroll_bar_thumb_opaque: MeshHandle
scroll_bar_thumb_short_opaque: MeshHandle
scroll_bar_thumb_short_simple: MeshHandle
scroll_bar_thumb_short_transparent: MeshHandle
scroll_bar_thumb_simple: MeshHandle
scroll_bar_thumb_transparent: MeshHandle
scroll_bar_trough_transparent: MeshHandle
shield: MeshHandle
shock_wave: MeshHandle
shrapnel1: MeshHandle
shrapnel_board: MeshHandle
shrapnel_slime: MeshHandle
soft_edge_inside: MeshHandle
soft_edge_outside: MeshHandle
text_box_transparent: MeshHandle
vr_fade: MeshHandle
vr_overlay: MeshHandle
window_hsmall_vmed_opaque: MeshHandle
window_hsmall_vmed_transparent: MeshHandle
window_hsmall_vsmall_opaque: MeshHandle
window_hsmall_vsmall_transparent: MeshHandle
wing: MeshHandle
[docs]
class StringsAccountGroup:
"""
::
Account and sign-in vocabulary: status, error, and requirement
messages about the player account.
See source for the full asset list.
"""
#: ::
#:
#: Error screen-message shown to a player who attempts to join a
#: party or server that requires account authentication while they
#: are not signed in to an account.
#:
#: English: "You must sign in to do this."
must_sign_in: LangStr
[docs]
def not_using_account(self, *, service: str | LangStr) -> LangStr:
"""
::
Notice that a platform account is being ignored.
English: "Note: Ignoring that {service} account. Go to 'Account
-> Sign in' if you want to use it."
"""
#: ::
#:
#: Error message shown when signing in fails.
#:
#: English: "Error signing in."
sign_in_error: LangStr
#: ::
#:
#: Notice that the account is being updated.
#:
#: English: "Updating your account..."
updating_account: LangStr
[docs]
def you_got_item(self, *, item: str | LangStr) -> LangStr:
"""
::
Screen-message acknowledging the player received a
purchased/awarded item; the placeholder is the item name (may be
raw text or a nested translated name).
English: "You got a {item}!"
"""
[docs]
class StringsAssetsGroup:
"""
::
Asset-system progress and error strings: boot-time (construct-mode)
bring-up, package download/build progress dialogs, and the
pre-main-menu sign-in gate.
See source for the full asset list.
"""
[docs]
def access_denied_guidance(self, *, detail: str | LangStr) -> LangStr:
"""
::
Wraps a server-supplied asset access-denial explanation with
guidance for the user; shown on the boot-time asset dialog.
English: "{detail} Remove these mods/changes and try again."
"""
#: ::
#:
#: Screen message shown when a resolve finally lands full asset
#: quality after previously showing reduced-quality versions. Paired
#: with requested_quality_assets_building.
#:
#: English: "All assets are now full quality."
all_assets_requested_quality: LangStr
#: ::
#:
#: Status line in the boot-time asset dialog while waiting for
#: account sign-in so restricted assets can load.
#:
#: English: "Authenticating…"
authenticating: LangStr
[docs]
def building_assets(self, *, count: int) -> LangStr:
"""
::
Progress-dialog line shown while the server builds assets;
updates live as the remaining count drops. Spans every package
being built, so it names no package.
English: (one) "Building assets (# remaining)…" / (other)
"Building assets (# remaining)…"
"""
#: ::
#:
#: Progress-dialog line shown once asset builds have started but
#: before the total step count is known (some packages have not
#: reported yet). Replaced by the counted line once it is.
#:
#: English: "Building assets…"
building_assets_no_count: LangStr
#: ::
#:
#: Error on the boot-time asset dialog when this app build is too
#: old to load current assets (fallback wording when the server
#: didn't supply its own).
#:
#: English: "This app version is too old to load current assets.
#: Please update to continue."
client_too_old: LangStr
[docs]
def content_error_guidance(self, *, detail: str | LangStr) -> LangStr:
"""
::
Wraps a server-supplied asset build-failure explanation with
guidance for the package author; shown on the boot-time asset
dialog (this state is nearly always seen by the author, since
dev/test versions only resolve for them).
English: "{detail} Fix the file in the source Workspace and try
again."
"""
[docs]
def downloading_assets(self, *, count: int) -> LangStr:
"""
::
Progress-dialog line shown while asset files download; updates
live as the remaining count drops.
English: (one) "Downloading assets (# remaining)…" / (other)
"Downloading assets (# remaining)…"
"""
#: ::
#:
#: Generic error on the boot-time asset dialog when asset loading
#: fails unexpectedly.
#:
#: English: "An error occurred loading assets; see log for details."
load_error: LangStr
#: ::
#:
#: Progress-dialog line shown while server-side asset builds are
#: being prepared, before per-step progress is known.
#:
#: English: "Preparing to build assets…"
preparing_build: LangStr
#: ::
#:
#: Screen message shown after a resolve that had to serve
#: lower-quality textures because the requested quality was still
#: being built. Paired with all_assets_requested_quality, which
#: announces the recovery.
#:
#: English: "Assets are still building; some may appear with reduced
#: quality."
requested_quality_assets_building: LangStr
#: ::
#:
#: Error on the boot-time asset dialog when a required sign-in was
#: not completed (attempted and failed, or timed out); a Retry
#: button sits below it.
#:
#: English: "You must sign in to an account with access to these
#: assets to continue. Retry to sign in, or remove these
#: mods/changes."
sign_in_failed: LangStr
[docs]
def sign_in_needed_browser(self, *, address: str | LangStr) -> LangStr:
"""
::
Message on the boot-time sign-in dialog when required assets
need a signed-in account and a web browser is available; a Sign
In button sits below it.
English: "Sign-in is required to load these assets. Press the
button below, or visit {address}"
"""
[docs]
def sign_in_needed_other_device(
self, *, address: str | LangStr
) -> LangStr:
"""
::
Message on the boot-time sign-in dialog when required assets
need a signed-in account and this device has no web browser.
English: "Sign-in is required to load these assets. On another
device, visit {address}"
"""
#: ::
#:
#: Status line in the boot-time asset dialog after a browser sign-in
#: completes, while the account finishes validating.
#:
#: English: "Signing in…"
signing_in: LangStr
[docs]
class StringsAudioGroup:
"""
::
Audio-related messages: music/custom-soundtrack playback errors.
See source for the full asset list.
"""
[docs]
def music_play_error(self, *, music: str | LangStr) -> LangStr:
"""
::
Error screen-message shown when a custom-soundtrack music file
fails to play; the placeholder is the quoted filename.
English: "Error playing music: {music}"
"""
[docs]
class StringsNetGroup:
"""
::
Networking error messages shown to the player.
See source for the full asset list.
"""
#: ::
#:
#: Error screen-message shown to a player whose attempt to join a
#: party or server was rejected because the host could not validate
#: their account.
#:
#: English: "Your account was rejected. Are you signed in?"
account_rejected: LangStr
#: ::
#:
#: Generic error screen-message shown to a player whose attempt to
#: join a party or server failed due to an authentication or server
#: error (with no more-specific cause available).
#:
#: English: "An error has occurred."
auth_error: LangStr
[docs]
def connected_to_game(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message after successfully joining a named hosted game;
the placeholder is the game/party name (already quoted in the
English form).
English: "Joined '{name}'"
"""
[docs]
def connected_to_party(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message after successfully joining another player's
party; the placeholder is that player's display name.
English: "Joined {name}'s party!"
"""
#: ::
#:
#: Progress screen-message shown while attempting to connect to a
#: multiplayer party.
#:
#: English: "Connecting..."
connecting: LangStr
#: ::
#:
#: Notice that connecting to a server failed.
#:
#: English: "Connection failed."
connection_failed: LangStr
#: ::
#:
#: Screen-message when connecting fails because the target host is
#: itself in another party.
#:
#: English: "Connection failed; host is in another party."
connection_failed_host_in_other_party: LangStr
#: ::
#:
#: Screen-message when connecting fails because the party has no
#: free slots.
#:
#: English: "Connection failed; the party is full."
connection_failed_party_full: LangStr
#: ::
#:
#: Screen-message when connecting fails because the host runs a
#: different game version.
#:
#: English: "Connection failed; host is running a different version
#: of the game. Make sure you are both up-to-date and try again."
connection_failed_version_mismatch: LangStr
#: ::
#:
#: Generic screen-message when a host refuses the connection for an
#: unspecified reason.
#:
#: English: "Connection rejected."
connection_rejected: LangStr
[docs]
def device_time_incorrect(self, *, hours: str | LangStr) -> LangStr:
"""
::
Warning shown when the device clock differs substantially from
real-world time; the placeholder is how many hours off it is.
English: "Your device's time is incorrect by {hours} hours. This
is likely to cause problems. Please check your time and
time-zone settings."
"""
#: ::
#:
#: Screen-message when connecting fails because the host runs a
#: NEWER game version (so updating locally will fix it).
#:
#: English: "Host is running a newer version. Update your game and
#: try again."
incompatible_newer_version_host: LangStr
#: ::
#:
#: Screen-message when connecting fails because the host runs a
#: different game version (direction unknown).
#:
#: English: "Host is running a different version of the game. Make
#: sure you are both up-to-date and try again."
incompatible_version_host: LangStr
[docs]
def incompatible_version_player(
self, *, name: str | LangStr
) -> LangStr:
"""
::
Screen-message when a joining player is refused because their
game version differs from the host; the placeholder is their
display name.
English: "{name} is running a different version of the game.
Make sure you are both up-to-date and try again."
"""
#: ::
#:
#: Error screen-message shown to a player whose attempt to join a
#: password-protected party or server was rejected for entering the
#: wrong party password.
#:
#: English: "Incorrect password."
incorrect_password: LangStr
#: ::
#:
#: Error screen-message shown when the player enters a malformed
#: network address trying to connect to a game party.
#:
#: English: "Error: invalid address."
invalid_address: LangStr
[docs]
def left_game(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message after leaving a named hosted game; the
placeholder is the game/party name (already quoted in the
English form).
English: "Left '{name}'."
"""
[docs]
def left_party(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message after leaving another player's party; the
placeholder is that player's display name.
English: "Left {name}'s party."
"""
[docs]
def player_joined_party(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message when another player joins the party you are in;
the placeholder is their display name.
English: "{name} joined the party!"
"""
[docs]
def player_left_party(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message when another player leaves the party you are in;
the placeholder is their display name.
English: "{name} left the party."
"""
#: ::
#:
#: Screen-message shown when the client cannot establish its secure
#: connection to the cloud.
#:
#: English: "Unable to establish secure cloud connection; network
#: functionality may fail."
secure_connection_failed: LangStr
#: ::
#:
#: Screen-message when connecting to game servers is refused because
#: this app version is too old for them.
#:
#: English: "Server functionality is no longer supported in this
#: version of the game; Please update to a newer version."
server_unsupported: LangStr
#: ::
#:
#: Error shown when something cannot be reached, most likely because
#: there is no internet connection (dialog messages and
#: screen-messages).
#:
#: English: "This is currently unavailable (no internet
#: connection?)"
unavailable_no_connection: LangStr
[docs]
class StringsPluginsGroup:
"""
::
Messages about user-installed plugins being detected, removed, or
failing to load.
See source for the full asset list.
"""
[docs]
def class_load_error(
self, *, plugin: str | LangStr, error: str | LangStr
) -> LangStr:
"""
::
Error message for a plugin class that failed to load.
English: "Error loading plugin class '{plugin}': {error}"
"""
#: ::
#:
#: Notice that new plugins were found.
#:
#: English: "New plugin(s) detected. Restart to activate them, or
#: configure them in settings."
detected: LangStr
[docs]
def init_error(
self, *, plugin: str | LangStr, error: str | LangStr
) -> LangStr:
"""
::
Error message for a plugin that failed to initialize.
English: "Error initializing plugin {plugin}: {error}"
"""
[docs]
def removed(self, *, count: int) -> LangStr:
"""
::
Notice that previously-present plugins are gone.
English: (one) "# plugin no longer found." / (other) "# plugins
no longer found."
"""
[docs]
class StringsReplayGroup:
"""
::
Game-replay playback error messages.
See source for the full asset list.
"""
#: ::
#:
#: Error screen-message shown when a game replay file can't be read
#: (corrupt or truncated).
#:
#: English: "Error reading replay file."
read_error: LangStr
#: ::
#:
#: Error screen-message shown when a saved game replay was recorded
#: by an incompatible game version and can't be played back.
#:
#: English: "Sorry, this replay was made in a different version of
#: the game and can't be used."
version_error: LangStr
[docs]
class StringsScriptsGroup:
"""
::
Messages about scanning user script modules and reporting ones that
need updating for the current script API.
See source for the full asset list.
"""
[docs]
def module_needs_update(
self, *, path: str | LangStr, api: str | LangStr
) -> LangStr:
"""
::
Notice that one script module is out of date.
English: "The module at {path} must be updated for API version
{api}."
"""
[docs]
def modules_need_update(
self, *, path: str | LangStr, count: int, api: str | LangStr
) -> LangStr:
"""
::
Notice that several script modules are out of date.
English: (one) "{path} and # other module must be updated for
API {api}" / (other) "{path} and # other modules must be updated
for API {api}"
"""
#: ::
#:
#: Notice that errors occurred scanning scripts.
#:
#: English: "Error(s) scanning scripts. See log for details."
scan_error: LangStr
[docs]
class StringsSessionGroup:
"""
::
Gameplay-session messages shown by the host: idle-player kick
notices and similar.
See source for the full asset list.
"""
[docs]
def chat_blocked(self, *, seconds: int, name: str | LangStr) -> LangStr:
"""
::
Screen-message when a player is temporarily blocked from
chatting; placeholders are their display name and the block
duration in seconds.
English: (one) "{name} is chat-blocked for # second." / (other)
"{name} is chat-blocked for # seconds."
"""
[docs]
def join_cooldown(self, *, seconds: int) -> LangStr:
"""
::
Screen-message telling a recently-departed player how long until
they may rejoin the game session.
English: (one) "You can join in # second." / (other) "You can
join in # seconds."
"""
[docs]
def kick_idle_kicked(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message shown on the host when a player is removed from
the game for being idle too long (the kick-idle-players option).
English: "Kicking {name} for being idle."
"""
[docs]
def kick_idle_warning(
self, *, seconds: int, name: str | LangStr
) -> LangStr:
"""
::
Screen-message warning shown on the host shortly before an idle
player gets kicked (the kick-idle-players option); followed by
the kick_idle_warning_settings note.
English: (one) "{name} will be kicked in # second if still
idle." / (other) "{name} will be kicked in # seconds if still
idle."
"""
#: ::
#:
#: Parenthesized note shown right after the kick_idle_warning
#: message, pointing at where the kick-idle-players behavior can be
#: disabled. 'Settings' and 'Advanced' refer to the in-game settings
#: menu sections.
#:
#: English: "(you can turn this off in Settings -> Advanced)"
kick_idle_warning_settings: LangStr
[docs]
def kick_occurred(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message when a player is kicked from the party after a
successful vote; the placeholder is their display name.
English: "{name} was kicked."
"""
[docs]
def kick_question(self, *, name: str | LangStr) -> LangStr:
"""
::
Prompt asking the party whether a player should be kicked; the
placeholder is their display name.
English: "Kick {name}?"
"""
#: ::
#:
#: Error screen-message when a player tries to start a kick vote
#: against a server admin.
#:
#: English: "Admins can't be kicked."
kick_vote_cant_kick_admins: LangStr
#: ::
#:
#: Error screen-message when a player tries to start a kick vote
#: against themselves.
#:
#: English: "You can't kick yourself."
kick_vote_cant_kick_self: LangStr
#: ::
#:
#: Screen-message when a kick vote ends without enough yes votes.
#:
#: English: "Kick-vote failed."
kick_vote_failed: LangStr
#: ::
#:
#: Error screen-message when there are too few players present for a
#: kick vote to be meaningful.
#:
#: English: "Not enough players for a vote."
kick_vote_not_enough_players: LangStr
[docs]
def kick_vote_started(self, *, name: str | LangStr) -> LangStr:
"""
::
Screen-message announcing that a kick vote has begun against a
player; the placeholder is their display name.
English: "A kick vote has been started for {name}."
"""
[docs]
def kick_votes_needed(self, *, count: int) -> LangStr:
"""
::
Screen-message showing how many more yes votes a kick vote needs
to pass.
English: (one) "# vote needed" / (other) "# votes needed"
"""
#: ::
#:
#: Error screen-message when kick voting is turned off on this
#: server.
#:
#: English: "Kick voting is disabled."
kick_voting_disabled: LangStr
[docs]
def kick_with_chat(
self, *, yes: str | LangStr, no: str | LangStr
) -> LangStr:
"""
::
Instructions for voting via chat; the placeholders are the exact
text to type into chat for yes and for no (e.g. "1" and "2").
English: "Type {yes} in chat for yes and {no} for no."
"""
#: ::
#:
#: Screen-message when a client tries to do something while the host
#: is still loading.
#:
#: English: "Loading; try again in a moment..."
loading_try_again: LangStr
[docs]
def vote_delay(self, *, seconds: int) -> LangStr:
"""
::
Error screen-message telling a player how long until they may
start another vote.
English: (one) "You can't start another vote for # second." /
(other) "You can't start another vote for # seconds."
"""
#: ::
#:
#: Error screen-message when a player tries to start a vote while
#: another vote is still running.
#:
#: English: "A vote is already in progress."
vote_in_progress: LangStr
#: ::
#:
#: Error screen-message when a player tries to vote twice in the
#: same vote.
#:
#: English: "You already voted"
voted_already: LangStr
[docs]
class StringsStoreGroup:
"""
::
In-app-purchase and store transaction messages: purchase failures,
restores, and availability notices.
See source for the full asset list.
"""
#: ::
#:
#: Notice that Google Play purchases are unavailable.
#:
#: English: "Google Play purchases are not available. You may need
#: to update your store app."
google_play_purchases_unavailable: LangStr
#: ::
#:
#: Notice that Google Play Services is unavailable.
#:
#: English: "Google Play Services is not available. Some app
#: functionality may be disabled."
google_play_services_unavailable: LangStr
#: ::
#:
#: Notice that this item is already being purchased.
#:
#: English: "A purchase of this item is already in progress."
purchase_already_in_progress: LangStr
[docs]
def purchase_not_valid(self, *, email: str | LangStr) -> LangStr:
"""
::
Error message that a purchase was not valid.
English: "Purchase not valid. Contact {email} if this is an
error."
"""
#: ::
#:
#: Confirmation that past purchases were restored.
#:
#: English: "Purchases restored."
purchases_restored: LangStr
#: ::
#:
#: Status shown while a purchase is being processed.
#:
#: English: "Purchasing..."
purchasing: LangStr
#: ::
#:
#: Limited-time offer to remove ads via a token pack.
#:
#: English: "LIMITED TIME OFFER: PURCHASE ANY TOKEN PACK TO REMOVE
#: IN-GAME ADS."
remove_ads_token_offer: LangStr
#: ::
#:
#: Status shown while a free (zero-price) item is being requested;
#: the counterpart of the purchasing message.
#:
#: English: "Requesting..."
requesting: LangStr
#: ::
#:
#: Notice that a transaction is already underway.
#:
#: English: "A transaction is in progress; please try again in a
#: moment."
transaction_in_progress: LangStr
#: ::
#:
#: Notice that a store item is not available.
#:
#: English: "Sorry, this is not available."
unavailable: LangStr
#: ::
#:
#: Notice that something is unavailable for now.
#:
#: English: "This is currently unavailable; please try again later."
unavailable_temporarily: LangStr
[docs]
class StringsTimeGroup:
"""
::
Compact unit suffixes and glue for formatted time values (the
hours/minutes/seconds pieces babase.timestring assembles).
See source for the full asset list.
"""
[docs]
def duration_value(
self,
*,
t: datetime.timedelta | datetime.datetime,
now: datetime.datetime | None = None,
) -> LangStr:
"""
::
A bare length of time such as "1h 23m", shown by itself as a
plain value. Doubles as the string that keeps the duration
formatter components embedded in this package: engine-level
displays (the timedisplay node, the toolbar chest countdowns)
read their unit words from those embedded components, so this
entry must always exist here.
English: "{t}"
"""
[docs]
def suffix_hours(self, *, count: str | LangStr) -> LangStr:
"""
::
Compact hours suffix used in formatted time values.
English: "{count}h"
"""
[docs]
def suffix_minutes(self, *, count: str | LangStr) -> LangStr:
"""
::
Compact minutes suffix used in formatted time values.
English: "{count}m"
"""
[docs]
def suffix_seconds(self, *, count: str | LangStr) -> LangStr:
"""
::
Compact seconds suffix used in formatted time values.
English: "{count}s"
"""
[docs]
class StringsUiGroup:
"""
::
General UI strings: menu-control ownership messages and
list-navigation hints.
See source for the full asset list.
"""
[docs]
def arrows_to_exit_list(
self, *, left: str | LangStr, right: str | LangStr
) -> LangStr:
"""
::
Lowercase hint shown (with an error sound) when the player hits
the edge of a UI list; tells them how to move focus out of it.
The two placeholders are substituted with left/right arrow glyph
characters.
English: "press {left} or {right} to exit list"
"""
#: ::
#:
#: Generic Cancel button label (used by e.g. asset-download progress
#: dialogs).
#:
#: English: "Cancel"
cancel: LangStr
#: ::
#:
#: Notice that the clipboard is unavailable in this build.
#:
#: English: "Clipboard not supported on this build."
clipboard_not_supported: LangStr
#: ::
#:
#: Confirmation that text was copied to the clipboard.
#:
#: English: "Copied to clipboard."
copied_to_clipboard: LangStr
#: ::
#:
#: Generic Error title used on error dialogs (e.g. the boot-time
#: asset-update dialog when a load fails).
#:
#: English: "Error"
error: LangStr
#: ::
#:
#: Name label for the Apple Game Center service.
#:
#: English: "Game Center"
game_center: LangStr
#: ::
#:
#: Name label for the Google Play service.
#:
#: English: "Google Play"
google_play: LangStr
#: ::
#:
#: Parenthesized suffix appended after the has_menu_control message
#: while the controlling device's ownership is not yet close to
#: expiring.
#:
#: English: "(will time out if idle)"
menu_control_will_time_out: LangStr
#: ::
#:
#: Generic label for a button acknowledging/dismissing a message
#: (used by e.g. asset-update error dialogs).
#:
#: English: "OK"
ok: LangStr
#: ::
#:
#: Label on an unopenable-yet treasure chest slot in the root UI
#: inviting the player to open it once its timer completes. Replaces
#: the legacy openMeText resource.
#:
#: English: "Open Me!"
open_me: LangStr
#: ::
#:
#: Name label for the remote-control companion app.
#:
#: English: "BombSquad Remote"
remote_app_name: LangStr
#: ::
#:
#: Generic label for a button that retries a failed operation (used
#: by e.g. the boot-time asset-update dialog).
#:
#: English: "Retry"
retry: LangStr
#: ::
#:
#: Generic Sign In label used for dialog titles and buttons (e.g.
#: the boot-time asset gate's browser sign-in dialog).
#:
#: English: "Sign In"
sign_in: LangStr
[docs]
def spaced_pair(
self, *, first: str | LangStr, second: str | LangStr
) -> LangStr:
"""
::
Pure-formatting template joining two labels with a space;
substitution-only.
English: "{first} {second}"
"""
#: ::
#:
#: Notice that storage access permission is required.
#:
#: English: "This requires storage access"
storage_permission_needed: LangStr
#: ::
#:
#: Confirmation label that an operation succeeded.
#:
#: English: "Success!"
success: LangStr
#: ::
#:
#: Generic screen-message for a failure with no more specific
#: explanation available.
#:
#: English: "Unknown error"
unknown_error: LangStr
#: ::
#:
#: Gentle non-urgent screen-message notice, shown once shortly after
#: connectivity comes up, telling the player that a newer version of
#: the app is available to download.
#:
#: English: "A newer version of this app is available."
update_available: LangStr
#: ::
#:
#: Generic title for progress dialogs applying updates: asset
#: downloads/builds at boot, locale switches, pre-game package
#: fetches.
#:
#: English: "Updating…"
updating: LangStr
[docs]
class StringsWorkspaceGroup:
"""
::
Messages about syncing and activating account workspaces.
See source for the full asset list.
"""
[docs]
def activated(self, *, thing: str | LangStr) -> LangStr:
"""
::
Confirmation that a workspace was activated.
English: "Workspace {thing} activated."
"""
[docs]
def sync_error(self, *, workspace: str | LangStr) -> LangStr:
"""
::
Error message that a workspace failed to sync.
English: "Error syncing Workspace {workspace}. See log for
details."
"""
[docs]
def sync_reuse(self, *, workspace: str | LangStr) -> LangStr:
"""
::
Notice that a previously synced workspace is being reused.
English: "Can't sync Workspace '{workspace}'. Reusing previously
synced version."
"""
[docs]
class StringsGroup:
"""
::
New-format engine strings needed early or accessed from the C++
layer via the builtin-strings API (see ballistica-internal
strings-asset-migration decision D22).
See source for the full asset list.
"""
account: StringsAccountGroup
assets: StringsAssetsGroup
audio: StringsAudioGroup
input: StringsInputGroup
net: StringsNetGroup
plugins: StringsPluginsGroup
replay: StringsReplayGroup
scripts: StringsScriptsGroup
session: StringsSessionGroup
store: StringsStoreGroup
time: StringsTimeGroup
ui: StringsUiGroup
workspace: StringsWorkspaceGroup
[docs]
class TexturesGroup:
"""
::
Textures needed during engine bootstrap and early UI, including the
reflection cube-maps.
See source for the full asset list.
"""
action_buttons: TextureHandle
arrow: TextureHandle
back_icon: TextureHandle
black: TextureHandle
bomb_button: TextureHandle
boxing_gloves_color: TextureHandle
button_square: TextureHandle
button_square_wide: TextureHandle
character_icon_mask: TextureHandle
circle: TextureHandle
circle_no_alpha: TextureHandle
circle_outline: TextureHandle
circle_outline_no_alpha: TextureHandle
circle_shadow: TextureHandle
circle_soft: TextureHandle
cursor: TextureHandle
explosion: TextureHandle
eye_color: TextureHandle
eye_color_tint_mask: TextureHandle
flag_pole_color: TextureHandle
font_big: TextureHandle
font_extras: TextureHandle
font_extras2: TextureHandle
font_extras3: TextureHandle
font_extras4: TextureHandle
font_extras5: TextureHandle
font_small0: TextureHandle
font_small1: TextureHandle
font_small2: TextureHandle
font_small3: TextureHandle
font_small4: TextureHandle
font_small5: TextureHandle
font_small6: TextureHandle
font_small7: TextureHandle
fuse: TextureHandle
glow: TextureHandle
light: TextureHandle
light_sharp: TextureHandle
light_soft: TextureHandle
menu_button: TextureHandle
nub: TextureHandle
ouya_abutton: TextureHandle
page_left_right: TextureHandle
rgb_stripes: TextureHandle
scorch: TextureHandle
scorch_big: TextureHandle
scroll_widget: TextureHandle
scroll_widget_glow: TextureHandle
shadow: TextureHandle
shadow_sharp: TextureHandle
shadow_soft: TextureHandle
shield: TextureHandle
shrapnel1_color: TextureHandle
smoke: TextureHandle
soft_rect: TextureHandle
soft_rect2: TextureHandle
soft_rect_vertical: TextureHandle
sparks: TextureHandle
spinner: TextureHandle
spinner0: TextureHandle
spinner1: TextureHandle
spinner10: TextureHandle
spinner11: TextureHandle
spinner2: TextureHandle
spinner3: TextureHandle
spinner4: TextureHandle
spinner5: TextureHandle
spinner6: TextureHandle
spinner7: TextureHandle
spinner8: TextureHandle
spinner9: TextureHandle
start_button: TextureHandle
text_clear_button: TextureHandle
touch_arrows: TextureHandle
touch_arrows_actions: TextureHandle
ui_atlas: TextureHandle
ui_atlas2: TextureHandle
users_button: TextureHandle
white: TextureHandle
window_hsmall_vmed: TextureHandle
window_hsmall_vsmall: TextureHandle
wings: TextureHandle
#: The ``audio`` group - 20 assets (``blank``, ``blip``, ``cash_register``,
#: ``click01``, ``cork_pop``, and 15 more). Full list in source.
audio: AudioGroup
#: The ``meshes`` group - 72 assets (``action_button_bottom``,
#: ``action_button_left``, ``action_button_right``, ``action_button_top``,
#: ``arrow_back``, and 67 more). Full list in source.
meshes: MeshesGroup
#: The ``strings`` group - 127 strings (``account``, ``assets``, ``audio``,
#: ``input``, ``net``, and 122 more). Full list in source.
strings: StringsGroup
#: The ``textures`` group - 82 assets (``action_buttons``, ``arrow``,
#: ``back_icon``, ``black``, ``bomb_button``, and 77 more). Full list in
#: source.
textures: TexturesGroup
_TREE = {
'audio': {
'blank': 's',
'blip': 's',
'cash_register': 's',
'click01': 's',
'cork_pop': 's',
'deek': 's',
'ding': 's',
'error': 's',
'gun_cocking': 's',
'powerdown01': 's',
'punch01': 's',
'score_increase': 's',
'sparkle01': 's',
'sparkle02': 's',
'sparkle03': 's',
'swish': 's',
'swish2': 's',
'swish3': 's',
'tap': 's',
'ticking_crazy': 's',
},
'meshes': {
'action_button_bottom': 'm',
'action_button_left': 'm',
'action_button_right': 'm',
'action_button_top': 'm',
'arrow_back': 'm',
'arrow_front': 'm',
'box': 'm',
'boxing_glove': 'm',
'button_back_opaque': 'm',
'button_back_small_opaque': 'm',
'button_back_small_transparent': 'm',
'button_back_transparent': 'm',
'button_large_opaque': 'm',
'button_large_transparent': 'm',
'button_larger_opaque': 'm',
'button_larger_transparent': 'm',
'button_medium_opaque': 'm',
'button_medium_transparent': 'm',
'button_small_opaque': 'm',
'button_small_transparent': 'm',
'button_square_opaque': 'm',
'button_square_transparent': 'm',
'button_tab_opaque': 'm',
'button_tab_transparent': 'm',
'check_transparent': 'm',
'cross_out': 'm',
'cylinder': 'm',
'eye_ball': 'm',
'eye_ball_iris': 'm',
'eye_lid': 'm',
'flag_pole': 'm',
'flag_stand': 'm',
'flash': 'm',
'hair_tuft1': 'm',
'hair_tuft1b': 'm',
'hair_tuft2': 'm',
'hair_tuft3': 'm',
'hair_tuft4': 'm',
'image16x1': 'm',
'image1x1': 'm',
'image1x1_full_screen': 'm',
'image1x1_vrfull_screen': 'm',
'image2x1': 'm',
'image4x1': 'm',
'locator': 'm',
'locator_box': 'm',
'locator_circle': 'm',
'locator_circle_outline': 'm',
'overlay_guide': 'm',
'scorch': 'm',
'scroll_bar_thumb_opaque': 'm',
'scroll_bar_thumb_short_opaque': 'm',
'scroll_bar_thumb_short_simple': 'm',
'scroll_bar_thumb_short_transparent': 'm',
'scroll_bar_thumb_simple': 'm',
'scroll_bar_thumb_transparent': 'm',
'scroll_bar_trough_transparent': 'm',
'shield': 'm',
'shock_wave': 'm',
'shrapnel1': 'm',
'shrapnel_board': 'm',
'shrapnel_slime': 'm',
'soft_edge_inside': 'm',
'soft_edge_outside': 'm',
'text_box_transparent': 'm',
'vr_fade': 'm',
'vr_overlay': 'm',
'window_hsmall_vmed_opaque': 'm',
'window_hsmall_vmed_transparent': 'm',
'window_hsmall_vsmall_opaque': 'm',
'window_hsmall_vsmall_transparent': 'm',
'wing': 'm',
},
'strings': {
'account': {
'must_sign_in': (),
'not_using_account': ('service',),
'sign_in_error': (),
'updating_account': (),
'you_got_item': ('item',),
},
'assets': {
'access_denied_guidance': ('detail',),
'all_assets_requested_quality': (),
'authenticating': (),
'building_assets': ('count',),
'building_assets_no_count': (),
'client_too_old': (),
'content_error_guidance': ('detail',),
'downloading_assets': ('count',),
'load_error': (),
'preparing_build': (),
'requested_quality_assets_building': (),
'sign_in_failed': (),
'sign_in_needed_browser': ('address',),
'sign_in_needed_other_device': ('address',),
'signing_in': (),
},
'audio': {'music_play_error': ('music',)},
'input': {
'axis': ('number',),
'button': ('number',),
'controller_connected': ('controller',),
'controller_detected': (),
'controller_disconnected': ('controller',),
'controller_menus_only': (),
'controller_reconnected': ('controller',),
'controllers_connected': ('count',),
'controllers_detected': ('count',),
'controllers_disconnected': ('count',),
'keyboard': (),
'touch_screen': (),
'touch_screen_join_warning': (),
'unsupported_controller': ('name',),
'vr_orientation_reset': (),
'vr_orientation_reset_cardboard': (),
},
'net': {
'account_rejected': (),
'auth_error': (),
'connected_to_game': ('name',),
'connected_to_party': ('name',),
'connecting': (),
'connection_failed': (),
'connection_failed_host_in_other_party': (),
'connection_failed_party_full': (),
'connection_failed_version_mismatch': (),
'connection_rejected': (),
'device_time_incorrect': ('hours',),
'incompatible_newer_version_host': (),
'incompatible_version_host': (),
'incompatible_version_player': ('name',),
'incorrect_password': (),
'invalid_address': (),
'left_game': ('name',),
'left_party': ('name',),
'player_joined_party': ('name',),
'player_left_party': ('name',),
'secure_connection_failed': (),
'server_unsupported': (),
'unavailable_no_connection': (),
},
'plugins': {
'class_load_error': ('plugin', 'error'),
'detected': (),
'init_error': ('plugin', 'error'),
'removed': ('count',),
},
'replay': {'read_error': (), 'version_error': ()},
'scripts': {
'module_needs_update': ('path', 'api'),
'modules_need_update': ('path', 'count', 'api'),
'scan_error': (),
},
'session': {
'chat_blocked': ('seconds', 'name'),
'join_cooldown': ('seconds',),
'kick_idle_kicked': ('name',),
'kick_idle_warning': ('seconds', 'name'),
'kick_idle_warning_settings': (),
'kick_occurred': ('name',),
'kick_question': ('name',),
'kick_vote_cant_kick_admins': (),
'kick_vote_cant_kick_self': (),
'kick_vote_failed': (),
'kick_vote_not_enough_players': (),
'kick_vote_started': ('name',),
'kick_votes_needed': ('count',),
'kick_voting_disabled': (),
'kick_with_chat': ('yes', 'no'),
'loading_try_again': (),
'vote_delay': ('seconds',),
'vote_in_progress': (),
'voted_already': (),
},
'store': {
'google_play_purchases_unavailable': (),
'google_play_services_unavailable': (),
'purchase_already_in_progress': (),
'purchase_not_valid': ('email',),
'purchases_restored': (),
'purchasing': (),
'remove_ads_token_offer': (),
'requesting': (),
'transaction_in_progress': (),
'unavailable': (),
'unavailable_temporarily': (),
},
'time': {
'duration_value': ('t',),
'suffix_hours': ('count',),
'suffix_minutes': ('count',),
'suffix_seconds': ('count',),
},
'ui': {
'arrows_to_exit_list': ('left', 'right'),
'cancel': (),
'clipboard_not_supported': (),
'copied_to_clipboard': (),
'error': (),
'game_center': (),
'google_play': (),
'has_menu_control': ('name',),
'menu_control_time_out': ('seconds',),
'menu_control_will_time_out': (),
'ok': (),
'open_me': (),
'remote_app_name': (),
'retry': (),
'sign_in': (),
'spaced_pair': ('first', 'second'),
'storage_permission_needed': (),
'success': (),
'unknown_error': (),
'update_available': (),
'updating': (),
},
'workspace': {
'activated': ('thing',),
'sync_error': ('workspace',),
'sync_reuse': ('workspace',),
},
},
'textures': {
'action_buttons': 't',
'arrow': 't',
'back_icon': 't',
'black': 't',
'bomb_button': 't',
'boxing_gloves_color': 't',
'button_square': 't',
'button_square_wide': 't',
'character_icon_mask': 't',
'circle': 't',
'circle_no_alpha': 't',
'circle_outline': 't',
'circle_outline_no_alpha': 't',
'circle_shadow': 't',
'circle_soft': 't',
'cursor': 't',
'explosion': 't',
'eye_color': 't',
'eye_color_tint_mask': 't',
'flag_pole_color': 't',
'font_big': 't',
'font_extras': 't',
'font_extras2': 't',
'font_extras3': 't',
'font_extras4': 't',
'font_extras5': 't',
'font_small0': 't',
'font_small1': 't',
'font_small2': 't',
'font_small3': 't',
'font_small4': 't',
'font_small5': 't',
'font_small6': 't',
'font_small7': 't',
'fuse': 't',
'glow': 't',
'light': 't',
'light_sharp': 't',
'light_soft': 't',
'menu_button': 't',
'nub': 't',
'ouya_abutton': 't',
'page_left_right': 't',
'rgb_stripes': 't',
'scorch': 't',
'scorch_big': 't',
'scroll_widget': 't',
'scroll_widget_glow': 't',
'shadow': 't',
'shadow_sharp': 't',
'shadow_soft': 't',
'shield': 't',
'shrapnel1_color': 't',
'smoke': 't',
'soft_rect': 't',
'soft_rect2': 't',
'soft_rect_vertical': 't',
'sparks': 't',
'spinner': 't',
'spinner0': 't',
'spinner1': 't',
'spinner10': 't',
'spinner11': 't',
'spinner2': 't',
'spinner3': 't',
'spinner4': 't',
'spinner5': 't',
'spinner6': 't',
'spinner7': 't',
'spinner8': 't',
'spinner9': 't',
'start_button': 't',
'text_clear_button': 't',
'touch_arrows': 't',
'touch_arrows_actions': 't',
'ui_atlas': 't',
'ui_atlas2': 't',
'users_button': 't',
'white': 't',
'window_hsmall_vmed': 't',
'window_hsmall_vsmall': 't',
'wings': 't',
},
}
_DISPLAY_KINDS = {'strings/time/duration_value': {'t': 'millis'}}
if True: # Docs-generation hack; keep runtime tree live
audio = AssetGroup(__asset_package__, _TREE['audio'], 'audio')
meshes = AssetGroup(__asset_package__, _TREE['meshes'], 'meshes')
strings = LangStrDir(
__asset_package__,
_TREE['strings'],
'strings',
display_kinds=_DISPLAY_KINDS,
)
textures = AssetGroup(__asset_package__, _TREE['textures'], 'textures')
# 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