changeset 15951:0571ace14576 draft

(svn r20639) -Add: random bits to object tiles
author rubidium <rubidium@openttd.org>
date Fri, 27 Aug 2010 22:26:21 +0000
parents 7fc54d8073b8
children d92e92e7ffcd
files docs/landscape.html docs/landscape_grid.html src/object_cmd.cpp src/object_map.h
diffstat 4 files changed, 19 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/docs/landscape.html
+++ b/docs/landscape.html
@@ -1596,6 +1596,7 @@
      <li>m1 bits 6..5 : Water class (sea, canal, river or land)
      <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li>
      <li>m2: index into the array of objects
+     <li>m3: random bits
      <li>m5: tile type:
       <table>
        <tr>
--- a/docs/landscape_grid.html
+++ b/docs/landscape_grid.html
@@ -330,7 +330,7 @@
       <td class="bits">XXXX XXXX</td>
       <td class="bits"><span class="free">O</span>XXX XXXX</td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
-      <td class="bits"><span class="free">OOOO OOOO</span></td>
+      <td class="bits">XXXX XXXX</td>
       <td class="bits"><span class="free">OOOO OOOO</span></td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XX<span class="free">OO OO</span>XX</td>
--- a/src/object_cmd.cpp
+++ b/src/object_cmd.cpp
@@ -63,7 +63,8 @@
 	assert(o->town != NULL);
 
 	TILE_AREA_LOOP(t, ta) {
-		MakeObject(t, type, owner, o->index, WATER_CLASS_INVALID);
+		WaterClass wc = (IsWaterTile(t) ? GetWaterClass(t) : WATER_CLASS_INVALID);
+		MakeObject(t, type, owner, o->index, wc, Random());
 		MarkTileDirtyByTile(t);
 	}
 }
--- a/src/object_map.h
+++ b/src/object_map.h
@@ -105,6 +105,18 @@
 	return IsTileType(t, MP_OBJECT) && IsStatue(t);
 }
 
+/**
+ * Get the random bits of this tile.
+ * @param t The tile to get the bits for.
+ * @pre IsTileType(t, MP_OBJECT)
+ * @return The random bits.
+ */
+static inline byte GetObjectRandomBits(TileIndex t)
+{
+	assert(IsTileType(t, MP_OBJECT));
+	return _m[t].m3;
+}
+
 
 /**
  * Make an Object tile.
@@ -114,14 +126,15 @@
  * @param o      The new owner of the tile.
  * @param index  Index to the object.
  * @param wc     Water class for this obect.
+ * @param random Random data to store on the tile
  */
-static inline void MakeObject(TileIndex t, ObjectType u, Owner o, ObjectID index, WaterClass wc)
+static inline void MakeObject(TileIndex t, ObjectType u, Owner o, ObjectID index, WaterClass wc, byte random)
 {
 	SetTileType(t, MP_OBJECT);
 	SetTileOwner(t, o);
 	SetWaterClass(t, wc);
 	_m[t].m2 = index;
-	_m[t].m3 = 0;
+	_m[t].m3 = random;
 	_m[t].m4 = 0;
 	_m[t].m5 = u;
 	SB(_m[t].m6, 2, 4, 0);