From 2dc61769fc2b12cf3b9aa510130e9d5d052ab85d Mon Sep 17 00:00:00 2001 From: dando92 Date: Sun, 30 Mar 2025 18:47:54 +0200 Subject: [PATCH] Added logic to reset coins at startup --- src/Bookkeeper.cpp | 7 +++++++ src/PrefsManager.cpp | 1 + src/PrefsManager.h | 1 + src/ScreenOptionsMasterPrefs.cpp | 1 + 4 files changed, 10 insertions(+) diff --git a/src/Bookkeeper.cpp b/src/Bookkeeper.cpp index 279d383129..8d18f3014d 100644 --- a/src/Bookkeeper.cpp +++ b/src/Bookkeeper.cpp @@ -18,6 +18,13 @@ static const RString COINS_DAT = "Save/Coins.xml"; Bookkeeper::Bookkeeper() { + // GameState resets the coin count, but once the Bookkeeper is initialized, the coin count is overwritten by the ReadFromDisk function. + // Resetting the CoinsFile before reloading allows the game to start without credits. + if (PREFSMAN->m_bResetCoinsAtStartup) + { + WriteCoinsFile(0); + } + ClearAll(); ReadFromDisk(); } diff --git a/src/PrefsManager.cpp b/src/PrefsManager.cpp index 4a8bc8f560..c3386150e5 100644 --- a/src/PrefsManager.cpp +++ b/src/PrefsManager.cpp @@ -267,6 +267,7 @@ PrefsManager::PrefsManager() : m_bCelShadeModels ( "CelShadeModels", false ), // Work-In-Progress.. disable by default. m_bPreferredSortUsesGroups ( "PreferredSortUsesGroups", true ), m_fDebounceCoinInputTime ( "DebounceCoinInputTime", 0 ), + m_bResetCoinsAtStartup ( "ResetCoinsAtStartup", false ), m_fPadStickSeconds ( "PadStickSeconds", 0 ), m_EditRecordModeLeadIn ("EditRecordModeLeadIn", 1.0f ), diff --git a/src/PrefsManager.h b/src/PrefsManager.h index 1c76fca8df..e3eb3e4a6f 100644 --- a/src/PrefsManager.h +++ b/src/PrefsManager.h @@ -270,6 +270,7 @@ public: Preference m_bCelShadeModels; Preference m_bPreferredSortUsesGroups; Preference m_fDebounceCoinInputTime; // allow users to apply a distinct debounce to coin input + Preference m_bResetCoinsAtStartup; // Number of seconds it takes for a button on the controller to release // after pressed. diff --git a/src/ScreenOptionsMasterPrefs.cpp b/src/ScreenOptionsMasterPrefs.cpp index af0c4619e8..ff4ff525b8 100644 --- a/src/ScreenOptionsMasterPrefs.cpp +++ b/src/ScreenOptionsMasterPrefs.cpp @@ -879,6 +879,7 @@ static void InitializeConfOptions() ADD( ConfOption( "DefaultFailType", DefaultFailType, DefaultFailChoices ) ); ADD( ConfOption( "CoinsPerCredit", CoinsPerCredit, "|1","|2","|3","|4","|5","|6","|7","|8","|9","|10","|11","|12","|13","|14","|15","|16" ) ); ADD( ConfOption( "MaxNumCredits", MaxNumCredits, "|20","|40","|60","|80","|100" ) ); + ADD( ConfOption( "ResetCoinsAtStartup", MovePref, "No", "Yes")); ADD( ConfOption( "Premium", MovePref, "Off","Double for 1 Credit","2 Players for 1 Credit" ) ); ADD( ConfOption( "JointPremium", JointPremium, "Off","2 Players for 1 Credit" ) ); g_ConfOptions.back().m_sPrefName = "Premium";