From ca1f2b70d25483eda31471203d058a40b00f22f3 Mon Sep 17 00:00:00 2001 From: Kelsey Date: Fri, 24 Apr 2026 02:01:43 -0700 Subject: [PATCH 1/3] Add WIP pano save indicator --- images/hud/spinner_saving_strip.tga | Bin 0 -> 38909 bytes layout/hud/hud.xml | 1 + layout/hud/save-indicator.xml | 22 ++++++++++++ layout/pages/settings/interface.xml | 5 +++ localization/panorama_english.txt | 15 ++++++-- scripts/hud/save-indicator.ts | 54 ++++++++++++++++++++++++++++ scripts/util/panel-registration.ts | 1 + styles/hud/save-indicator.scss | 22 ++++++++++++ 8 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 images/hud/spinner_saving_strip.tga create mode 100644 layout/hud/save-indicator.xml create mode 100644 scripts/hud/save-indicator.ts create mode 100644 styles/hud/save-indicator.scss diff --git a/images/hud/spinner_saving_strip.tga b/images/hud/spinner_saving_strip.tga new file mode 100644 index 0000000000000000000000000000000000000000..fa877b851b09c9e4ac78658502c99af39fc78648 GIT binary patch literal 38909 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 SIqKNO2Q8g{)G_lWHT_@tUULor literal 0 HcmV?d00001 diff --git a/layout/hud/hud.xml b/layout/hud/hud.xml index 4304f3df..8988483f 100644 --- a/layout/hud/hud.xml +++ b/layout/hud/hud.xml @@ -17,6 +17,7 @@ + diff --git a/layout/hud/save-indicator.xml b/layout/hud/save-indicator.xml new file mode 100644 index 00000000..53482d2b --- /dev/null +++ b/layout/hud/save-indicator.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/layout/pages/settings/interface.xml b/layout/pages/settings/interface.xml index 221dbc90..6e72e182 100644 --- a/layout/pages/settings/interface.xml +++ b/layout/pages/settings/interface.xml @@ -135,6 +135,11 @@ hasdocspage="false" viewgameduringedit="true" /> + + + + + diff --git a/localization/panorama_english.txt b/localization/panorama_english.txt index 62255d41..af66b3e9 100644 --- a/localization/panorama_english.txt +++ b/localization/panorama_english.txt @@ -94,9 +94,6 @@ "HL2_Grenade" "Fragmentation Grenade" "HL2_RPG" "RPG\n(Rocket-Propelled Grenade)" "HL2_Bugbait" "Pheropod\n(Bugbait)" - - "HL2_SAVING" "Saving..." - "HL2_Saved" "Saved." "HL2_SetupMicrophone" "Configure Advanced Microphone Settings" "HL2_SetupMicrophoneSteam" "The Steam Overlay is currently disabled.\nPlease enable the Steam Overlay or configure your microphone settings through the Steam client." @@ -271,6 +268,15 @@ "Instructor_SS_Control" "Press to Control Other Player" "Paint_Instructor_teach_bounce_suppression" "Hold to prevent bouncing" + + "PORTAL2_Hud_SavingGame" "Saving Game..." + "PORTAL2_Hud_GameSaved" "Game Saved." + + "PORTAL2_Hud_AutoSavingGame" "Autosaving Game..." + "PORTAL2_Hud_GameAutoSaved" "Game Autosaved." + + "PORTAL2_Hud_SavingProfile" "Saving Profile..." + "PORTAL2_Hud_ProfileSaved" "Profile Saved." // Invites "P2COOP_Invite_Title" "Portal 2: Commnuity Edition Invite" @@ -795,6 +801,9 @@ "Settings_Menu_Movie" "Main Menu Video Background" "Settings_Menu_Movie_Info" "Enables the animated main menu background. May be a minor performance loss when the menu is open." + "Settings_Hud_Autosave" "Autosave Indicator" + "Settings_Hud_Autosave_Info" "Show an on-screen indicator when the game is automatically saved." + // Settings - Personalization "Settings_Customization" "Customization" diff --git a/scripts/hud/save-indicator.ts b/scripts/hud/save-indicator.ts new file mode 100644 index 00000000..a321b7b8 --- /dev/null +++ b/scripts/hud/save-indicator.ts @@ -0,0 +1,54 @@ +'use strict'; + +class SaveIndicator { + static fadeTimer: uuid | undefined = undefined; + static isAutoSave: boolean = false; + + static { + $.RegisterForUnhandledEvent('GameSaved', this.onSaveStarted.bind(this)); + $.RegisterForUnhandledEvent('LayoutReloaded', this.hide.bind(this)); + $.RegisterForUnhandledEvent('LevelInitPostEntity', this.hide.bind(this)); + } + + static onSaveStarted(save_name: string, save_type: SaveType) { + if (!GameInterfaceAPI.GetSettingBool("save_hud")) return; + + if (save_type == SaveType.Autosave) { + if (!GameInterfaceAPI.GetSettingBool("save_hud_autosave")) return; + this.isAutoSave = true; + } else { + this.isAutoSave = false; + } + + const label = $.GetContextPanel().FindChildInLayoutFile