MCPcopy Create free account
hub / github.com/EasyRPG/Player / SelectLanguage

Method SelectLanguage

src/translation.cpp:161–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159
160
161void Translation::SelectLanguage(std::string_view lang_id)
162{
163 // Try to read in our language files.
164 Output::Debug("Changing language to: '{}'", (!lang_id.empty() ? lang_id : "<Default>"));
165
166 AsyncHandler::ClearRequests();
167
168 if (!lang_id.empty()) {
169 auto root = GetRootTree();
170 if (!root) {
171 Output::Warning("Cannot load translation. 'Language' folder does not exist");
172 return;
173 }
174
175 FilesystemView language_tree = root.Subtree(lang_id);
176 if (language_tree) {
177 auto files = Utils::MakeSvArray(TRFILE_RPG_RT_LDB, TRFILE_RPG_RT_BATTLE, TRFILE_RPG_RT_COMMON, TRFILE_RPG_RT_LMT, "Font/Font", "Font/Font2");
178 request_counter = static_cast<int>(files.size());
179 for (auto s: files) {
180 FileRequestAsync* request = AsyncHandler::RequestFile(language_tree.GetFullPath(), s);
181 request->SetImportantFile(true);
182 requests.emplace_back(request->Bind(&Translation::SelectLanguageAsync, this, lang_id));
183 request->Start();
184 }
185 } else {
186 Output::Warning("Translation for '{}' does not appear to exist", lang_id);
187 }
188 } else {
189 // Default language, no request needed
190 request_counter = 1;
191 SelectLanguageAsync(nullptr, lang_id);
192 }
193}
194
195void Translation::SelectLanguageAsync(FileRequestResult*, std::string_view lang_id) {
196 --request_counter;

Callers 2

PushTitleSceneMethod · 0.80
ChangeLanguageMethod · 0.80

Calls 8

MakeSvArrayFunction · 0.85
SubtreeMethod · 0.80
GetFullPathMethod · 0.80
SetImportantFileMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45
BindMethod · 0.45
StartMethod · 0.45

Tested by

no test coverage detected