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[] = {