summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-08-27 22:26:21 +0000
committerrubidium <rubidium@openttd.org>2010-08-27 22:26:21 +0000
commit536bb704b7bd4d15302e6e2f0200184af151cb73 (patch)
tree4e59ca5a88842082b129dffae41b33cf3670d15e
parent3e9e1b8e659c7fe36ac2188fb86ac601a8210d50 (diff)
downloadopenttd-536bb704b7bd4d15302e6e2f0200184af151cb73.tar.xz
(svn r20639) -Add: random bits to object tiles
-rw-r--r--docs/landscape.html1
-rw-r--r--docs/landscape_grid.html2
-rw-r--r--src/object_cmd.cpp3
-rw-r--r--src/object_map.h17
4 files changed, 19 insertions, 4 deletions
diff --git a/docs/landscape.html b/docs/landscape.html
index a01988810..cfaf0b3bd 100644
--- 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>
diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html
index 77cde68b3..897529888 100644
--- a/docs/landscape_grid.html
+++ b/docs/landscape_grid.html
@@ -330,7 +330,7 @@ the array so you can quickly see what is used and what is not.
<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>
diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp
index c92ff4580..5c39529c8 100644
--- a/src/object_cmd.cpp
+++ b/src/object_cmd.cpp
@@ -63,7 +63,8 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town)
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);
}
}
diff --git a/src/object_map.h b/src/object_map.h
index e08e36ee6..580fd6976 100644
--- a/src/object_map.h
+++ b/src/object_map.h
@@ -105,6 +105,18 @@ static inline bool IsStatueTile(TileIndex t)
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 @@ static inline bool IsStatueTile(TileIndex t)
* @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);