summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbelugas <belugas@openttd.org>2007-09-26 02:15:00 +0000
committerbelugas <belugas@openttd.org>2007-09-26 02:15:00 +0000
commite4c4c40753753d33e77bba4707d5f5710fecdbb9 (patch)
tree083a03dd434de9eab50697187b6b15615ab5d2c0 /src
parent926a87d8a74ff53a49ff1b62a63c90a99aec1747 (diff)
downloadopenttd-e4c4c40753753d33e77bba4707d5f5710fecdbb9.tar.xz
(svn r11163) -Codechange: Verify that the IndustryTileOverrideManager skip the magic value of 0xFF when assigning a new tileID. This is really important, since the value is reserved for water checking.
Diffstat (limited to 'src')
-rw-r--r--src/newgrf_commons.cpp2
-rw-r--r--src/newgrf_commons.h3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/newgrf_commons.cpp b/src/newgrf_commons.cpp
index 6ffd879e0..173997d99 100644
--- a/src/newgrf_commons.cpp
+++ b/src/newgrf_commons.cpp
@@ -105,7 +105,7 @@ uint16 OverrideManagerBase::AddEntityID(byte grf_local_id, uint32 grfid, byte su
for (id = max_offset; id < max_new_entities; id++) {
map = &mapping_ID[id];
- if (map->entity_id == 0 && map->grfid == 0) {
+ if (CheckValidNewID(id) && map->entity_id == 0 && map->grfid == 0) {
map->entity_id = grf_local_id;
map->grfid = grfid;
map->substitute_id = substitute_id;
diff --git a/src/newgrf_commons.h b/src/newgrf_commons.h
index 25933117e..51ebd93b8 100644
--- a/src/newgrf_commons.h
+++ b/src/newgrf_commons.h
@@ -33,6 +33,7 @@ protected:
uint16 max_new_entities; ///< what is the amount of entities, old and new summed
uint16 invalid_ID; ///< ID used to dected invalid entities;
+ virtual bool CheckValidNewID(uint16 testid) { return true; }
public:
EntityIDMapping *mapping_ID; ///< mapping of ids from grf files. Public out of convenience
@@ -76,6 +77,8 @@ public:
struct IndustryTileSpec;
class IndustryTileOverrideManager : public OverrideManagerBase {
+protected:
+ virtual bool CheckValidNewID(uint16 testid) { return testid != 0xFF; }
public:
IndustryTileOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) :
OverrideManagerBase(offset, maximum, invalid) {}