(svn r16223) -Fix (r8881): ActionB should use the online parameters from GRFFile instead of the initial user-specified values from GRFConfig. Also use the values as they were set when the ActionB was executed, not as they are set when the message is shown.

This commit is contained in:
frosch 2009-05-04 11:23:21 +00:00
parent 21f5f602f9
commit ddd47a056d
3 changed files with 5 additions and 9 deletions

View File

@ -4381,7 +4381,8 @@ static void GRFLoadError(byte *buf, size_t len)
/* Only two parameter numbers can be used in the string. */
uint i = 0;
for (; i < 2 && len > 0; i++) {
error->param_number[i] = grf_load_byte(&buf);
uint param_number = grf_load_byte(&buf);
error->param_value[i] = (param_number < _cur_grffile->param_end ? _cur_grffile->param[param_number] : 0);
len--;
}
error->num_params = i;

View File

@ -53,8 +53,8 @@ struct GRFError {
char *data; ///< Additional data for message and custom_message
StringID message; ///< Default message
StringID severity; ///< Info / Warning / Error / Fatal
uint8 num_params; ///< Number of additinal parameters for custom_message (0, 1 or 2)
uint8 param_number[2]; ///< GRF parameters to show for custom_message
uint8 num_params; ///< Number of additinal parameters for message and custom_message (0, 1 or 2)
uint32 param_value[2]; ///< Values of GRF parameters to show for message and custom_message
};
/** Information about GRF, used in the game and (part of it) in savegames */

View File

@ -57,12 +57,7 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, uint bott
SetDParam (3, STR_JUST_RAW_STRING);
SetDParamStr(4, c->error->data);
for (uint i = 0; i < c->error->num_params; i++) {
uint32 param = 0;
byte param_number = c->error->param_number[i];
if (param_number < c->num_params) param = c->param[param_number];
SetDParam(5 + i, param);
SetDParam(5 + i, c->error->param_value[i]);
}
GetString(message, c->error->custom_message == NULL ? c->error->message : STR_JUST_RAW_STRING, lastof(message));