diff options
Diffstat (limited to 'src/gfxinit.cpp')
-rw-r--r-- | src/gfxinit.cpp | 26 |
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; } |