Codechange: use std::string to create the GRF parameter list

This commit is contained in:
Rubidium 2023-05-24 22:46:22 +02:00 committed by rubidium42
parent fbab94eabb
commit 4fdde00e25
4 changed files with 10 additions and 18 deletions

View File

@ -714,18 +714,14 @@ GRFConfig *GetGRFConfig(uint32 grfid, uint32 mask)
/** Build a string containing space separated parameter values, and terminate */
char *GRFBuildParamList(char *dst, const GRFConfig *c, const char *last)
std::string GRFBuildParamList(const GRFConfig *c)
{
uint i;
/* Return an empty string if there are no parameters */
if (c->num_params == 0) return strecpy(dst, "", last);
for (i = 0; i < c->num_params; i++) {
if (i > 0) dst = strecpy(dst, " ", last);
dst += seprintf(dst, last, "%d", c->param[i]);
std::string result;
for (uint i = 0; i < c->num_params; i++) {
if (!result.empty()) result += ' ';
result += std::to_string(c->param[i]);
}
return dst;
return result;
}
/**

View File

@ -220,7 +220,7 @@ void ClearGRFConfigList(GRFConfig **config);
void ResetGRFConfig(bool defaults);
GRFListCompatibility IsGoodGRFConfigList(GRFConfig *grfconfig);
bool FillGRFDetails(GRFConfig *config, bool is_static, Subdirectory subdir = NEWGRF_DIR);
char *GRFBuildParamList(char *dst, const GRFConfig *c, const char *last);
std::string GRFBuildParamList(const GRFConfig *c);
/* In newgrf_gui.cpp */
void ShowNewGRFSettings(bool editable, bool show_params, bool exec_changes, GRFConfig **config);

View File

@ -112,10 +112,9 @@ static void ShowNewGRFInfo(const GRFConfig *c, const Rect &r, bool show_params)
/* Show GRF parameter list */
if (show_params) {
if (c->num_params > 0) {
char buff[256];
GRFBuildParamList(buff, c, lastof(buff));
std::string params = GRFBuildParamList(c);
SetDParam(0, STR_JUST_RAW_STRING);
SetDParamStr(1, buff);
SetDParamStr(1, params);
} else {
SetDParam(0, STR_NEWGRF_SETTINGS_PARAMETER_NONE);
}

View File

@ -1134,12 +1134,9 @@ static void GRFSaveConfig(IniFile &ini, const char *grpname, const GRFConfig *li
const GRFConfig *c;
for (c = list; c != nullptr; c = c->next) {
char params[512];
GRFBuildParamList(params, c, lastof(params));
std::string key = fmt::format("{:08X}|{}|{}", BSWAP32(c->ident.grfid),
FormatArrayAsHex(c->ident.md5sum), c->filename);
group->GetItem(key, true)->SetValue(params);
group->GetItem(key, true)->SetValue(GRFBuildParamList(c));
}
}