(svn r12086) -Fix [FS#1747] (r11425): check overrides only for industries when mapping newgrf entities to 'real' entities

This commit is contained in:
glx 2008-02-08 16:56:52 +00:00
parent 7b9efcea21
commit 731137678c
2 changed files with 20 additions and 6 deletions

View File

@ -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

View File

@ -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);
};