diff options
Diffstat (limited to 'src/newgrf_gui.cpp')
-rw-r--r-- | src/newgrf_gui.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index d18ef00b6..3596f52ec 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -399,6 +399,18 @@ struct NewGRFWindow : public Window { this->widget[SNGRFS_PRESET_LIST].data = STR_JUST_RAW_STRING; } + bool has_missing = false; + for (const GRFConfig *c = this->list; !has_missing && c != NULL; c = c->next) { + has_missing = c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_COMPATIBLE); + } + if (has_missing) { + this->widget[SNGRFS_CONTENT_DOWNLOAD].data = STR_CONTENT_INTRO_MISSING_BUTTON; + this->widget[SNGRFS_CONTENT_DOWNLOAD].tooltips = STR_CONTENT_INTRO_MISSING_BUTTON_TIP; + } else { + this->widget[SNGRFS_CONTENT_DOWNLOAD].data = STR_CONTENT_INTRO_BUTTON; + this->widget[SNGRFS_CONTENT_DOWNLOAD].tooltips = STR_CONTENT_INTRO_BUTTON_TIP; + } + this->DrawWidgets(); /* Draw NewGRF list */ @@ -597,6 +609,8 @@ struct NewGRFWindow : public Window { /* Only show the things in the current list, or everything when nothing's selected */ ContentVector cv; for (const GRFConfig *c = this->list; c != NULL; c = c->next) { + if (c->status != GCS_NOT_FOUND && !HasBit(c->flags, GCF_COMPATIBLE)) continue; + ContentInfo *ci = new ContentInfo(); ci->type = CONTENT_TYPE_NEWGRF; ci->state = ContentInfo::DOES_NOT_EXIST; |