diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index 8215804658..c36778babb 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -659,7 +659,7 @@ Double for 1 Credit=Double for 1 Credit Drunk=Drunk Dynamic Random=Dynamic Random Echo=Echo -End of Song=End of Song +EndOfSong=End of Song FailAtEnd=Fail at end EffectSpeed=Speed EffectPitch=Pitch diff --git a/Themes/_fallback/Scripts/02 StageMods.lua b/Themes/_fallback/Scripts/02 StageMods.lua index 0dc51d8cba..3ed4f978de 100644 --- a/Themes/_fallback/Scripts/02 StageMods.lua +++ b/Themes/_fallback/Scripts/02 StageMods.lua @@ -10,28 +10,6 @@ function AreStageSongModsForced() return GAMESTATE:IsAnExtraStage() or bOni or bBattle or bRave end -local default_fail_applied= {} - -function ResetDefaultFail() - default_fail_applied= {} -end - -function SetFail() - local sFail = "" - if GetGamePref("DefaultFail") then - sFail = string.format("FailType_%s", GetGamePref("DefaultFail")) - else - sFail = "FailType_Off" - end - for pn in ivalues(GAMESTATE:GetHumanPlayers()) do - if not default_fail_applied[pn] then - GAMESTATE:GetPlayerState(pn):GetPlayerOptions("ModsLevel_Preferred"):FailSetting(sFail) - default_fail_applied[pn]= true - MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} ) - end - end -end - function ScreenSelectMusic:setupmusicstagemods() Trace( "setupmusicstagemods" ) local pm = GAMESTATE:GetPlayMode() diff --git a/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua b/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua index 3e8311486c..4026074ed1 100644 --- a/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua +++ b/Themes/_fallback/Scripts/03 ThemeAndGamePrefs.lua @@ -2,7 +2,6 @@ function InitGamePrefs() local Prefs = { - { "DefaultFail", "Immediate" }, }; local BPrefs = @@ -150,82 +149,3 @@ end; --[[ end themeoption rows ]] --[[ game option rows ]] -local fail_choices= { "Immediate","ImmediateContinue", "EndOfSong", "Off" } -function GamePrefDefaultFail() - return { - Name = "GamePrefDefaultFail"; - LayoutType = "ShowAllInRow"; - SelectType = "SelectOne"; - OneChoiceForAllPlayers = true; - ExportOnChange = false; - Choices = fail_choices; - LoadSelections = function(self, list, pn) - if ReadGamePrefFromFile("DefaultFail") ~= nil then - local default= GetGamePref("DefaultFail") - if default then - if default == "Immediate" then - list[1] = true - elseif default == "ImmediateContinue" then - list[2] = true - elseif default == "EndOfSong" or default == "AtEnd" then - list[3] = true - elseif default == "Off" then - list[4] = true - else - list[1] = true - end - else - list[1] = true - end - else - WriteGamePrefToFile("DefaultFail","Immediate") - list[1] = true - end - end; - SaveSelections = function(self, list, pn) - local val - if list[1] then - val = fail_choices[1] - elseif list[2] then - val = fail_choices[2] - elseif list[3] then - val = fail_choices[3] - elseif list[4] then - val = fail_choices[4] - else - val = fail_choices[1] - end - WriteGamePrefToFile("DefaultFail",val) - MESSAGEMAN:Broadcast("PreferenceSet", { Message == "Set Preference" } ) - THEME:ReloadMetrics() - end; - } -end - -function SongPrefFail() - -- Apply the default fail type to any players that haven't had it applied. - SetFail() - return { - Name= "Fail", - LayoutType= "ShowAllInRow", - SelectType= "SelectOne", - OneChoiceForAllPlayers= false, - ExportOnChange= false, - Choices= fail_choices, - LoadSelections= function(self, list, pn) - local fail= GAMESTATE:GetPlayerState(pn):GetPlayerOptions("ModsLevel_Preferred"):FailSetting():sub(10) - for i, c in ipairs(self.Choices) do - if c == fail then - list[i]= true - end - end - end, - SaveSelections= function(self, list, pn) - for i, c in ipairs(self.Choices) do - if list[i] then - GAMESTATE:GetPlayerState(pn):GetPlayerOptions("ModsLevel_Preferred"):FailSetting("FailType_" .. c) - end - end - end - } -end diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index d8ce79355d..6fefcbd0ea 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1816,7 +1816,7 @@ Fallback="ScreenSelectMaster" PrevScreen="ScreenInit" NextScreen="ScreenInit" # -ScreenBeginCommand=%ResetDefaultFail +ScreenBeginCommand= StopMusicOnBack=true # CoinModeChangeScreen=Branch.TitleMenu() @@ -2955,7 +2955,7 @@ Line6="conf,SoundVolume" Line7="conf,TimingWindowScale" Line8="conf,LifeDifficulty" Line9="conf,AllowW1" -LineFA="lua,GamePrefDefaultFail()" +LineFA="conf,DefaultFailType" Line10="conf,AutogenSteps" Line11="conf,ShowBanners" Line12="conf,ShowCaution" @@ -3005,7 +3005,7 @@ LineNames="3,4,8,SI,SM,11,13,14,15,16,28,29,30,31" #LineScore="lua,UserPrefScoringMode()" Line3="conf,TimingWindowScale" Line4="conf,LifeDifficulty" -Line8="lua,GamePrefDefaultFail()" +Line8="conf,DefaultFailType" LineSI="lua,SpeedModIncSize()" LineSM="lua,SpeedModIncLarge()" Line11="conf,AllowW1" @@ -3198,7 +3198,6 @@ LineNames="1,2,3,4,5,6,7,8,9,10" Line1="list,LifeType" Line2="list,BarDrain" Line3="list,BatLives" -##Line4="lua,GamePrefDefaultFail()" Line5="list,Assist" Line6="list,Rate" Line7="list,SoundEffect" @@ -3206,7 +3205,7 @@ Line8="list,AutoAdjust" Line9="list,Background" Line10="list,SaveScores" Line11="list,SaveReplays" -Line4="lua,SongPrefFail()" +Line4="list,Fail" [ScreenSplash] Class="ScreenSplash" diff --git a/src/GameConstantsAndTypes.cpp b/src/GameConstantsAndTypes.cpp index f9b366ab55..a6f6f7f2d1 100644 --- a/src/GameConstantsAndTypes.cpp +++ b/src/GameConstantsAndTypes.cpp @@ -499,6 +499,7 @@ static const char *FailTypeNames[] = { }; XToString( FailType ); XToLocalizedString( FailType ); +StringToX( FailType ); LuaXType( FailType ); /* diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp index 1020bd0dd1..a579d1483f 100644 --- a/src/PlayerOptions.cpp +++ b/src/PlayerOptions.cpp @@ -74,7 +74,7 @@ void PlayerOptions::Init() ZERO( m_bTurns ); ZERO( m_bTransforms ); m_bMuteOnError = false; - m_FailType = FailType_Immediate; + m_FailType = PREFSMAN->m_DefaultFailType; m_sNoteSkin = ""; } diff --git a/src/PrefsManager.cpp b/src/PrefsManager.cpp index 7fd7c2e6aa..54f9059add 100644 --- a/src/PrefsManager.cpp +++ b/src/PrefsManager.cpp @@ -286,6 +286,7 @@ PrefsManager::PrefsManager() : m_sCoursesToShowRanking ( "CoursesToShowRanking", "" ), m_bQuirksMode ( "QuirksMode", false ), + m_DefaultFailType("DefaultFailtype", FailType_ImmediateContinue), /* Debug: */ m_bLogToDisk ( "LogToDisk", true ), diff --git a/src/PrefsManager.h b/src/PrefsManager.h index dddacbcef7..97d40fb5c4 100644 --- a/src/PrefsManager.h +++ b/src/PrefsManager.h @@ -2,6 +2,7 @@ #define PREFSMANAGER_H #include "Preference.h" +#include "GameConstantsAndTypes.h" class IniFile; @@ -293,7 +294,7 @@ public: /** @brief Enable some quirky behavior used by some older versions of StepMania. */ Preference m_bQuirksMode; - // Preference m_sDefaultFailType; // XXX: Fix fail bug? + Preference m_DefaultFailType; // Debug: Preference m_bLogToDisk; diff --git a/src/ScreenOptionsMasterPrefs.cpp b/src/ScreenOptionsMasterPrefs.cpp index 92d319160a..7098210eeb 100644 --- a/src/ScreenOptionsMasterPrefs.cpp +++ b/src/ScreenOptionsMasterPrefs.cpp @@ -480,37 +480,6 @@ static int GetLifeDifficulty() LuaFunction( GetLifeDifficulty, GetLifeDifficulty() ); -static void DefaultFailType( int &sel, bool ToSel, const ConfOption *pConfOption ) -{ - if( ToSel ) - { - PlayerOptions po; - po.FromString( PREFSMAN->m_sDefaultModifiers ); - sel = po.m_FailType; - } - else - { - PlayerOptions po; - SongOptions so; - GetPrefsDefaultModifiers( po, so ); - - switch( sel ) - { - case 0: po.m_FailType = FailType_Immediate; break; - case 1: po.m_FailType = FailType_ImmediateContinue; break; - case 2: po.m_FailType = FailType_EndOfSong; break; - case 3: po.m_FailType = FailType_Off; break; - default: - { - LOG->Warn("Invalid fail type %d! Going to use the default...", sel); - po.m_FailType = FailType_Immediate; break; - } - } - - SetPrefsDefaultModifiers( po, so ); - } -} - // Graphic options struct res_t { @@ -739,7 +708,7 @@ static void InitializeConfOptions() ADD( ConfOption( "ProgressiveLifebar", MovePref, "Off","|1","|2","|3","|4","|5","|6","|7","|8") ); ADD( ConfOption( "ProgressiveStageLifebar", MovePref, "Off","|1","|2","|3","|4","|5","|6","|7","|8","Insanity") ); ADD( ConfOption( "ProgressiveNonstopLifebar", MovePref, "Off","|1","|2","|3","|4","|5","|6","|7","|8","Insanity") ); - ADD( ConfOption( "DefaultFailType", DefaultFailType, "Immediate","ImmediateContinue","EndOfSong","Off" ) ); + ADD( ConfOption( "DefaultFailType", MovePref, "Immediate","ImmediateContinue","EndOfSong","Off" ) ); ADD( ConfOption( "CoinsPerCredit", CoinsPerCredit, "|1","|2","|3","|4","|5","|6","|7","|8","|9","|10","|11","|12","|13","|14","|15","|16" ) ); ADD( ConfOption( "Premium", MovePref, "Off","Double for 1 Credit","2 Players for 1 Credit" ) ); ADD( ConfOption( "JointPremium", JointPremium, "Off","2 Players for 1 Credit" ) );