Mercurial > hg > openttd
changeset 16719:6f8c7f5072b3 draft
(svn r21452) -Codechange: read object property 17 (number of views)
author | rubidium <rubidium@openttd.org> |
---|---|
date | Fri, 10 Dec 2010 21:30:26 +0000 (2010-12-10) |
parents | 05dacd546a70 |
children | b894ed60f8e4 |
files | src/newgrf.cpp src/newgrf_object.h src/table/object_land.h |
diffstat | 3 files changed, 15 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3012,6 +3012,7 @@ case 0x12: case 0x14: case 0x16: + case 0x17: buf->ReadByte(); case 0x09: @@ -3066,7 +3067,10 @@ 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 @@ 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;
--- a/src/newgrf_object.h +++ b/src/newgrf_object.h @@ -69,6 +69,7 @@ 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? /**
--- a/src/table/object_land.h +++ b/src/table/object_land.h @@ -123,7 +123,7 @@ #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[] = {