diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index d5429ea236..31ed90b626 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -531,6 +531,7 @@ Transfer Edits to USB=Transfer Edits to USB Transfer Edits from USB=Transfer Edits from USB UseUnlockSystem=Enable or disable the unlock system. VisualDelaySeconds=Calibrate display lag. +DefaultGroupOffsetSeconds=Change the Default Sync Bias Vsync=Cap your frame rate your display's refresh rate. This option only has an effect when the Display Mode is set to &oq;Full Screen&cq;. WideScreen16_9=Enable widescreen display. WideScreen16_10=Enable widescreen display. @@ -1308,6 +1309,7 @@ Undo=Undo UseUnlockSystem=Unlock System View steps data=View Steps Data VisualDelaySeconds=Visual Delay +DefaultGroupOffsetSeconds=Default Group Offset Voltage=Voltage Vsync=Wait For Vsync Warps=Warps diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 15b2fd42f4..368b6539e3 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -3067,7 +3067,7 @@ Line22="conf,EventMode" Fallback="ScreenOptionsServiceChild" NextScreen="ScreenOptionsService" PrevScreen="ScreenOptionsService" -LineNames="1,2,3,RefreshRate,FSType,4,5,6,7,8,9,10,11,13,FNR,14,17,18,19,20,21" +LineNames="1,2,3,RefreshRate,FSType,4,5,6,7,8,9,10,11,13,FNR,14,17,18,19,20,21,22" Line1="lua,ConfDisplayMode()" Line2="lua,ConfAspectRatio()" Line3="lua,ConfDisplayResolution()" @@ -3092,7 +3092,8 @@ Line17="conf,SoundVolume" Line18="conf,EnableAttackSounds" Line19="conf,EnableMineHitSound" Line20="conf,VisualDelaySeconds" -Line21="conf,RateModPreservesPitch" +Line21="conf,DefaultGroupOffsetSeconds" +Line22="conf,RateModPreservesPitch", [ScreenOptionsAdvanced] Fallback="ScreenOptionsServiceChild" diff --git a/src/Group.cpp b/src/Group.cpp index 23e6880899..d7ffc76763 100644 --- a/src/Group.cpp +++ b/src/Group.cpp @@ -43,7 +43,7 @@ Group::Group(const RString sDir, const RString &sGroupDirName) { RString Series = ""; RString bannerPath = ""; RString authorsNotes = ""; - float fOffset = 0; + float fOffset = PREFSMAN->m_fDefaultGroupOffsetSeconds; if (FILEMAN->DoesFileExist(sGroupIniPath)) { IniFile ini; @@ -65,12 +65,14 @@ Group::Group(const RString sDir, const RString &sGroupDirName) { RString sValue = ""; ini.GetValue("Group", "SyncOffset", sValue); - if (sValue.CompareNoCase("null") == 0) { - fOffset = 0; - } else if (sValue.CompareNoCase("itg") == 0) { - fOffset = 0.009f; - } else { - fOffset = StringToFloat(sValue); + if (!sValue.empty()) { + if (sValue.CompareNoCase("null") == 0) { + fOffset = 0.0f; + } else if (sValue.CompareNoCase("itg") == 0) { + fOffset = 0.009f; + } else { + fOffset = StringToFloat(sValue); + } } ini.GetValue("Group", "Year", m_iYearReleased); ini.GetValue( "Group", "Credits", credits ); diff --git a/src/PrefsManager.cpp b/src/PrefsManager.cpp index fcd0cd404a..b14801a0aa 100644 --- a/src/PrefsManager.cpp +++ b/src/PrefsManager.cpp @@ -237,6 +237,7 @@ PrefsManager::PrefsManager() : m_ShowDancingCharacters ( "ShowDancingCharacters", SDC_Random ), m_bUseUnlockSystem ( "UseUnlockSystem", false ), m_fGlobalOffsetSeconds ( "GlobalOffsetSeconds", -0.008f ), + m_fDefaultGroupOffsetSeconds ( "DefaultGroupOffsetSeconds", 0.0f ), m_iProgressiveLifebar ( "ProgressiveLifebar", 0 ), m_iProgressiveStageLifebar ( "ProgressiveStageLifebar", 0 ), m_iProgressiveNonstopLifebar ( "ProgressiveNonstopLifebar", 0 ), diff --git a/src/PrefsManager.h b/src/PrefsManager.h index 757bb131b3..d538bb8c02 100644 --- a/src/PrefsManager.h +++ b/src/PrefsManager.h @@ -240,6 +240,7 @@ public: Preference m_ShowDancingCharacters; Preference m_bUseUnlockSystem; Preference m_fGlobalOffsetSeconds; + Preference m_fDefaultGroupOffsetSeconds; Preference m_iProgressiveLifebar; Preference m_iProgressiveStageLifebar; Preference m_iProgressiveNonstopLifebar; diff --git a/src/ScreenOptionsMasterPrefs.cpp b/src/ScreenOptionsMasterPrefs.cpp index 82ca2a8447..1b7e6f4964 100644 --- a/src/ScreenOptionsMasterPrefs.cpp +++ b/src/ScreenOptionsMasterPrefs.cpp @@ -710,6 +710,12 @@ static void GlobalOffsetSeconds( int &sel, bool ToSel, const ConfOption *pConfOp MoveMap( sel, pConfOption, ToSel, mapping, ARRAYLEN(mapping) ); } +static void DefaultGroupOffsetSeconds( int &sel, bool ToSel, const ConfOption *pConfOption ) +{ + const float mapping[] = { 0.0f, 0.009f }; + MoveMap( sel, pConfOption, ToSel, mapping, ARRAYLEN(mapping) ); +} + static void EditRecordModeLeadIn(int &sel, bool to_sel, const ConfOption* conf_option) { float mapping[32]; @@ -941,6 +947,7 @@ static void InitializeConfOptions() c.AddOption( ssprintf("%+i ms", i) ); ADD( c ); } + ADD( ConfOption( "DefaultGroupOffsetSeconds", DefaultGroupOffsetSeconds, "Null","|ITG" ) ); ADD( ConfOption( "EnableAttackSounds", MovePref, "No","Yes" ) ); ADD( ConfOption( "EnableMineHitSound", MovePref, "No","Yes" ) ); ADD( ConfOption( "RateModPreservesPitch", MovePref, "No","Yes") ); diff --git a/src/SongManager.cpp b/src/SongManager.cpp index 4fddf93623..9778ff8e56 100644 --- a/src/SongManager.cpp +++ b/src/SongManager.cpp @@ -418,8 +418,6 @@ void SongManager::LoadSongDir( RString sDir, LoadingWindow *ld, bool onlyAdditio const std::vector& vpSteps = pNewSong->GetAllSteps(); for (Steps* s : vpSteps) { - // Empty TimingData means it's inherited - // from the song and is already changed. if( s->m_Timing.empty() ) continue; s->m_Timing.m_fBeat0GroupOffsetInSeconds = group->GetSyncOffset();