summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2008-07-29 19:51:30 +0000
committerfrosch <frosch@openttd.org>2008-07-29 19:51:30 +0000
commit814c91843acbd3c42eb85939e68efc56ee1f065d (patch)
tree83db2fa5b6973b37ce41fee1714eb9c2abe7491a
parentda4dc32a6f48848c3133598e1b37e9f0052c5136 (diff)
downloadopenttd-814c91843acbd3c42eb85939e68efc56ee1f065d.tar.xz
(svn r13868) -Fix: Parent scope of industry variables.
-rw-r--r--src/newgrf_industries.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/newgrf_industries.cpp b/src/newgrf_industries.cpp
index 68739f9ca..16a36dc6a 100644
--- a/src/newgrf_industries.cpp
+++ b/src/newgrf_industries.cpp
@@ -210,6 +210,23 @@ uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte par
IndustryType type = object->u.industry.type;
const IndustrySpec *indspec = GetIndustrySpec(type);
+ /* Shall the variable get resolved in parent scope and are we not yet in parent scope? */
+ if (object->u.industry.gfx == INVALID_INDUSTRYTILE && object->scope == VSG_SCOPE_PARENT) {
+ /* Pass the request on to the town of the industry */
+ const Town *t;
+
+ if (industry != NULL) {
+ t = industry->town;
+ } else if (tile != INVALID_TILE) {
+ t = ClosestTownFromTile(tile, UINT_MAX);
+ } else {
+ *available = false;
+ return UINT_MAX;
+ }
+
+ return TownGetVariable(variable, parameter, available, t);
+ }
+
if (industry == NULL) {
/* industry does not exist, only use those variables that are "safe" */
switch (variable) {