Merge pull request #316 from kyzentun/DefaultFailPref

Reinstate DefaultFailType preference
This commit is contained in:
Colby Klein
2014-09-21 17:56:50 -07:00
9 changed files with 11 additions and 142 deletions
+1 -1
View File
@@ -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
-22
View File
@@ -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()
@@ -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
+4 -5
View File
@@ -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"
+1
View File
@@ -499,6 +499,7 @@ static const char *FailTypeNames[] = {
};
XToString( FailType );
XToLocalizedString( FailType );
StringToX( FailType );
LuaXType( FailType );
/*
+1 -1
View File
@@ -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 = "";
}
+1
View File
@@ -286,6 +286,7 @@ PrefsManager::PrefsManager() :
m_sCoursesToShowRanking ( "CoursesToShowRanking", "" ),
m_bQuirksMode ( "QuirksMode", false ),
m_DefaultFailType("DefaultFailtype", FailType_ImmediateContinue),
/* Debug: */
m_bLogToDisk ( "LogToDisk", true ),
+2 -1
View File
@@ -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<bool> m_bQuirksMode;
// Preference<RString> m_sDefaultFailType; // XXX: Fix fail bug?
Preference<FailType> m_DefaultFailType;
// Debug:
Preference<bool> m_bLogToDisk;
+1 -32
View File
@@ -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<int>, "Off","|1","|2","|3","|4","|5","|6","|7","|8") );
ADD( ConfOption( "ProgressiveStageLifebar", MovePref<int>, "Off","|1","|2","|3","|4","|5","|6","|7","|8","Insanity") );
ADD( ConfOption( "ProgressiveNonstopLifebar", MovePref<int>, "Off","|1","|2","|3","|4","|5","|6","|7","|8","Insanity") );
ADD( ConfOption( "DefaultFailType", DefaultFailType, "Immediate","ImmediateContinue","EndOfSong","Off" ) );
ADD( ConfOption( "DefaultFailType", MovePref<FailType>, "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<Premium>, "Off","Double for 1 Credit","2 Players for 1 Credit" ) );
ADD( ConfOption( "JointPremium", JointPremium, "Off","2 Players for 1 Credit" ) );