From 86abe1b2292b8e1fa9c4f86febb16dddff1b5334 Mon Sep 17 00:00:00 2001 From: belugas Date: Thu, 31 May 2007 03:35:11 +0000 Subject: [PATCH] (svn r9994) -Codechange: Add pointers for Industry and Industry Tiles in the grf file. --- src/newgrf.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/newgrf.h | 3 +++ 2 files changed, 41 insertions(+) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index d16bd06768..0ba3aa8465 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -4304,6 +4304,43 @@ static void ResetCustomHouses() } } +static void ResetCustomIndustries() +{ + GRFFile *file; + + for (file = _first_grffile; file != NULL; file = file->next) { + uint i; + /* We are verifiying both tiles and industries specs loaded from the grf file + * First, let's deal with industryspec */ + if (file->industryspec != NULL) { + + for (i = 0; i < NUM_INDUSTRYTYPES; i++) { + IndustrySpec *ind = file->industryspec[i]; + + if (ind != NULL) { + free(ind); + ind = NULL; + } + } + + free(file->industryspec); + file->industryspec = NULL; + } + + if (file->indtspec != NULL) { + for (i = 0; i < NUM_INDUSTRYTILES; i++) { + if (file->indtspec[i] != NULL) { + free(file->indtspec[i]); + file->indtspec[i] = NULL; + } + } + + free(file->indtspec); + file->indtspec = NULL; + } + } +} + static void ResetNewGRF() { GRFFile *next; @@ -4370,6 +4407,7 @@ static void ResetNewGRFData() ResetHouses(); /* Reset the industries structures*/ + ResetCustomIndustries(); ResetIndustries(); /* Reset station classes */ diff --git a/src/newgrf.h b/src/newgrf.h index 0ee155af0b..7324e7dd99 100644 --- a/src/newgrf.h +++ b/src/newgrf.h @@ -10,6 +10,7 @@ #include "newgrf_config.h" #include "helpers.hpp" #include "cargotype.h" +#include "industry.h" enum GrfLoadingStage { GLS_FILESCAN, @@ -69,6 +70,8 @@ struct GRFFile { StationSpec **stations; HouseSpec **housespec; + IndustrySpec **industryspec; + IndustryTileSpec **indtspec; uint32 param[0x80]; uint param_end; ///< one more than the highest set parameter