(svn r21814) -Fix/Add: Check GRF version from action 8, and disallow usage of GRFs with versions above 7.
This commit is contained in:
@@ -115,6 +115,7 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint right, uint
|
||||
/* Show flags */
|
||||
if (c->status == GCS_NOT_FOUND) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_NOT_FOUND);
|
||||
if (c->status == GCS_DISABLED) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_DISABLED);
|
||||
if (HasBit(c->flags, GCF_INVALID)) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_INCOMPATIBLE);
|
||||
if (HasBit(c->flags, GCF_COMPATIBLE)) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_COMPATIBLE_LOADED);
|
||||
|
||||
/* Draw GRF info if it exists */
|
||||
@@ -888,7 +889,7 @@ struct NewGRFWindow : public QueryStringBaseWindow {
|
||||
}
|
||||
|
||||
case SNGRFS_ADD: {
|
||||
if (this->avail_sel == NULL || !this->editable) break;
|
||||
if (this->avail_sel == NULL || !this->editable || HasBit(this->avail_sel->flags, GCF_INVALID)) break;
|
||||
|
||||
GRFConfig **list;
|
||||
/* Find last entry in the list, checking for duplicate grfid on the way */
|
||||
@@ -1047,7 +1048,7 @@ struct NewGRFWindow : public QueryStringBaseWindow {
|
||||
if (c->status != GCS_NOT_FOUND && !compatible) continue;
|
||||
|
||||
const GRFConfig *f = FindGRFConfig(c->ident.grfid, FGCM_EXACT, compatible ? c->original_md5sum : c->ident.md5sum);
|
||||
if (f == NULL) continue;
|
||||
if (f == NULL || HasBit(f->flags, GCF_INVALID)) continue;
|
||||
|
||||
*l = new GRFConfig(*f);
|
||||
(*l)->next = c->next;
|
||||
@@ -1084,7 +1085,7 @@ struct NewGRFWindow : public QueryStringBaseWindow {
|
||||
SNGRFS_TOGGLE_PALETTE,
|
||||
WIDGET_LIST_END
|
||||
);
|
||||
this->SetWidgetDisabledState(SNGRFS_ADD, !this->editable || this->avail_sel == NULL);
|
||||
this->SetWidgetDisabledState(SNGRFS_ADD, !this->editable || this->avail_sel == NULL || HasBit(this->avail_sel->flags, GCF_INVALID));
|
||||
|
||||
bool disable_all = this->active_sel == NULL || !this->editable;
|
||||
this->SetWidgetsDisabledState(disable_all,
|
||||
@@ -1233,7 +1234,7 @@ private:
|
||||
if (_settings_client.gui.newgrf_show_old_versions) {
|
||||
*this->avails.Append() = c;
|
||||
} else {
|
||||
const GRFConfig *best = FindGRFConfig(c->ident.grfid, FGCM_NEWEST);
|
||||
const GRFConfig *best = FindGRFConfig(c->ident.grfid, HasBit(c->flags, GCF_INVALID) ? FGCM_NEWEST : FGCM_NEWEST_VALID);
|
||||
/*
|
||||
* If the best version is 0, then all NewGRF with this GRF ID
|
||||
* have version 0, so for backward compatability reasons we
|
||||
|
Reference in New Issue
Block a user