diff --git a/src/OptionRowHandler.h b/src/OptionRowHandler.h index 0ad0957959..aa92663865 100644 --- a/src/OptionRowHandler.h +++ b/src/OptionRowHandler.h @@ -75,7 +75,18 @@ struct OptionRowDefinition return m_vEnabledForPlayers.find(pn) != m_vEnabledForPlayers.end(); } - OptionRowDefinition() { Init(); } + OptionRowDefinition(): m_sName(""), m_sExplanationName(""), + m_bOneChoiceForAllPlayers(false), m_selectType(SELECT_ONE), + m_layoutType(LAYOUT_SHOW_ALL_IN_ROW), m_iDefault(-1), + m_bExportOnChange(false), m_bAllowThemeItems(true), + m_bAllowThemeTitle(true), m_bAllowExplanation(true), + m_bShowChoicesListOnSelect(false) + { + m_vsChoices.clear(); + m_vEnabledForPlayers.clear(); + FOREACH_PlayerNumber( pn ) + m_vEnabledForPlayers.insert( pn ); + } void Init() { m_sName = ""; diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp index 62a4dab610..76a1b30650 100644 --- a/src/PlayerOptions.cpp +++ b/src/PlayerOptions.cpp @@ -12,8 +12,6 @@ #include "CommonMetrics.h" #include -#define ONE( arr ) { for( unsigned Z = 0; Z < ARRAYLEN(arr); ++Z ) arr[Z]=1.0f; } - ThemeMetric RANDOM_SPEED_CHANCE ( "PlayerOptions", "RandomSpeedChance" ); ThemeMetric RANDOM_REVERSE_CHANCE ( "PlayerOptions", "RandomReverseChance" ); ThemeMetric RANDOM_DARK_CHANCE ( "PlayerOptions", "RandomDarkChance" ); diff --git a/src/PlayerOptions.h b/src/PlayerOptions.h index e18095b008..aeb1c49b08 100644 --- a/src/PlayerOptions.h +++ b/src/PlayerOptions.h @@ -7,13 +7,42 @@ class Steps; class Trail; struct lua_State; +#define ONE( arr ) { for( unsigned Z = 0; Z < ARRAYLEN(arr); ++Z ) arr[Z]=1.0f; } + #include "GameConstantsAndTypes.h" #include "PlayerNumber.h" /** @brief Per-player options that are not saved between sessions. */ class PlayerOptions { public: - PlayerOptions() { Init(); }; + /** + * @brief Set up the PlayerOptions with some reasonable defaults. + * + * This code was taken from Init() to use proper initialization. */ + PlayerOptions(): m_bSetScrollSpeed(false), + m_fTimeSpacing(0), m_SpeedfTimeSpacing(1.0f), + m_fScrollSpeed(1.0f), m_SpeedfScrollSpeed(1.0f), + m_fScrollBPM(200), m_SpeedfScrollBPM(1.0f), + m_fDark(0), m_SpeedfDark(1.0f), + m_fBlind(0), m_SpeedfBlind(1.0f), + m_fCover(0), m_SpeedfCover(1.0f), + m_fRandAttack(0), m_SpeedfRandAttack(1.0f), + m_fSongAttack(0), m_SpeedfSongAttack(1.0f), + m_fPlayerAutoPlay(0), m_SpeedfPlayerAutoPlay(1.0f), + m_bSetTiltOrSkew(false), + m_fPerspectiveTilt(0), m_SpeedfPerspectiveTilt(1.0f), + m_fSkew(0), m_SpeedfSkew(1.0f), + m_fPassmark(0), m_SpeedfPassmark(1.0f), + m_fRandomSpeed(0), m_SpeedfRandomSpeed(1.0f), + m_bMuteOnError(false), m_FailType(FAIL_IMMEDIATE), + m_ScoreDisplay(SCORING_ADD), m_sNoteSkin("") + { + ZERO( m_fAccels ); ONE( m_SpeedfAccels ); + ZERO( m_fEffects ); ONE( m_SpeedfEffects ); + ZERO( m_fAppearances ); ONE( m_SpeedfAppearances ); + ZERO( m_fScrolls ); ONE( m_SpeedfScrolls ); + ZERO( m_bTurns ); ZERO( m_bTransforms ); + }; void Init(); void Approach( const PlayerOptions& other, float fDeltaSeconds ); RString GetString( bool bForceNoteSkin = false ) const;