diff --git a/.efrocachemap b/.efrocachemap index ae1b6138a..71db75360 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -421,7 +421,7 @@ "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": "3775cd8b6f05c2205b7653302308acf9", + "build/assets/ba_data/data/langdata.json": "ce2f76ab5f36cbc0212d1b3c424eb954", "build/assets/ba_data/data/languages/arabic.json": "3c22e7b6d7b09a812a2e28b35c9e9241", "build/assets/ba_data/data/languages/belarussian.json": "0b60a9d4496d1213c2d0b647d346ce30", "build/assets/ba_data/data/languages/chinese.json": "fc45d2838b834889c06920ae7c2102fa", @@ -430,7 +430,7 @@ "build/assets/ba_data/data/languages/czech.json": "d18b7d1c6bf51fc81af4084ef0e69e3e", "build/assets/ba_data/data/languages/danish.json": "8e57db30c5250df2abff14a822f83ea7", "build/assets/ba_data/data/languages/dutch.json": "f4e1e8e9231cda9d1bcc7e87a7f8821e", - "build/assets/ba_data/data/languages/english.json": "131508c56b563b9552bee5535f107b5a", + "build/assets/ba_data/data/languages/english.json": "b5917c3b975155e35fedb655dbd7568c", "build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880", "build/assets/ba_data/data/languages/filipino.json": "3d9269a90a2fee164d0a7513c4f130a3", "build/assets/ba_data/data/languages/french.json": "6d20655730b1017ef187fd828b91d43c", @@ -443,14 +443,14 @@ "build/assets/ba_data/data/languages/italian.json": "eabad2faba952c426876bc07e1490d09", "build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597", "build/assets/ba_data/data/languages/malay.json": "0212e18e54efa202c17505376e5b82fb", - "build/assets/ba_data/data/languages/persian.json": "2584895475fe62b3fe49a5ea5e69b4b1", + "build/assets/ba_data/data/languages/persian.json": "859a60de6226fdf9fc24b68b7f6782b6", "build/assets/ba_data/data/languages/piratespeak.json": "7c7e3b72b87c1bcd5b04c9f64d912f0c", "build/assets/ba_data/data/languages/polish.json": "941eb816c7db9e04d6a3b8f28a64e2e8", "build/assets/ba_data/data/languages/portuguese.json": "b4463a05d65515f6812e1177c60ac666", "build/assets/ba_data/data/languages/romanian.json": "5ae206fe0b71c4015b02b86da8931c8f", "build/assets/ba_data/data/languages/russian.json": "fc64ed6b6356ea11385ee5c20748425a", "build/assets/ba_data/data/languages/serbian.json": "623fa4129a1154c2f32ed7867e56ff6a", - "build/assets/ba_data/data/languages/slovak.json": "3c08c748c96c71bd9e1d7291fb8817b6", + "build/assets/ba_data/data/languages/slovak.json": "c11c29708b3742cdc2a92b4fa0d6d29f", "build/assets/ba_data/data/languages/spanish.json": "499b464318a8c9d1fb271cf480862b57", "build/assets/ba_data/data/languages/swedish.json": "3b179e7333183c70adb0811246b09959", "build/assets/ba_data/data/languages/tamil.json": "ead39b864228696a9b0d19344bc4b5ec", @@ -4103,22 +4103,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": "13233366609a24c56012f54ded7aefc6", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "9e3b238711c4c3589a307fdc4058ba7e", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "67c4c290e7b05f8b0bfb4f9be87dfa09", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "9fbba3a76f2fc50b9951e6f3f036a32b", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "c156541560f67ea45207d18561aa96a4", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "523946201fa68a8761abd8012888a1ee", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "1e164a6146131c57bdd80650c7cd01eb", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "547282ad972d2659c7adf3cdcc0fe38c", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "f8f206e99e6515d857d03a6756432916", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "1948fefc1a65e0c09229229058d7a398", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "397cdcd79c10c35f13bda51cbf0431b8", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "c1a395b445754161e96040c0a3432471", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "1c4e960c1b621d4376c3ca0f8e876aad", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "60eea6534bc325bef60f2de3de497ebb", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "67e01108249a1ae8ec6ae106c684febf", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "2dbf2871814d9ae25d38ad0ed8c44dc5", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "5bf2fb190bf3a50a89f960334df4d305", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "ed8593ca6f1ff5b9e2531e050c709788", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "172c306c8fc50fe4d688636772baa455", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "e9a020f503a89ccbbbe45e0d5b29b2f1", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "d9be694c1b7aba9796a17f81d7abccc8", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "9cb37831a43d787f34f587fbdfccf0c2", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "b73f382527c980e6187008a4fa7c3d84", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "4501a7c845060a3754dd2b7b9e937088", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "244be2eeecafbac57442bc88d5c35172", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "d94961ab202eff037b0aca4305a646a1", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "224fb1f5cb77ce62fe755e8d6797cb18", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "429a0a6b752cbe48cca155228f791916", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "15003e60d7f2633cd56766bc0af31b4e", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "86077c01bedaf0b9d4b727df1ffad14e", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "773eb771722c4fd86394ef1160db0a5a", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "ec8fa3c1077167307ebe8b5814ad8f9a", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "33a0ae6f1ea5a0b0c60055ce01478488", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "aad882eaf2230b89973e2cf4f13c9759", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "33a0ae6f1ea5a0b0c60055ce01478488", @@ -4131,14 +4131,14 @@ "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "ae4e3f563892f6b9311c4b7284f28c11", "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "01dab862a43d9e7c4ee4e49212442d42", "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "ae4e3f563892f6b9311c4b7284f28c11", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "d24d48e0b6d35d91350b707b74dd95f5", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "c946a1405b62469889c1d596b2021753", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "92431ded412435040f3c0be770753060", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "72e4f88ff70048a2a49c907680c34121", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "0a68d461e96190865ce3457ec7c38e22", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "f8182ea0ad5537d4cf968a0b07594cff", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "996197f97e10bcea0bed1e88e8e75bdd", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "42461cf73d82008266892bf79f0634df", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "eee9e6778b27ea4722efb65b573673a6", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "18fdfa5978141a5b2f3ce553117f741e", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "2296e1d8cbec0cc429a68cde4949b8b7", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "a35f0e217ab1a526852f96dba1b469cb", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "91f829af919fd293012d9a1beccea706", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "c323032fb0f5ba9e85e96b86d34919ba", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "71207aad7fb9de8eb6c77525c402b904", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "2d17014f6f47829e1dab77cc371f125c", "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 30f5d87b3..da54f800e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.37 (build 22150, api 9, 2024-12-28) +### 1.7.37 (build 22152, api 9, 2024-12-30) - 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/config/requirements.txt b/config/requirements.txt index 54ae37d13..e4c0d9928 100644 --- a/config/requirements.txt +++ b/config/requirements.txt @@ -2,7 +2,7 @@ cpplint==2.0.0 dmgbuild==1.6.2 filelock==3.16.1 furo==2024.8.6 -mypy==1.14.0 +mypy==1.14.1 pbxproj==4.2.1 pdoc==15.0.1 pur==7.3.3 diff --git a/src/assets/ba_data/python/baclassic/_accountv1.py b/src/assets/ba_data/python/baclassic/_accountv1.py index 2ae2b02ea..515c0bba3 100644 --- a/src/assets/ba_data/python/baclassic/_accountv1.py +++ b/src/assets/ba_data/python/baclassic/_accountv1.py @@ -230,13 +230,12 @@ def have_pro(self) -> bool: if plus is None: return False - # Check our tickets-based pro upgrade and our two real-IAP based - # upgrades. Also always unlock this stuff in ballistica-core builds. + # Check various server-side purchases that mean we have pro. return bool( - plus.get_v1_account_product_purchased('upgrades.pro') + plus.get_v1_account_product_purchased('gold_pass') + or plus.get_v1_account_product_purchased('upgrades.pro') or plus.get_v1_account_product_purchased('static.pro') or plus.get_v1_account_product_purchased('static.pro_sale') - or 'ballistica' + 'kit' == babase.appname() ) def have_pro_options(self) -> bool: diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 1ed2142ca..3108bac01 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -53,7 +53,7 @@ # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 22150 +TARGET_BALLISTICA_BUILD = 22152 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 8ea356d4b..f46449f8f 100644 --- a/src/assets/ba_data/python/bauiv1lib/chest.py +++ b/src/assets/ba_data/python/bauiv1lib/chest.py @@ -148,7 +148,7 @@ def _on_chest_info_response( return if response.chest is None: - self._error('Would show general info about chests.') + self._show_about_chest_slots() return self.show_chest_actions(response.chest) @@ -310,6 +310,14 @@ def _error(self, msg: str | bui.Lstr) -> None: self._reset() bui.textwidget(edit=self._infotext, text=msg, color=(1, 0, 0)) + def _show_about_chest_slots(self) -> None: + self._reset() + msg = ( + 'This empty slot can hold a treasure chest.\n' + 'Treasure chests are earned through gameplay.' + ) + bui.textwidget(edit=self._infotext, text=msg, color=(1, 1, 1)) + @override def get_main_window_state(self) -> bui.MainWindowState: # Support recreating our window for back/refresh purposes. diff --git a/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py b/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py index c9d4efdf7..139ff2402 100644 --- a/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py +++ b/src/assets/ba_data/python/bauiv1lib/resourcetypeinfo.py @@ -57,20 +57,20 @@ def __init__( if resource_type == 'tickets': rdesc = ( - 'Use tickets to unlock characters, maps,\n' - 'minigames, and more in the store.\n' + 'Tickets can be used to unlock characters,\n' + 'maps, minigames, and more in the store.\n' '\n' - 'Earn tickets by completing achievements or\n' - 'by opening chests won in the game.' + 'Earn tickets by completing achievements\n' + 'or by opening chests won in the game.' ) texname = 'tickets' elif resource_type == 'tokens': rdesc = ( - 'Tokens can be used to speed up chest unlocks\n' - 'and skip other waits.\n' + 'Tokens have various uses in the game such as\n' + 'speeding up chest unlocks.\n' '\n' - 'You can buy packs of tokens or buy a Gold Pass\n' - 'to get infinite tokens forever.\n' + 'You can buy packs of tokens or you can buy a\n' + 'Gold Pass to get unlimited tokens.\n' ) texname = 'coin' elif resource_type == 'trophies': diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 1a9ad2906..89258c34a 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 = 22150; +const int kEngineBuildNumber = 22152; const char* kEngineVersion = "1.7.37"; const int kEngineApiVersion = 9; diff --git a/src/ballistica/ui_v1/widget/root_widget.cc b/src/ballistica/ui_v1/widget/root_widget.cc index ff23221db..0fb6163e2 100644 --- a/src/ballistica/ui_v1/widget/root_widget.cc +++ b/src/ballistica/ui_v1/widget/root_widget.cc @@ -1396,22 +1396,31 @@ void RootWidget::SetTicketsMeterText(const std::string& val) { void RootWidget::SetTokensMeterText(const std::string& val, bool gold_pass) { assert(tokens_meter_text_); assert(get_tokens_button_); - if (gold_pass) { + gold_pass_ = gold_pass; + if (gold_pass_) { get_tokens_button_->force_hide = true; // Use the infinity symbol if we have full unicode support. tokens_meter_text_->widget->SetText( g_buildconfig.enable_os_font_rendering() ? "\xE2\x88\x9E" : "inf"); - tokens_meter_text_->widget->set_color(1.0f, 0.6f, 0.1f, 0.6f); } else { get_tokens_button_->force_hide = false; tokens_meter_text_->widget->SetText(val); - tokens_meter_text_->widget->set_color(1.0f, 1.0f, 1.0f, 1.0f); } + UpdateTokensMeterTextColor_(); // May need to animate in/out. child_widgets_dirty_ = true; } +void RootWidget::UpdateTokensMeterTextColor_() { + auto oval{have_live_values_ ? 1.0f : 0.4f}; + if (gold_pass_ && have_live_values_) { + tokens_meter_text_->widget->set_color(1.0f, 0.6f, 0.1f, 0.6f); + } else { + tokens_meter_text_->widget->set_color(1.0f, 1.0f, 1.0f, oval); + } +} + void RootWidget::SetLeagueRankText(const std::string& val) { assert(league_rank_text_); league_rank_text_->widget->SetText(val); @@ -1454,6 +1463,7 @@ void RootWidget::SetXPText(const std::string& val) { } void RootWidget::SetHaveLiveValues(bool have_live_values) { + have_live_values_ = have_live_values; // auto cval{have_live_values ? 1.0f : 0.4f}; auto oval{have_live_values ? 1.0f : 0.4f}; auto oval2{have_live_values ? 1.0f : 0.4f}; @@ -1466,7 +1476,8 @@ void RootWidget::SetHaveLiveValues(bool have_live_values) { assert(tokens_meter_text_); assert(tokens_meter_icon_); - tokens_meter_text_->widget->set_color(1.0f, 1.0f, 1.0f, oval); + UpdateTokensMeterTextColor_(); + // tokens_meter_text_->widget->set_color(1.0f, 1.0f, 1.0f, oval); // tokens_meter_icon_->widget->set_color(cval, cval, cval); tokens_meter_icon_->widget->set_opacity(oval2); diff --git a/src/ballistica/ui_v1/widget/root_widget.h b/src/ballistica/ui_v1/widget/root_widget.h index 20e9dae63..2b7c085f3 100644 --- a/src/ballistica/ui_v1/widget/root_widget.h +++ b/src/ballistica/ui_v1/widget/root_widget.h @@ -73,6 +73,7 @@ class RootWidget : public ContainerWidget { void StepChildWidgets_(float dt); void AddMeter_(MeterType_ type, float h_align, float r, float g, float b, bool plus, const std::string& s); + void UpdateTokensMeterTextColor_(); std::list buttons_; std::list texts_; @@ -121,6 +122,8 @@ class RootWidget : public ContainerWidget { ToolbarVisibility toolbar_visibility_{ToolbarVisibility::kInGame}; bool child_widgets_dirty_{true}; bool in_main_menu_{}; + bool gold_pass_{}; + bool have_live_values_{}; }; } // namespace ballistica::ui_v1