summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2013-10-12 16:32:59 +0000
committerfrosch <frosch@openttd.org>2013-10-12 16:32:59 +0000
commitad8b387f9eb8185f25948651b7a34f151812c31d (patch)
tree121ab624535f4963a4ce2cfc0ec0e47006095775
parenta521af8cf81eaca6791fd966e4ce9d240232bd12 (diff)
downloadopenttd-ad8b387f9eb8185f25948651b7a34f151812c31d.tar.xz
(svn r25837) -Codechange: Use NUM_INDUSTRYTILES_PER_GRF instead of NUM_INDUSTRYTILES to properly distinguish limits per NewGRF and limits of the pool.
-Change: [NewGRF] Lower the limit of industry tile types per NewGRF from 256 to 255 to prevent usage of ID 0xFF in Action3, and thus allowing it to become an extended byte somewhen.
-rw-r--r--src/industry_type.h2
-rw-r--r--src/newgrf.cpp10
2 files changed, 7 insertions, 5 deletions
diff --git a/src/industry_type.h b/src/industry_type.h
index 33119b57e..11828c530 100644
--- a/src/industry_type.h
+++ b/src/industry_type.h
@@ -28,6 +28,8 @@ static const IndustryType NEW_INDUSTRYOFFSET = 37; ///< origi
static const IndustryType NUM_INDUSTRYTYPES = 64; ///< total number of industry types, new and old
static const IndustryType INVALID_INDUSTRYTYPE = NUM_INDUSTRYTYPES; ///< one above amount is considered invalid
+static const IndustryGfx NUM_INDUSTRYTILES_PER_GRF = 255; ///< Maximum number of industry tiles per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on.
+
static const IndustryGfx INDUSTRYTILE_NOANIM = 0xFF; ///< flag to mark industry tiles as having no animation
static const IndustryGfx NEW_INDUSTRYTILEOFFSET = 175; ///< original number of tiles
static const IndustryGfx NUM_INDUSTRYTILES = 512; ///< total number of industry tiles, new and old
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 4115d5f1b..ae6c0b36f 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -2977,14 +2977,14 @@ static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int pr
{
ChangeInfoResult ret = CIR_SUCCESS;
- if (indtid + numinfo > NUM_INDUSTRYTILES) {
- grfmsg(1, "IndustryTilesChangeInfo: Too many industry tiles loaded (%u), max (%u). Ignoring.", indtid + numinfo, NUM_INDUSTRYTILES);
+ if (indtid + numinfo > NUM_INDUSTRYTILES_PER_GRF) {
+ grfmsg(1, "IndustryTilesChangeInfo: Too many industry tiles loaded (%u), max (%u). Ignoring.", indtid + numinfo, NUM_INDUSTRYTILES_PER_GRF);
return CIR_INVALID_ID;
}
/* Allocate industry tile specs if they haven't been allocated already. */
if (_cur.grffile->indtspec == NULL) {
- _cur.grffile->indtspec = CallocT<IndustryTileSpec*>(NUM_INDUSTRYTILES);
+ _cur.grffile->indtspec = CallocT<IndustryTileSpec*>(NUM_INDUSTRYTILES_PER_GRF);
}
for (int i = 0; i < numinfo; i++) {
@@ -7866,7 +7866,7 @@ static void ResetCustomIndustries()
}
if (indtspec == NULL) continue;
- for (uint i = 0; i < NUM_INDUSTRYTILES; i++) {
+ for (uint i = 0; i < NUM_INDUSTRYTILES_PER_GRF; i++) {
free(indtspec[i]);
}
@@ -8519,7 +8519,7 @@ static void FinaliseIndustriesArray()
}
if (indtspec != NULL) {
- for (int i = 0; i < NUM_INDUSTRYTILES; i++) {
+ for (int i = 0; i < NUM_INDUSTRYTILES_PER_GRF; i++) {
IndustryTileSpec *indtsp = indtspec[i];
if (indtsp != NULL) {
_industile_mngr.SetEntitySpec(indtsp);