summaryrefslogtreecommitdiff
path: root/src/gfxinit.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2017-01-14 15:48:19 +0000
committerfrosch <frosch@openttd.org>2017-01-14 15:48:19 +0000
commit1aedadb49b75862457bf29ac58a55d7dc80dcb35 (patch)
tree9697f62b4690d88c7f85db1dffe4ee53682ae841 /src/gfxinit.cpp
parentec9a920aab1af1001abb216a89cdc13e0ba1c3ab (diff)
downloadopenttd-1aedadb49b75862457bf29ac58a55d7dc80dcb35.tar.xz
(svn r27730) -Change: Split openttd.grf into openttd.grf and orig_extra.grf
openttd.grf is now always loaded and provides all extra graphics in case the (possibly outdated) baseset does not. orig_extra.grf contains graphics specific to the original baseset only.
Diffstat (limited to 'src/gfxinit.cpp')
-rw-r--r--src/gfxinit.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp
index 10bc0afa1..23172bdd5 100644
--- a/src/gfxinit.cpp
+++ b/src/gfxinit.cpp
@@ -197,31 +197,41 @@ static void LoadSpriteTables()
InitializeUnicodeGlyphMap();
/*
- * Load the base NewGRF with OTTD required graphics as first NewGRF.
+ * Load the base and extra NewGRF with OTTD required graphics as first NewGRF.
* However, we do not want it to show up in the list of used NewGRFs,
* so we have to manually add it, and then remove it later.
*/
GRFConfig *top = _grfconfig;
- GRFConfig *master = new GRFConfig(used_set->files[GFT_EXTRA].filename);
+
+ /* Default extra graphics */
+ GRFConfig *master = new GRFConfig("OPENTTD.GRF");
+ master->palette |= GRFP_GRF_DOS;
+ FillGRFDetails(master, false, BASESET_DIR);
+ ClrBit(master->flags, GCF_INIT_ONLY);
+
+ /* Baseset extra graphics */
+ GRFConfig *extra = new GRFConfig(used_set->files[GFT_EXTRA].filename);
/* We know the palette of the base set, so if the base NewGRF is not
* setting one, use the palette of the base set and not the global
* one which might be the wrong palette for this base NewGRF.
* The value set here might be overridden via action14 later. */
switch (used_set->palette) {
- case PAL_DOS: master->palette |= GRFP_GRF_DOS; break;
- case PAL_WINDOWS: master->palette |= GRFP_GRF_WINDOWS; break;
+ case PAL_DOS: extra->palette |= GRFP_GRF_DOS; break;
+ case PAL_WINDOWS: extra->palette |= GRFP_GRF_WINDOWS; break;
default: break;
}
- FillGRFDetails(master, false, BASESET_DIR);
+ FillGRFDetails(extra, false, BASESET_DIR);
+ ClrBit(extra->flags, GCF_INIT_ONLY);
- ClrBit(master->flags, GCF_INIT_ONLY);
- master->next = top;
+ extra->next = top;
+ master->next = extra;
_grfconfig = master;
- LoadNewGRF(SPR_NEWGRFS_BASE, i);
+ LoadNewGRF(SPR_NEWGRFS_BASE, i, 2);
/* Free and remove the top element. */
+ delete extra;
delete master;
_grfconfig = top;
}