changeset 7337:9bbfc12a84d6 draft

(svn r10700) -Codechange: Enable to jump (by default) to the overriding industry tile spec of the one been queried. Only on certain very specific circumstances do we need the original spec
author belugas <belugas@openttd.org>
date Fri, 27 Jul 2007 02:41:29 +0000
parents 6eee1c30215d
children 5981be63d4c3
files src/industry.h src/industry_cmd.cpp src/newgrf_industries.cpp
diffstat 3 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/industry.h
+++ b/src/industry.h
@@ -205,7 +205,7 @@
 
 /* industry_cmd.cpp*/
 const IndustrySpec *GetIndustrySpec(IndustryType thistype);    ///< Array of industries data
-const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);  ///< Array of industry tiles data
+const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx, bool full_check = true);  ///< Array of industry tiles data
 void ResetIndustries();
 void PlantRandomFarmField(const Industry *i);
 
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -124,13 +124,19 @@
  * This will ensure at once : proper access and
  * not allowing modifications of it.
  * @param gfx of industrytile (which is the index in _industry_tile_specs)
+ * @param full_check (default to true) verify if an override is available.
+ *  If so, use it instead of the gfx provided.
  * @pre gfx < INVALID_INDUSTRYTILE
  * @return a pointer to the corresponding industrytile spec
  **/
-const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx)
+const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx, bool full_check)
 {
 	assert(gfx < INVALID_INDUSTRYTILE);
-	return &_industry_tile_specs[gfx];
+	const IndustryTileSpec *its = &_industry_tile_specs[gfx];
+	if (full_check && its->grf_prop.override != INVALID_INDUSTRYTILE) {
+		its = &_industry_tile_specs[its->grf_prop.override];
+	}
+	return its;
 }
 
 void DestroyIndustry(Industry *i)
--- a/src/newgrf_industries.cpp
+++ b/src/newgrf_industries.cpp
@@ -87,8 +87,8 @@
 
 		if (GetIndustryIndex(new_tile) == i->index) {  // Does it belong to the same industry?
 			IndustryGfx gfx = GetIndustryGfx(new_tile);
-			const IndustryTileSpec *indtsp = GetIndustryTileSpec(gfx);
-			const IndustryTileSpec *indold = GetIndustryTileSpec(GetIndustryGfx(old_tile));
+			const IndustryTileSpec *indtsp = GetIndustryTileSpec(gfx, false);
+			const IndustryTileSpec *indold = GetIndustryTileSpec(GetIndustryGfx(old_tile), false);
 
 			if (gfx < NEW_INDUSTRYOFFSET) {  // Does it belongs to an old type?
 				/* It is an old tile.  We have to see if it's been overriden */