summaryrefslogtreecommitdiff
path: root/src/newgrf_config.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-07-31 14:40:50 +0000
committerrubidium <rubidium@openttd.org>2010-07-31 14:40:50 +0000
commitac280af8bc75f89223238a77f871b1a610014219 (patch)
treef11e8dde3c5e08a29824a11429eb573a3373302a /src/newgrf_config.cpp
parent5a2862814ac310e5e4629e0242def8ebf3a6da1c (diff)
downloadopenttd-ac280af8bc75f89223238a77f871b1a610014219.tar.xz
(svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
Diffstat (limited to 'src/newgrf_config.cpp')
-rw-r--r--src/newgrf_config.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/newgrf_config.cpp b/src/newgrf_config.cpp
index 41be0c1c0..f993accb4 100644
--- a/src/newgrf_config.cpp
+++ b/src/newgrf_config.cpp
@@ -39,6 +39,7 @@ GRFConfig::GRFConfig(const char *filename) :
*/
GRFConfig::GRFConfig(const GRFConfig &config) :
ident(config.ident),
+ version(config.version),
flags(config.flags & ~GCF_COPY),
status(config.status),
grf_bugs(config.grf_bugs),
@@ -579,11 +580,14 @@ void ScanNewGRFFiles()
*/
const GRFConfig *FindGRFConfig(uint32 grfid, const uint8 *md5sum)
{
+ const GRFConfig *best = NULL;
for (const GRFConfig *c = _all_grfs; c != NULL; c = c->next) {
- if (c->ident.HasGrfIdentifier(grfid, md5sum)) return c;
+ if (!c->ident.HasGrfIdentifier(grfid, md5sum)) continue;
+ if (md5sum != NULL) return c;
+ if (best == NULL || c->version > best->version) best = c;
}
- return NULL;
+ return best;
}
#ifdef ENABLE_NETWORK