diff options
-rw-r--r-- | src/newgrf.cpp | 14 | ||||
-rw-r--r-- | src/newgrf_object.h | 1 | ||||
-rw-r--r-- | src/table/object_land.h | 2 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index bde9037e6..580ad49e2 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3012,6 +3012,7 @@ static ChangeInfoResult IgnoreObjectProperty(uint prop, ByteReader *buf) case 0x12: case 0x14: case 0x16: + case 0x17: buf->ReadByte(); case 0x09: @@ -3066,7 +3067,10 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea ObjectSpec **ospec = &_cur_grffile->objectspec[id + i]; /* Allocate space for this object. */ - if (*ospec == NULL) *ospec = CallocT<ObjectSpec>(1); + if (*ospec == NULL) { + *ospec = CallocT<ObjectSpec>(1); + (*ospec)->views = 1; // Default for NewGRFs that don't set it. + } /* Swap classid because we read it in BE. */ uint32 classid = buf->ReadDWord(); @@ -3138,6 +3142,14 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea spec->height = buf->ReadByte(); break; + case 0x17: // Views + spec->views = buf->ReadByte(); + if (spec->views != 1 && spec->views != 2 && spec->views != 4) { + grfmsg(2, "ObjectChangeInfo: Invalid number of views (%u) for object id %u. Ignoring.", spec->views, id + i); + spec->views = 1; + } + break; + default: ret = CIR_UNKNOWN; break; diff --git a/src/newgrf_object.h b/src/newgrf_object.h index aceca6943..3b60e94e7 100644 --- a/src/newgrf_object.h +++ b/src/newgrf_object.h @@ -69,6 +69,7 @@ struct ObjectSpec { AnimationInfo animation; ///< Information about the animation. uint16 callback_mask; ///< Bitmask of requested/allowed callbacks. uint8 height; ///< The height of this structure, in heightlevels; max MAX_TILE_HEIGHT. + uint8 views; ///< The number of views. bool enabled; ///< Is this spec enabled? /** diff --git a/src/table/object_land.h b/src/table/object_land.h index 9a2c1f833..3c7ac1bc0 100644 --- a/src/table/object_land.h +++ b/src/table/object_land.h @@ -123,7 +123,7 @@ static const DrawTileSprites _object_hq[] = { #undef TILE_SPRITE_LINE -#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, 0xF, size, 0, 0, build_cost_multiplier, clear_cost_multiplier, flags, {0, 0, 0, 0}, 0, height, true } +#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, 0xF, size, 0, 0, build_cost_multiplier, clear_cost_multiplier, flags, {0, 0, 0, 0}, 0, height, 1, true } /** Specification of the original object structures. */ extern const ObjectSpec _original_objects[] = { |