diff options
author | glx <glx@openttd.org> | 2008-02-08 16:56:52 +0000 |
---|---|---|
committer | glx <glx@openttd.org> | 2008-02-08 16:56:52 +0000 |
commit | 37e27a296e3e5c825f8b0c56acf6105f1ae2105b (patch) | |
tree | db8111fc71fc815da99e819d25a04aa53ba09ebe | |
parent | f476d861d2d945d8b873d96999e58416015ba1ec (diff) | |
download | openttd-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.cpp | 23 | ||||
-rw-r--r-- | src/newgrf_commons.h | 3 |
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); }; |