diff --git a/.efrocachemap b/.efrocachemap index dee26ff2..ffa19104 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -432,21 +432,21 @@ "build/assets/ba_data/audio/zoeOw.ogg": "b2d705c31c9dcc1efdc71394764c3beb", "build/assets/ba_data/audio/zoePickup01.ogg": "e9366dc2d2b8ab8b0c4e2c14c02d0789", "build/assets/ba_data/audio/zoeScream01.ogg": "903e0e45ee9b3373e9d9ce20c814374e", - "build/assets/ba_data/data/langdata.json": "5e1dccd1106faa1a8b0d2c1cb15429dd", + "build/assets/ba_data/data/langdata.json": "b0b6a98af716f2f7eff47f9994b05525", "build/assets/ba_data/data/languages/arabic.json": "32b9849fb8389b8c7798f0b744620318", "build/assets/ba_data/data/languages/belarussian.json": "009b452aa308bf2b2f7e92d9b78ba5ff", - "build/assets/ba_data/data/languages/chinese.json": "168b529f2d55d714886be57f162f6842", + "build/assets/ba_data/data/languages/chinese.json": "1fba8375ac387218fcebfc46d067f437", "build/assets/ba_data/data/languages/chinesetraditional.json": "32f53581b80ce723edbe8aa7956e6727", "build/assets/ba_data/data/languages/croatian.json": "66be7ada024c5d5cf813a07b75217e48", "build/assets/ba_data/data/languages/czech.json": "3418bee44e69be13b7f72996abe96921", "build/assets/ba_data/data/languages/danish.json": "8e57db30c5250df2abff14a822f83ea7", "build/assets/ba_data/data/languages/dutch.json": "4ba5bbcc0fecddd0aac6ee2c165d1e40", - "build/assets/ba_data/data/languages/english.json": "739c318260ddd4cff781cba50d5cab1c", + "build/assets/ba_data/data/languages/english.json": "75f12b47493e373a1c5b807f9f52f1ff", "build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880", "build/assets/ba_data/data/languages/filipino.json": "1894fc331dcad7ce9cf4c180843f548f", "build/assets/ba_data/data/languages/french.json": "6d20655730b1017ef187fd828b91d43c", "build/assets/ba_data/data/languages/german.json": "bc656f1ada467161c23546f48d0dacc5", - "build/assets/ba_data/data/languages/gibberish.json": "067479eeefd6508bc4d1019b7ff92017", + "build/assets/ba_data/data/languages/gibberish.json": "ec52fa37ee2bfaf4dd74ee69602ddd49", "build/assets/ba_data/data/languages/greek.json": "d28d1092fbb00ed857cbd53124c0dc78", "build/assets/ba_data/data/languages/hindi.json": "567e6976b3c72f891431ad7fcc62ab16", "build/assets/ba_data/data/languages/hungarian.json": "af801baffb2c06460635dfb04c34bb3e", @@ -459,16 +459,16 @@ "build/assets/ba_data/data/languages/polish.json": "993b612c5854fc42a78726ed09c65251", "build/assets/ba_data/data/languages/portuguese.json": "66fbf94a6ee7b2bc0d9efd6056302078", "build/assets/ba_data/data/languages/romanian.json": "b04345d8c7631d657a69c73eb7be755a", - "build/assets/ba_data/data/languages/russian.json": "eca8fe1ef8343aee559e49c49805b850", + "build/assets/ba_data/data/languages/russian.json": "70cd57440e4cbb49f2fa0c79dedcafbe", "build/assets/ba_data/data/languages/serbian.json": "623fa4129a1154c2f32ed7867e56ff6a", "build/assets/ba_data/data/languages/slovak.json": "c11c29708b3742cdc2a92b4fa0d6d29f", - "build/assets/ba_data/data/languages/spanish.json": "c59f1f14083037b1ba48ffa0f12678ab", + "build/assets/ba_data/data/languages/spanish.json": "4233f57a07b9900dd1a7ac471964c36b", "build/assets/ba_data/data/languages/swedish.json": "3b179e7333183c70adb0811246b09959", "build/assets/ba_data/data/languages/tamil.json": "ead39b864228696a9b0d19344bc4b5ec", "build/assets/ba_data/data/languages/thai.json": "383540a1e9c7c131ac579f51afc87471", - "build/assets/ba_data/data/languages/turkish.json": "974f54f3d2b4c4e8613de177e5d401f7", + "build/assets/ba_data/data/languages/turkish.json": "8a406f0fd91b55e3f8e57cd92aea5a52", "build/assets/ba_data/data/languages/ukrainian.json": "0db55824759119aca74d2ee8ffe6daae", - "build/assets/ba_data/data/languages/venetian.json": "e0666c6a1db1792d895fcb250e59861b", + "build/assets/ba_data/data/languages/venetian.json": "c7facf9fe1d6d9d4a4130d7e5caa3ee7", "build/assets/ba_data/data/languages/vietnamese.json": "017d8aa346d0c23a229a8a9acccf79a1", "build/assets/ba_data/data/maps/big_g.json": "1dd301d490643088a435ce75df971054", "build/assets/ba_data/data/maps/bridgit.json": "6aea74805f4880cc11237c5734a24422", @@ -4174,22 +4174,22 @@ "build/assets/windows/Win32/ucrtbased.dll": "bfd1180c269d3950b76f35a63655e9e1", "build/assets/windows/Win32/vc_redist.x86.exe": "15a5f1f876503885adbdf5b3989b3718", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "2a98e8537d1be14b704320178401dcb0", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "b2912201caff5a99e2d529996f9acd13", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "7850d4b60c26d9f7ec15d114300da092", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "f372e8a06b3a9db75a7af166ee880961", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "4c5a477096ea81f7a45462d5902c50f0", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "c043a1d836f859030df99f81743a3ee9", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "9837a541f38e3c9a1a17153d24b160fb", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "657d984e5180b9559100cfed1deb2459", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "7448454d0fe27f15b100611f9b4adbc2", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "9f2c90595bb7b11c19d7ced2ac317722", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "0788dd8c40d6588ec0ae6fc8aa1da45a", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "8371b2a3e5e4362c07bbb230993fb56d", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "ef1a6c563c6dd20f50957616d5146dd0", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "0a0f773208a8345af40394be223e7c85", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "bb2808447069e408315fbbf71e521626", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "bae7dd80f8ebdc6868a7245e67b8b2b5", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "8164b5b953657132b7c39c9f13227f48", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "ee3d26f5f11fb6354c42ae5be5aa0fef", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "df2bf5407a47a4df198e0b59d524e8c2", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "9aaab1a917b42cded055807c71862cee", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "a38f59eb016e3eb4daa684fa62d6c5ac", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "c97cf08a9eb43d9b81b8ad32514d1385", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "4b65319473ddcabe0ae96d64339f7b6e", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "738c7c46996451bccd6911029d2608c9", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "ef609dbbdd0a3fca8029fa1a92d2ad51", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "5521a866644a6bc4b5cf8fb028c19c18", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "b54c86bfefaa1745261026f7f5fdbbc8", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "edaba5cad75c49b44cc65afa94e7bdaa", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "7663795a2ddcbb3cf1489f7ce1e20949", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "c5ded9ae8d323701c6ecc54c067bc0ed", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "91bf2031f53cf66431665057d4401e78", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "2e2277f0135bf625457bb1d002cfa074", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "7497894d2943b75b6ac830cdba8481af", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "273a6f64cac5a233694223b85cd0f22b", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "7497894d2943b75b6ac830cdba8481af", @@ -4202,14 +4202,14 @@ "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "7e071962108a8d1727525fb331b70ee4", "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "55a2b0c2d1db4d70627c901471d05fc7", "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "7e071962108a8d1727525fb331b70ee4", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "0d01609a856da6282e6b20608a9b4c54", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "abb08d747d8dce0bd300968c3c2e6d99", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "49e83bb1bb015500ead9551aea47c307", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "1c18c16ad0d3e02fb59ecee8a4c3ce28", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "dac816f68625b79380d2e55f54bb7578", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "544c697490194d58369e3065f676b52c", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "a0f96dccb1fd507a93f9de3fb653a1ac", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "61353b2caae64f70a4d3ee491a05b7cb", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "6ed435002883f39fddce160aa35ca275", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "4e4c08848e0045b11faa5b02cca613c1", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "9a5ae878b0734490c671a0be15645efd", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "8b4b1eea99d3f10efc096f3db83fc049", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "b40ecd37983d0e1cad60a2f924b01c6e", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "42731489fc3085e3cd8c4e732b3eaf6f", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "4592e6a2a94a0f6c355520b7167235a5", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "29ed912c6c6e5ae290ddbd45403900de", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "794d258d59fd17a61752843a9a0551ad", "src/ballistica/base/mgen/pyembed/binding_base.inc": "06042d31df0ff9af96b99477162e2a91", diff --git a/CHANGELOG.md b/CHANGELOG.md index c464ae77..359ed629 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.37 (build 22209, api 9, 2025-01-18) +### 1.7.37 (build 22210, api 9, 2025-01-19) - Bumping api version to 9. As you'll see below, there's some UI changes that will require a bit of work for any UI mods to adapt to. If your mods don't touch UI stuff at all you can simply bump your api version and call it a day. diff --git a/src/assets/ba_data/python/baclassic/_displayitem.py b/src/assets/ba_data/python/baclassic/_displayitem.py index 57b0e0d7..da8215ca 100644 --- a/src/assets/ba_data/python/baclassic/_displayitem.py +++ b/src/assets/ba_data/python/baclassic/_displayitem.py @@ -99,7 +99,7 @@ def show_display_item( scale=width * 0.006, size=(0, 0), text=bauiv1.Lstr( - translate=('serverResponses', itemwrapper.description), + translate=('displayItemNames', itemwrapper.description), subs=pairs_from_flat(subs), ), maxwidth=width * 0.9, diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 81c4b29e..a0286663 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -53,7 +53,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 22209 +TARGET_BALLISTICA_BUILD = 22210 TARGET_BALLISTICA_VERSION = '1.7.37' diff --git a/src/assets/ba_data/python/bauiv1lib/chest.py b/src/assets/ba_data/python/bauiv1lib/chest.py index 6cb53c11..a17f7155 100644 --- a/src/assets/ba_data/python/bauiv1lib/chest.py +++ b/src/assets/ba_data/python/bauiv1lib/chest.py @@ -294,7 +294,10 @@ class ChestWindow(bui.MainWindow): ) bui.textwidget( - edit=self._title_text, text=f'{chest.appearance.name} Chest' + edit=self._title_text, + text=bui.Lstr( + translate=('displayItemNames', chest.appearance.pretty_name) + ), ) imgsize = 145 @@ -387,7 +390,7 @@ class ChestWindow(bui.MainWindow): self._open_now_texts.append( bui.textwidget( parent=self._root_widget, - text='Open', + text=bui.Lstr(resource='openText'), position=( self._width * 0.5 + boffsx, self._height + bposy + self._yoffs + bheight * 0.5, @@ -405,7 +408,7 @@ class ChestWindow(bui.MainWindow): self._open_now_texts.append( bui.textwidget( parent=self._root_widget, - text='Open Now', + text=bui.Lstr(resource='openNowText'), position=( self._width * 0.5 + boffsx, self._height + bposy + self._yoffs + bheight * 1.15, @@ -562,7 +565,7 @@ class ChestWindow(bui.MainWindow): # Title. bui.textwidget( parent=self._root_widget, - text='Prize Odds', + text=bui.Lstr(resource='chests.prizeOddsText'), color=(0.7, 0.65, 1, 0.5), flatness=1.0, shadow=1.0, @@ -625,10 +628,12 @@ class ChestWindow(bui.MainWindow): # Show decimals only if we get very small percentages (looks # better than rounding as '0%'). percenttxt = ( - f'{percent:.2f}' - if percent < 0.1 + f'{percent:.2f}%:' + if percent < 0.095 else ( - f'{percent:.1f}' if percent < 1.0 else f'{round(percent)}%:' + f'{percent:.1f}%:' + if percent < 0.95 + else f'{round(percent)}%:' ) ) diff --git a/src/assets/ba_data/python/bauiv1lib/inventory.py b/src/assets/ba_data/python/bauiv1lib/inventory.py index 8fbafa27..1c0458e7 100644 --- a/src/assets/ba_data/python/bauiv1lib/inventory.py +++ b/src/assets/ba_data/python/bauiv1lib/inventory.py @@ -58,7 +58,7 @@ class InventoryWindow(bui.MainWindow): parent=self._root_widget, position=(0, height - 45 + yoffs), size=(width, 25), - text='INVENTORY', + text=bui.Lstr(resource='inventoryText'), color=bui.app.ui_v1.title_color, h_align='center', v_align='center', diff --git a/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py b/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py index c0e963a0..eb92e28a 100644 --- a/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py +++ b/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py @@ -58,25 +58,14 @@ class ResourceTypeInfoWindow(PopupWindow): max_rdesc_height = 160 + rdesc: bui.Lstr | str + if resource_type == 'tickets': yoffs -= 20 - rdesc = ( - 'Tickets can be used to unlock characters,\n' - 'maps, minigames, and more in the store.\n' - '\n' - 'Tickets can be found in chests won through\n' - 'campaigns, tournaments, and achievements.' - ) + rdesc = bui.Lstr(resource='ticketsDescriptionText') texname = 'tickets' elif resource_type == 'tokens': - rdesc = ( - 'Tokens are used to speed up chest unlocks\n' - 'and for other game and account features.\n' - '\n' - 'You can win tokens in the game or buy them\n' - 'in packs. Or buy a Gold Pass for infinite\n' - 'tokens and never hear about them again.' - ) + rdesc = bui.Lstr(resource='tokens.tokensDescriptionText') texname = 'coin' bwidth = 200 bheight = 50 diff --git a/src/assets/ba_data/python/bauiv1lib/store/browser.py b/src/assets/ba_data/python/bauiv1lib/store/browser.py index f08213b1..1c53c6f4 100644 --- a/src/assets/ba_data/python/bauiv1lib/store/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/store/browser.py @@ -917,11 +917,7 @@ class StoreBrowserWindow(bui.MainWindow): subs=[ ( '${SETTINGS}', - bui.Lstr( - resource=( - 'accountSettingsWindow.titleText' - ) - ), + bui.Lstr(resource='inventoryText'), ), ( '${PLAYER_PROFILES}', diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 1536b299..2c4c4015 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 22209; +const int kEngineBuildNumber = 22210; const char* kEngineVersion = "1.7.37"; const int kEngineApiVersion = 9; diff --git a/tools/bacommon/bs.py b/tools/bacommon/bs.py index 0447e704..b0c4fdba 100644 --- a/tools/bacommon/bs.py +++ b/tools/bacommon/bs.py @@ -50,6 +50,31 @@ class ClassicChestAppearance(Enum): L5 = 'l5' L6 = 'l6' + @property + def pretty_name(self) -> str: + """Pretty name for the chest in English.""" + # pylint: disable=too-many-return-statements + cls = type(self) + + if self is cls.UNKNOWN: + return 'Unknown Chest' + if self is cls.DEFAULT: + return 'Chest' + if self is cls.L1: + return 'L1 Chest' + if self is cls.L2: + return 'L2 Chest' + if self is cls.L3: + return 'L3 Chest' + if self is cls.L4: + return 'L4 Chest' + if self is cls.L5: + return 'L5 Chest' + if self is cls.L6: + return 'L6 Chest' + + assert_never(self) + @ioprepped @dataclass @@ -147,8 +172,9 @@ class DisplayItem(IOMultiType[DisplayItemTypeID]): """Return a string description and subs for the item. These decriptions are baked into the DisplayItemWrapper and - should be accessed from there by the client. This should only be - called on the server side when doing said baking. + should be accessed from there when available. This allows + clients to give descriptions even for newer display items they + don't recognize. """ raise NotImplementedError() @@ -246,7 +272,7 @@ class ChestDisplayItem(DisplayItem): @override def get_description(self) -> tuple[str, list[tuple[str, str]]]: - return '${TYPE} Chest', [('${TYPE}', self.appearance.name.capitalize())] + return self.appearance.pretty_name, [] @ioprepped