summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2009-05-04 11:23:21 +0000
committerfrosch <frosch@openttd.org>2009-05-04 11:23:21 +0000
commitddd47a056d9abc2760181dd4083b605164e6b4cb (patch)
treea4a63d343de314a5f2713768525ebf4e509d5c34
parent21f5f602f9487c248d545487f40a539a35e698e9 (diff)
downloadopenttd-ddd47a056d9abc2760181dd4083b605164e6b4cb.tar.xz
(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.
-rw-r--r--src/newgrf.cpp3
-rw-r--r--src/newgrf_config.h4
-rw-r--r--src/newgrf_gui.cpp7
3 files changed, 5 insertions, 9 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 6ed173463..508e8305c 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -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;
diff --git a/src/newgrf_config.h b/src/newgrf_config.h
index aba8dc330..9f0e7efd5 100644
--- a/src/newgrf_config.h
+++ b/src/newgrf_config.h
@@ -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 */
diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp
index 5a1223ebf..485464e53 100644
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -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));