38 void GetThemeNames(std::vector<std::string>& AddTo);
39 void GetSelectableThemeNames(std::vector<std::string>& AddTo);
40 auto GetNumSelectableThemes() -> int;
41 auto DoesThemeExist(
const std::string& sThemeName) -> bool;
42 auto IsThemeSelectable(std::string
const& name) -> bool;
43 auto IsThemeNameValid(std::string
const& name) -> bool;
44 auto GetThemeDisplayName(
const std::string& sThemeName) -> std::string;
45 auto GetThemeAuthor(
const std::string& sThemeName) -> std::string;
46 void GetLanguages(std::vector<std::string>& AddTo);
47 auto DoesLanguageExist(
const std::string& sLanguage) -> bool;
48 void SwitchThemeAndLanguage(
const std::string& sThemeName,
49 const std::string& sLanguage,
51 bool bForceThemeReload =
false);
52 void UpdateLuaGlobals();
53 [[nodiscard]]
auto GetCurThemeName()
const -> std::string
55 return m_sCurThemeName;
57 [[nodiscard]]
auto GetRealCurThemeName()
const -> std::string
59 return m_sRealCurThemeName;
61 [[nodiscard]]
auto IsThemeLoaded()
const ->
bool
63 return !m_sCurThemeName.empty();
65 [[nodiscard]]
auto GetCurLanguage()
const -> std::string
67 return m_sCurLanguage;
69 [[nodiscard]]
auto GetCurThemeDir()
const -> std::string
71 return GetThemeDirFromName(m_sCurThemeName);
73 auto GetNextTheme() -> std::string;
74 auto GetNextSelectableTheme() -> std::string;
76 void ReloadSubscribers();
77 void ClearSubscribers();
78 void GetOptionNames(std::vector<std::string>& AddTo);
80 static void EvaluateString(std::string& sText);
84 std::string sResolvedPath;
85 std::string sMatchingMetricsGroup;
86 std::string sMatchingElement;
90 ElementCategory category,
91 const std::string& sMetricsGroup,
92 const std::string& sElement,
93 bool bOptional =
false) -> bool;
94 auto GetPath(ElementCategory category,
95 const std::string& sMetricsGroup,
96 const std::string& sElement,
97 bool bOptional =
false) -> std::string;
98 auto GetPathB(
const std::string& sMetricsGroup,
99 const std::string& sElement,
100 bool bOptional =
false) -> std::string
102 return GetPath(EC_BGANIMATIONS, sMetricsGroup, sElement, bOptional);
104 auto GetPathF(
const std::string& sMetricsGroup,
105 const std::string& sElement,
106 bool bOptional =
false) -> std::string
108 return GetPath(EC_FONTS, sMetricsGroup, sElement, bOptional);
110 auto GetPathG(
const std::string& sMetricsGroup,
111 const std::string& sElement,
112 bool bOptional =
false) -> std::string
114 return GetPath(EC_GRAPHICS, sMetricsGroup, sElement, bOptional);
116 auto GetPathS(
const std::string& sMetricsGroup,
117 const std::string& sElement,
118 bool bOptional =
false) -> std::string
120 return GetPath(EC_SOUNDS, sMetricsGroup, sElement, bOptional);
122 auto GetPathO(
const std::string& sMetricsGroup,
123 const std::string& sElement,
124 bool bOptional =
false) -> std::string
126 return GetPath(EC_OTHER, sMetricsGroup, sElement, bOptional);
128 void ClearThemePathCache();
130 auto HasMetric(
const std::string& sMetricsGroup,
131 const std::string& sValueName) -> bool;
132 void PushMetric(Lua* L,
133 const std::string& sMetricsGroup,
134 const std::string& sValueName);
135 auto GetMetric(
const std::string& sMetricsGroup,
136 const std::string& sValueName) -> std::string;
137 auto GetMetricI(
const std::string& sMetricsGroup,
138 const std::string& sValueName) -> int;
139 auto GetMetricF(
const std::string& sMetricsGroup,
140 const std::string& sValueName) -> float;
141 auto GetMetricB(
const std::string& sMetricsGroup,
142 const std::string& sValueName) -> bool;
143 auto GetMetricC(
const std::string& sMetricsGroup,
144 const std::string& sValueName) ->
RageColor;
145 auto GetMetricR(
const std::string& sMetricsGroup,
147#if !defined(SMPACKAGE)
148 auto GetMetricA(
const std::string& sMetricsGroup,
149 const std::string& sValueName) -> apActorCommands;
152 void GetMetric(
const std::string& sMetricsGroup,
153 const std::string& sValueName,
157 auto HasString(
const std::string& sMetricsGroup,
158 const std::string& sValueName) -> bool;
159 auto GetString(
const std::string& sMetricsGroup,
160 const std::string& sValueName) -> std::string;
161 void GetString(
const std::string& sMetricsGroup,
162 const std::string& sValueName,
163 std::string& valueOut)
165 valueOut = GetString(sMetricsGroup, sValueName);
167 void FilterFileLanguages(std::vector<std::string>& asElementPaths);
169 void GetMetricsThatBeginWith(
const std::string& sMetricsGroup,
170 const std::string& sValueName,
171 std::set<std::string>& vsValueNamesOut);
173 auto GetMetricsGroupFallback(
const std::string& sMetricsGroup)
176 static auto GetBlankGraphicPath() -> std::string;
179 void RunLuaScripts(
const std::string& sMask,
bool bUseThemeDir =
false);
186 void PushSelf(lua_State* L);
189 void LoadThemeMetrics(
const std::string& sThemeName,
190 const std::string& sLanguage_);
191 auto GetMetricRaw(
const IniFile& ini,
192 const std::string& sMetricsGroup,
193 const std::string& sValueName) -> std::string;
194 auto GetMetricRawRecursive(
const IniFile& ini,
195 const std::string& sMetricsGroup,
196 const std::string& sValueName,
197 std::string& sRet) -> bool;
199 auto GetPathInfoToAndFallback(PathInfo& out,
200 ElementCategory category,
201 const std::string& sMetricsGroup,
202 const std::string& sFile) -> bool;
203 auto GetPathInfoToRaw(PathInfo& out,
204 const std::string& sThemeName,
205 ElementCategory category,
206 const std::string& sMetricsGroup,
207 const std::string& sFile) -> bool;
208 static auto GetThemeDirFromName(
const std::string& sThemeName)
210 auto GetElementDir(
const std::string& sThemeName) -> std::string;
211 static auto GetMetricsIniPath(
const std::string& sThemeName) -> std::string;
212 static void GetLanguagesForTheme(
const std::string& sThemeName,
213 std::vector<std::string>& asLanguagesOut);
214 static auto GetLanguageIniPath(
const std::string& sThemeName,
215 const std::string& sLanguage) -> std::string;
216 void GetOptionalLanguageIniPaths(std::vector<std::string>& vsPathsOut,
217 const std::string& sThemeName,
218 const std::string& sLanguage);
219 auto GetDefaultLanguage() -> std::string;
221 std::string m_sCurThemeName;
222 std::string m_sRealCurThemeName =
"";
223 std::string m_sCurLanguage;
224 bool m_bPseudoLocalize;