55 : m_MinTNSToHideNotes(PREFSMAN->m_MinTNSToHideNotes)
63 ONE(m_SpeedfAppearances);
70 void Approach(
const PlayerOptions& other,
float fDeltaSeconds);
71 [[nodiscard]]
auto GetString(
bool bForceNoteSkin =
false) const
73 [[nodiscard]] auto GetSavedPrefsString() const
80 void ResetPrefs(ResetPrefsType type);
81 void ResetSavedPrefs() { ResetPrefs(saved_prefs); };
82 void GetMods(std::vector<std::string>& AddTo,
83 bool bForceNoteSkin =
false)
const;
84 void GetTurnMods(std::vector<std::string>& AddTo);
85 void ResetModsToStringVector(std::vector<std::string> mods);
86 void ResetToggleableMods();
87 void GetLocalizedMods(std::vector<std::string>& AddTo)
const;
88 void FromString(
const std::string& sMultipleMods);
89 void SetForReplay(
bool b) { forReplay = b; }
90 bool GetForReplay()
const {
return forReplay; }
91 auto FromOneModString(
const std::string& sOneMod,
92 std::string& sErrorDetailOut)
96 void ChooseRandomModifiers();
99 [[nodiscard]]
auto ContainsTransformOrTurn() const ->
bool;
101 [[nodiscard]] auto GetInvalidatingModifiers() const
102 -> std::vector<std::
string>;
105 void PushSelf(lua_State* L);
110 return !operator==(other);
189 TRANSFORM_ATTACKMINES,
217 [[nodiscard]]
auto GetReversePercentForColumn(
int iCol)
const
220 PlayerNumber m_pn{ PLAYER_1 };
222 LifeType m_LifeType{ LifeType_Bar };
223 DrainType m_DrainType{ DrainType_Normal };
224 int m_BatteryLives{ 4 };
227 bool m_bSetScrollSpeed{
230 float m_fTimeSpacing{ 0 },
231 m_SpeedfTimeSpacing{ 1.0F };
232 float m_fMaxScrollBPM{ 0 }, m_SpeedfMaxScrollBPM{ 1.0F };
233 float m_fScrollSpeed{ 1.0F },
234 m_SpeedfScrollSpeed{ 1.0F };
235 float m_fScrollBPM{ 200 },
236 m_SpeedfScrollBPM{ 1.0F };
237 float m_fAccels[NUM_ACCELS]{}, m_SpeedfAccels[NUM_ACCELS]{};
238 float m_fEffects[NUM_EFFECTS]{}, m_SpeedfEffects[NUM_EFFECTS]{};
239 float m_fAppearances[NUM_APPEARANCES]{},
240 m_SpeedfAppearances[NUM_APPEARANCES]{};
241 float m_fScrolls[NUM_SCROLLS]{}, m_SpeedfScrolls[NUM_SCROLLS]{};
242 float m_fDark{ 0 }, m_SpeedfDark{ 1.0F };
243 float m_fBlind{ 0 }, m_SpeedfBlind{ 1.0F };
244 float m_fCover{ 0 }, m_SpeedfCover{
247 float m_fRandAttack{ 0 }, m_SpeedfRandAttack{ 1.0F };
248 float m_fNoAttack{ 0 }, m_SpeedfNoAttack{ 1.0F };
249 float m_fPlayerAutoPlay{ 0 }, m_SpeedfPlayerAutoPlay{ 1.0F };
250 float m_fPerspectiveTilt{ 0 },
251 m_SpeedfPerspectiveTilt{ 1.0F };
252 float m_fSkew{ 0 }, m_SpeedfSkew{ 1.0F };
259 float m_fPassmark{ 0 }, m_SpeedfPassmark{ 1.0F };
261 float m_fRandomSpeed{ 0 }, m_SpeedfRandomSpeed{ 1.0F };
263 bool m_bTurns[NUM_TURNS]{};
264 bool m_bTransforms[NUM_TRANSFORMS]{};
265 bool m_bMuteOnError{
false };
266 bool m_bPractice{
false };
269 TapNoteScore m_MinTNSToHideNotes;
276 bool forReplay{
false };
280 void NextAppearance();
282 void NextTransform();
283 void NextPerspective();
286 auto GetFirstAccel() ->
Accel;
287 auto GetFirstEffect() -> Effect;
289 auto GetFirstScroll() -> Scroll;
291 void SetOneAccel(
Accel a);
292 void SetOneEffect(Effect e);
294 void SetOneScroll(Scroll s);
295 void ToggleOneTurn(
Turn t);
298 auto IsEasierForSongAndSteps(
Song* pSong,
300 PlayerNumber pn)
const -> bool;