Skip to content

Commit 84f0e26

Browse files
committed
Codechange: [Script] Move currently loaded game strings out of global namespace
1 parent 20805ba commit 84f0e26

File tree

3 files changed

+24
-24
lines changed

3 files changed

+24
-24
lines changed

src/game/game_text.cpp

+14-14
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ void GameStrings::Compile()
311311
}
312312

313313
/** The currently loaded game strings. */
314-
std::shared_ptr<GameStrings> _current_data = nullptr;
314+
/* static */ std::shared_ptr<GameStrings> GameStrings::data = nullptr;
315315

316316
/**
317317
* Get the string pointer of a particular game string.
@@ -320,8 +320,8 @@ std::shared_ptr<GameStrings> _current_data = nullptr;
320320
*/
321321
std::string_view GetGameStringPtr(StringIndexInTab id)
322322
{
323-
if (_current_data == nullptr || _current_data->cur_language == nullptr || id.base() >= _current_data->cur_language->lines.size()) return GetStringPtr(STR_UNDEFINED);
324-
return _current_data->cur_language->lines[id];
323+
if (GameStrings::data == nullptr || GameStrings::data->cur_language == nullptr || id.base() >= GameStrings::data->cur_language->lines.size()) return GetStringPtr(STR_UNDEFINED);
324+
return GameStrings::data->cur_language->lines[id];
325325
}
326326

327327
/**
@@ -334,8 +334,8 @@ const StringParams &GetGameStringParams(StringIndexInTab id)
334334
/* An empty result for STR_UNDEFINED. */
335335
static StringParams empty;
336336

337-
if (id.base() >= _current_data->string_params.size()) return empty;
338-
return _current_data->string_params[id];
337+
if (id.base() >= GameStrings::data->string_params.size()) return empty;
338+
return GameStrings::data->string_params[id];
339339
}
340340

341341
/**
@@ -348,8 +348,8 @@ const std::string &GetGameStringName(StringIndexInTab id)
348348
/* The name for STR_UNDEFINED. */
349349
static const std::string undefined = "STR_UNDEFINED";
350350

351-
if (id.base() >= _current_data->string_names.size()) return undefined;
352-
return _current_data->string_names[id];
351+
if (id.base() >= GameStrings::data->string_names.size()) return undefined;
352+
return GameStrings::data->string_names[id];
353353
}
354354

355355
/**
@@ -358,16 +358,16 @@ const std::string &GetGameStringName(StringIndexInTab id)
358358
*/
359359
void RegisterGameTranslation(Squirrel *engine)
360360
{
361-
_current_data = LoadTranslations();
362-
if (_current_data == nullptr) return;
361+
GameStrings::data = LoadTranslations();
362+
if (GameStrings::data == nullptr) return;
363363

364364
HSQUIRRELVM vm = engine->GetVM();
365365
sq_pushroottable(vm);
366366
sq_pushstring(vm, "GSText", -1);
367367
if (SQ_FAILED(sq_get(vm, -2))) return;
368368

369369
int idx = 0;
370-
for (const auto &p : _current_data->string_names) {
370+
for (const auto &p : GameStrings::data->string_names) {
371371
sq_pushstring(vm, p, -1);
372372
sq_pushinteger(vm, idx);
373373
sq_rawset(vm, -3);
@@ -384,15 +384,15 @@ void RegisterGameTranslation(Squirrel *engine)
384384
*/
385385
void ReconsiderGameScriptLanguage()
386386
{
387-
if (_current_data == nullptr) return;
387+
if (GameStrings::data == nullptr) return;
388388

389389
std::string language = FS2OTTD(_current_language->file.stem());
390-
for (auto &p : _current_data->compiled_strings) {
390+
for (auto &p : GameStrings::data->compiled_strings) {
391391
if (p.language == language) {
392-
_current_data->cur_language = &p;
392+
GameStrings::data->cur_language = &p;
393393
return;
394394
}
395395
}
396396

397-
_current_data->cur_language = &_current_data->compiled_strings[0];
397+
GameStrings::data->cur_language = &GameStrings::data->compiled_strings[0];
398398
}

src/game/game_text.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ struct GameStrings {
6666
GameStrings(GameStrings &&) = delete;
6767
GameStrings &operator=(const GameStrings &) = delete;
6868
GameStrings &operator=(GameStrings &&) = delete;
69+
70+
static std::shared_ptr<GameStrings> data;
6971
};
7072

7173
#endif /* GAME_TEXT_HPP */

src/saveload/game_sl.cpp

+8-10
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,6 @@ struct GSDTChunkHandler : ChunkHandler {
113113
}
114114
};
115115

116-
extern std::shared_ptr<GameStrings> _current_data;
117-
118116
static std::string _game_saveload_string;
119117
static uint32_t _game_saveload_strings;
120118

@@ -159,33 +157,33 @@ struct GSTRChunkHandler : ChunkHandler {
159157
{
160158
const std::vector<SaveLoad> slt = SlCompatTableHeader(_game_language_desc, _game_language_sl_compat);
161159

162-
_current_data = std::make_shared<GameStrings>();
160+
GameStrings::data = std::make_shared<GameStrings>();
163161

164162
while (SlIterateArray() != -1) {
165163
LanguageStrings ls;
166164
SlObject(&ls, slt);
167-
_current_data->raw_strings.push_back(std::move(ls));
165+
GameStrings::data->raw_strings.push_back(std::move(ls));
168166
}
169167

170168
/* If there were no strings in the savegame, set GameStrings to nullptr */
171-
if (_current_data->raw_strings.empty()) {
172-
_current_data.reset();
169+
if (GameStrings::data->raw_strings.empty()) {
170+
GameStrings::data.reset();
173171
return;
174172
}
175173

176-
_current_data->Compile();
174+
GameStrings::data->Compile();
177175
ReconsiderGameScriptLanguage();
178176
}
179177

180178
void Save() const override
181179
{
182180
SlTableHeader(_game_language_desc);
183181

184-
if (_current_data == nullptr) return;
182+
if (GameStrings::data == nullptr) return;
185183

186-
for (uint i = 0; i < _current_data->raw_strings.size(); i++) {
184+
for (uint i = 0; i < GameStrings::data->raw_strings.size(); i++) {
187185
SlSetArrayIndex(i);
188-
SlObject(&_current_data->raw_strings[i], _game_language_desc);
186+
SlObject(&GameStrings::data->raw_strings[i], _game_language_desc);
189187
}
190188
}
191189
};

0 commit comments

Comments
 (0)