Etterna 0.74.4
Loading...
Searching...
No Matches
PrefsManager.h
1#ifndef PREFSMANAGER_H
2#define PREFSMANAGER_H
3
4#include "Etterna/Models/Misc/GameConstantsAndTypes.h"
5#include "Etterna/Models/Misc/Preference.h"
6
7class IniFile;
8
9void
10ValidateDisplayAspectRatio(float& val);
11
12enum MusicWheelUsesSections
13{
14 MusicWheelUsesSections_NEVER,
15 MusicWheelUsesSections_ALWAYS,
16 MusicWheelUsesSections_ABC_ONLY,
17 NUM_MusicWheelUsesSections,
18 MusicWheelUsesSections_Invalid
19};
20enum Maybe
21{
22 Maybe_ASK,
23 Maybe_NO,
24 Maybe_YES,
25 NUM_Maybe,
26 Maybe_Invalid
27};
28enum GetRankingName
29{
30 RANKING_OFF,
31 RANKING_ON,
32 RANKING_LIST,
33 NUM_GetRankingName,
34 GetRankingName_Invalid
35};
36enum RandomBackgroundMode
37{
38 BGMODE_OFF,
39 BGMODE_ANIMATIONS,
40 NUM_RandomBackgroundMode,
41 RandomBackgroundMode_Invalid
42};
43enum ImageCacheMode
44{
45 IMGCACHE_OFF,
46 IMGCACHE_LOW_RES_PRELOAD, // preload low-res on start
47 IMGCACHE_LOW_RES_LOAD_ON_DEMAND, // preload low-res on screen load
48 IMGCACHE_FULL,
49 NUM_ImageCacheMode,
50 ImageCacheMode_Invalid
51};
52enum HighResolutionTextures
53{
54 HighResolutionTextures_Auto,
55 HighResolutionTextures_ForceOff,
56 HighResolutionTextures_ForceOn,
57 NUM_HighResolutionTextures,
58 HighResolutionTextures_Invalid,
59};
60enum AttractSoundFrequency
61{
62 ASF_NEVER,
63 ASF_EVERY_TIME,
64 ASF_EVERY_2_TIMES,
65 ASF_EVERY_3_TIMES,
66 ASF_EVERY_4_TIMES,
67 ASF_EVERY_5_TIMES,
68 NUM_AttractSoundFrequency,
69 AttractSoundFrequency_Invalid
70};
71enum BackgroundFitMode
72{
73 BFM_CoverDistort,
74 BFM_CoverPreserve,
75 BFM_FitInside,
76 BFM_FitInsideAvoidLetter,
77 BFM_FitInsideAvoidPillar,
78 NUM_BackgroundFitMode,
79 BackgroundFitMode_Invalid
80};
81
84{
85 public:
88
89 void Init();
90
91 void SetCurrentGame(const std::string& sGame);
92 auto GetCurrentGame() -> std::string { return m_sCurrentGame; }
93
94 protected:
95 Preference<std::string> m_sCurrentGame;
96
97 public:
98 // Game-specific prefs. Copy these off and save them every time the game
99 // changes
100 Preference<std::string> m_sAnnouncer;
101 Preference<std::string> m_sDefaultModifiers;
102
103 protected:
104 void StoreGamePrefs();
105 void RestoreGamePrefs();
107 {
108 // See GamePrefs::GamePrefs in PrefsManager.cpp for some default
109 // settings
110 GamePrefs();
111
112 std::string m_sAnnouncer;
113 std::string m_sDefaultModifiers;
114 };
115 std::map<std::string, GamePrefs> m_mapGameNameToGamePrefs;
116
117 public:
119 Preference<bool> m_bFullscreenIsBorderlessWindow;
120 Preference<bool> m_bWindowed;
121 Preference<std::string> m_sDisplayId;
122 Preference<int> m_iDisplayWidth;
123 Preference<int> m_iDisplayHeight;
124 Preference<float> m_fDisplayAspectRatio;
125 Preference<int> m_iDisplayColorDepth;
126 Preference<int> m_iTextureColorDepth;
127 Preference<int> m_iMovieColorDepth;
128 Preference<bool> m_bStretchBackgrounds;
130 Preference<HighResolutionTextures> m_HighResolutionTextures;
131 Preference<int> m_iMaxTextureResolution;
132 Preference<int> m_iRefreshRate;
133 Preference<bool> m_bAllowMultitexture;
134 Preference<float> m_bAllowedLag;
135 Preference<bool> m_bShowStats;
136 Preference<bool> m_bShowSkips;
137 Preference<bool> m_bShowMouseCursor;
138 Preference<bool> m_bVsync;
139 Preference<bool> m_FastNoteRendering;
140 Preference<bool> m_bInterlaced;
141 Preference<bool> m_bPAL;
142 Preference<bool> m_bDelayedTextureDelete;
143 Preference<bool> m_bDelayedModelDelete;
144 Preference<ImageCacheMode> m_ImageCache;
145 Preference<bool> m_bFastLoad;
146 Preference<bool> m_bBlindlyTrustCache;
147 Preference<bool> m_bShrinkSongCache;
148 Preference<std::string> m_NeverCacheList;
149
150 Preference<bool> m_bOnlyDedicatedMenuButtons;
151 Preference<bool> m_bMenuTimer;
152
153 Preference<float> m_fLifeDifficultyScale;
154 Preference<float> m_fBGBrightness;
155 Preference<bool> m_bShowBackgrounds;
156
157 Preference<bool> m_bDelayedBack;
158 Preference<bool> m_AllowStartToGiveUp;
159 Preference<bool> m_AllowHoldForOptions;
160 Preference<bool> m_bShowNativeLanguage;
161 Preference<bool> m_bFullTapExplosions;
162 Preference<bool> m_bNoGlow;
163 Preference<bool> m_bReplaysUseScoreMods;
164 Preference<int> m_iArcadeOptionsNavigation;
165 Preference<bool> m_ThreeKeyNavigation;
166 Preference<MusicWheelUsesSections> m_MusicWheelUsesSections;
167 Preference<int> m_iMusicWheelSwitchSpeed;
168 Preference<bool> m_bSortBySSRNorm;
169 Preference<bool> m_bPackProgressInWheel;
170 Preference<bool> m_bEventMode;
171 Preference<TapNoteScore> m_MinTNSToHideNotes;
172 Preference<bool> m_bForceNoDoubleSetup;
173
174 Preference<Maybe> m_ShowSongOptions;
175 Preference<float> m_fMinPercentToSaveScores;
176 Preference<float> m_fGlobalOffsetSeconds;
177 Preference<std::string> m_sLanguage;
178 Preference<int> m_iCenterImageTranslateX;
179 Preference<int> m_iCenterImageTranslateY;
180 Preference<int> m_fCenterImageAddWidth;
181 Preference<int> m_fCenterImageAddHeight;
182 Preference<bool> EnablePitchRates;
183 Preference<bool> LiftsOnOsuHolds;
184 Preference<bool> m_bEasterEggs;
185 Preference<bool> m_bForceSnaps;
186 Preference<bool> m_AllowMultipleToasties;
187 Preference<bool> m_bUseMidGrades;
188
189 // Number of seconds it takes for a button on the controller to release
190 // after pressed.
191 Preference<float> m_fPadStickSeconds;
192
193 // Useful for non 4:3 displays and resolutions < 640x480 where texels don't
194 // std::map directly to pixels.
195 Preference<bool> m_bForceMipMaps;
196 Preference<bool> m_bTrilinearFiltering; // has no effect without mipmaps on
197 Preference<bool> m_bAnisotropicFiltering; // has no effect without mipmaps
198 // on. Not mutually exclusive
199 // with trilinear.
200
201 Preference<std::string> m_sAdditionalSongFolders;
202 Preference<std::string> m_sAdditionalFolders;
203
204 // failsafe
205 Preference<std::string> m_sDefaultTheme;
206
207 Preference<std::string> m_sLastSeenVideoDriver;
208 Preference<std::string> m_sVideoRenderers; // StepMania.cpp sets these on
209 // first run based on the card
210 Preference<bool> m_bSmoothLines;
211 Preference<int> m_iSoundWriteAhead;
212 Preference<std::string> m_iSoundDevice;
213 Preference<int> m_iSoundPreferredSampleRate;
214 Preference<bool> m_bAllowUnacceleratedRenderer;
215 Preference<bool> m_bThreadedInput;
216 Preference<bool> m_bThreadedMovieDecode;
217 Preference<bool> m_MuteActions;
218 Preference<int> ThreadsToUse;
219
220 // Debug:
221 Preference<bool> m_bLogToDisk;
222 Preference<bool> m_bForceLogFlush;
223 Preference<bool> m_bShowLogOutput;
224 Preference<bool> m_bLogSkips;
225 Preference<bool> m_bShowLoadingWindow;
226 Preference<bool> m_bPseudoLocalize;
227 Preference<bool> m_show_theme_errors;
228 Preference<bool> m_bAlwaysLoadCalcParams;
229 Preference<int> m_UnfocusedSleepMillisecs;
230
231 // logging level 0 - 5
232 // 0 = TRACE (all the logging)
233 // 1 = DEBUG
234 // 2 = INFO
235 // 3 = WARN
236 // 4 = ERR
237 // 5 = FATAL (almost no logging)
238 Preference<int> m_logging_level;
239
241 m_bEnableScoreboard; // Alows disabling of scoreboard in network play
242
243 Preference<bool> m_bEnableCrashUpload;
244 Preference<bool> m_bShowMinidumpUploadDialogue;
245
246 Preference<bool> m_bAllowSongDeletion;
247
248 void ReadPrefsFromIni(const IniFile& ini,
249 const std::string& sSection,
250 bool bIsStatic);
251 void ReadGamePrefsFromIni(const std::string& sIni);
252 void ReadDefaultsFromIni(const IniFile& ini, const std::string& sSection);
253 void SavePrefsToIni(IniFile& ini);
254
255 void ReadPrefsFromDisk();
256 void SavePrefsToDisk();
257
258 void ResetToFactoryDefaults();
259
260 [[nodiscard]] auto GetPreferencesSection() const -> std::string;
261
262 // Lua
263 void PushSelf(lua_State* L);
264
265 protected:
266 void ReadPrefsFromFile(const std::string& sIni,
267 const std::string& sSection,
268 bool bIsStatic);
269 void ReadDefaultsFromFile(const std::string& sIni,
270 const std::string& sSection);
271};
272
273extern PrefsManager* PREFSMAN; // global and accessible from anywhere in our program
274
275#endif
The functions to read and write .INI files.
Definition IniFile.h:11
Definition Preference.h:53
Holds user-chosen preferences that are saved between sessions.
Definition PrefsManager.h:84
Definition PrefsManager.h:107