diff options
Diffstat (limited to 'src/newgrf.cpp')
-rw-r--r-- | src/newgrf.cpp | 14 |
1 files changed, 13 insertions, 1 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; |