summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2008-02-08 16:56:52 +0000
committerglx <glx@openttd.org>2008-02-08 16:56:52 +0000
commit37e27a296e3e5c825f8b0c56acf6105f1ae2105b (patch)
treedb8111fc71fc815da99e819d25a04aa53ba09ebe
parentf476d861d2d945d8b873d96999e58416015ba1ec (diff)
downloadopenttd-37e27a296e3e5c825f8b0c56acf6105f1ae2105b.tar.xz
(svn r12086) -Fix [FS#1747] (r11425): check overrides only for industries when mapping newgrf entities to 'real' entities
-rw-r--r--src/newgrf_commons.cpp23
-rw-r--r--src/newgrf_commons.h3
2 files changed, 20 insertions, 6 deletions
diff --git a/src/newgrf_commons.cpp b/src/newgrf_commons.cpp
index b7684612c..59d0b06f1 100644
--- a/src/newgrf_commons.cpp
+++ b/src/newgrf_commons.cpp
@@ -91,11 +91,6 @@ uint16 OverrideManagerBase::GetID(uint8 grf_local_id, uint32 grfid)
}
}
- /* No mapping found, try the overrides */
- for (uint16 id = 0; id < max_offset; id++) {
- if (entity_overrides[id] == grf_local_id && grfid_overrides[id] == grfid) return id;
- }
-
return invalid_ID;
}
@@ -169,6 +164,24 @@ void HouseOverrideManager::SetEntitySpec(const HouseSpec *hs)
}
}
+/** Return the ID (if ever available) of a previously inserted entity.
+ * @param grf_local_id ID of this enity withing the grfID
+ * @param grfid ID of the grf file
+ * @return the ID of the candidate, of the Invalid flag item ID
+ */
+uint16 IndustryOverrideManager::GetID(uint8 grf_local_id, uint32 grfid)
+{
+ uint16 id = OverrideManagerBase::GetID(grf_local_id, grfid);
+ if (id != invalid_ID) return id;
+
+ /* No mapping found, try the overrides */
+ for (id = 0; id < max_offset; id++) {
+ if (entity_overrides[id] == grf_local_id && grfid_overrides[id] == grfid) return id;
+ }
+
+ return invalid_ID;
+}
+
/** Method to find an entity ID and to mark it as reserved for the Industry to be included.
* @param grf_local_id ID used by the grf file for pre-installation work (equivalent of TTDPatch's setid
* @param grfid ID of the current grf file
diff --git a/src/newgrf_commons.h b/src/newgrf_commons.h
index 5b9dea9e7..80432d0fe 100644
--- a/src/newgrf_commons.h
+++ b/src/newgrf_commons.h
@@ -49,7 +49,7 @@ public:
virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
uint16 GetSubstituteID(byte entity_id);
- uint16 GetID(uint8 grf_local_id, uint32 grfid);
+ virtual uint16 GetID(uint8 grf_local_id, uint32 grfid);
inline uint16 GetMaxMapping() { return max_new_entities; }
inline uint16 GetMaxOffset() { return max_offset; }
@@ -72,6 +72,7 @@ public:
OverrideManagerBase(offset, maximum, invalid) {}
virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
+ virtual uint16 GetID(uint8 grf_local_id, uint32 grfid);
void SetEntitySpec(IndustrySpec *inds);
};