Changeset - r27435:a26109e60d6d
[Not reviewed]
master
0 4 0
Rubidium - 13 months ago 2023-05-24 20:46:22
rubidium@openttd.org
Codechange: use std::string to create the GRF parameter list
4 files changed with 10 insertions and 18 deletions:
0 comments (0 inline, 0 general)
src/newgrf_config.cpp
Show inline comments
 
@@ -711,24 +711,20 @@ GRFConfig *GetGRFConfig(uint32 grfid, ui
 

	
 
	return nullptr;
 
}
 

	
 

	
 
/** 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;
 
}
 

	
 
/**
 
 * Search a textfile file next to this NewGRF.
 
 * @param type The type of the textfile to search for.
 
 * @return The filename for the textfile.
src/newgrf_config.h
Show inline comments
 
@@ -217,13 +217,13 @@ GRFConfig **CopyGRFConfigList(GRFConfig 
 
void AppendStaticGRFConfigs(GRFConfig **dst);
 
void AppendToGRFConfigList(GRFConfig **dst, GRFConfig *el);
 
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);
 

	
 
void UpdateNewGRFScanStatus(uint num, const char *name);
 
void UpdateNewGRFConfigPalette(int32 new_value = 0);
src/newgrf_gui.cpp
Show inline comments
 
@@ -109,16 +109,15 @@ static void ShowNewGRFInfo(const GRFConf
 
	SetDParamStr(0, tmp);
 
	tr.top = DrawStringMultiLine(tr, STR_NEWGRF_SETTINGS_MD5SUM);
 

	
 
	/* 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);
 
		}
 
		tr.top = DrawStringMultiLine(tr, STR_NEWGRF_SETTINGS_PARAMETER);
 

	
 
		/* Draw the palette of the NewGRF */
src/settings.cpp
Show inline comments
 
@@ -1131,18 +1131,15 @@ static void GRFSaveConfig(IniFile &ini, 
 
{
 
	ini.RemoveGroup(grpname);
 
	IniGroup *group = ini.GetGroup(grpname);
 
	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));
 
	}
 
}
 

	
 
/* Common handler for saving/loading variables to the configuration file */
 
static void HandleSettingDescs(IniFile &generic_ini, IniFile &private_ini, IniFile &secrets_ini, SettingDescProc *proc, SettingDescProcList *proc_list, bool only_startup = false)
 
{
0 comments (0 inline, 0 general)