mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-08 23:34:15 +00:00
(svn r21065) -Fix (r19733): Crash when displaying 60+x parameters in the NewGRF inspect window.
This commit is contained in:
parent
1517997868
commit
406b4b3873
@ -205,6 +205,16 @@ struct NIFeature {
|
||||
/* Load all the NewGRF debug data; externalised as it is just a huge bunch of tables. */
|
||||
#include "table/newgrf_debug_data.h"
|
||||
|
||||
/**
|
||||
* Get the feature number related to the window number.
|
||||
* @param window_number The window to get the feature number for.
|
||||
* @return The feature number.
|
||||
*/
|
||||
static inline GrfSpecFeature GetFeatureNum(uint window_number)
|
||||
{
|
||||
return (GrfSpecFeature)GB(window_number, 24, 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the NIFeature related to the window number.
|
||||
* @param window_number The window to get the NIFeature for.
|
||||
@ -212,7 +222,7 @@ struct NIFeature {
|
||||
*/
|
||||
static inline const NIFeature *GetFeature(uint window_number)
|
||||
{
|
||||
byte idx = GB(window_number, 24, 8);
|
||||
GrfSpecFeature idx = GetFeatureNum(window_number);
|
||||
return idx < GSF_FAKE_END ? _nifeatures[idx] : NULL;
|
||||
}
|
||||
|
||||
@ -324,7 +334,7 @@ struct NewGRFInspectWindow : Window {
|
||||
this->DrawString(r, i++, "Variables:");
|
||||
for (const NIVariable *niv = nif->variables; niv->name != NULL; niv++) {
|
||||
bool avail = true;
|
||||
uint param = HasVariableParameter(niv->var) ? NewGRFInspectWindow::var60params[index][niv->var - 0x60] : 0;
|
||||
uint param = HasVariableParameter(niv->var) ? NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][niv->var - 0x60] : 0;
|
||||
uint value = nih->Resolve(index, niv->var, param, &avail);
|
||||
|
||||
if (!avail) continue;
|
||||
@ -446,7 +456,7 @@ struct NewGRFInspectWindow : Window {
|
||||
{
|
||||
if (StrEmpty(str)) return;
|
||||
|
||||
NewGRFInspectWindow::var60params[GetFeatureIndex(this->window_number)][this->current_edit_param - 0x60] = strtol(str, NULL, 16);
|
||||
NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][this->current_edit_param - 0x60] = strtol(str, NULL, 16);
|
||||
this->SetDirty();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user