Merge branch 'master' into jgrpp

# Conflicts:
#	.github/workflows/commit-checker.yml
#	src/industry_cmd.cpp
#	src/industry_gui.cpp
#	src/landscape.cpp
#	src/linkgraph/linkgraph_gui.cpp
#	src/order_base.h
#	src/order_cmd.cpp
#	src/order_gui.cpp
#	src/saveload/afterload.cpp
#	src/saveload/league_sl.cpp
#	src/saveload/saveload.h
#	src/script/api/script_object.hpp
#	src/script/squirrel_helper.hpp
#	src/settings_table.cpp
#	src/station_cmd.cpp
#	src/table/settings.h.preamble
#	src/tree_cmd.cpp
#	src/tree_map.h
#	src/vehicle.cpp
#	src/waypoint_cmd.cpp
This commit is contained in:
Jonathan G Rennison
2023-03-04 16:44:23 +00:00
94 changed files with 1075 additions and 1558 deletions

View File

@@ -19,6 +19,7 @@
#include "game_info.hpp"
#include "table/strings.h"
#include "table/strgen_tables.h"
#include <stdarg.h>
#include <memory>
@@ -273,6 +274,31 @@ GameStrings *LoadTranslations()
}
}
static StringParam::ParamType GetParamType(const CmdStruct *cs)
{
if (cs->value == SCC_RAW_STRING_POINTER) return StringParam::RAW_STRING;
if (cs->value == SCC_STRING || cs != TranslateCmdForCompare(cs)) return StringParam::STRING;
return StringParam::OTHER;
}
static void ExtractStringParams(const StringData &data, StringParamsList &params)
{
for (size_t i = 0; i < data.max_strings; i++) {
const LangString *ls = data.strings[i];
if (ls != nullptr) {
StringParams &param = params.emplace_back();
ParsedCommandStruct pcs;
ExtractCommandString(&pcs, ls->english, false);
for (const CmdStruct *cs : pcs.cmd) {
if (cs == nullptr) break;
param.emplace_back(GetParamType(cs), cs->consumes);
}
}
}
}
/** Compile the language. */
void GameStrings::Compile()
{
@@ -283,6 +309,8 @@ void GameStrings::Compile()
this->version = data.Version();
ExtractStringParams(data, this->string_params);
StringNameWriter id_writer(this->string_names);
id_writer.WriteHeader(data);
@@ -312,6 +340,20 @@ const char *GetGameStringPtr(uint id)
return _current_data->cur_language->lines[id].c_str();
}
/**
* Get the string parameters of a particular game string.
* @param id The ID of the game string.
* @return The string parameters.
*/
const StringParams &GetGameStringParams(uint id)
{
/* An empty result for STR_UNDEFINED. */
static StringParams empty;
if (id >= _current_data->string_params.size()) return empty;
return _current_data->string_params[id];
}
/**
* Register the current translation to the Squirrel engine.
* @param engine The engine to update/