changeset 8681:051357af9f76 draft

(svn r12347) -Feature(ette): Increase house animation frame number from 32 to 128.
author frosch <frosch@openttd.org>
date Thu, 06 Mar 2008 14:21:10 +0000
parents 6a8d872901f2
children 40efe8e42f8f
files docs/landscape.html docs/landscape_grid.html src/openttd.cpp src/saveload.cpp src/town_map.h
diffstat 5 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/docs/landscape.html
+++ b/docs/landscape.html
@@ -646,6 +646,7 @@
        </li>
       </ul>
      <li>m3 bit 6 : bit 8 of house type (m4), allowing 512 different types.</li>
+     <li>m3 bit 5 : bit 6 of current animation frame (see m6)</li>
      <li>m3 bits 4..0 : triggers activated <a href="#newhouses">(newhouses)</a></li>
      <li>m4 : <a href="landscape_externals.html">town building type</a> (with m3[6] bit)</li>
      <li>m5 : see m3 bit 7</li>
@@ -653,8 +654,7 @@
       <ul>
        <li>If <a href="#newhouses">newhouses</a> is activated
         <ul>
-         <li>bits 7..3 : Current animation frame</li>
-         <li>bit 2 : free</li>
+         <li>bits 7..2 : Current animation frame (bits 5..0); bit 6 in m3</li>
         </ul>
        </li>
        <li>Standard behaviour
--- a/docs/landscape_grid.html
+++ b/docs/landscape_grid.html
@@ -170,10 +170,10 @@
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXXX XXXX XXXX XXXX</td>
-      <td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td>
+      <td class="bits">XXX<span class="option">~ ~~</span>XX</td>
       <td class="bits">XXXX XXXX</td>
       <td class="bits">XXX<span class="abuse">X XXXX</span></td>
-      <td class="bits"><span class="abuse">XXXX X</span>XXX</td>
+      <td class="bits"><span class="abuse">XXXX XX</span>XX</td>
       <td class="bits">XXXX <span class="abuse">XXXX</span></td>
     </tr>
     <tr>
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -2431,6 +2431,15 @@
 		}
 	}
 
+	if (CheckSavegameVersion(91)) {
+		/* Increase HouseAnimationFrame from 5 to 7 bits */
+		for (TileIndex t = 0; t < map_size; t++) {
+			if (IsTileType(t, MP_HOUSE) && GetHouseType(t) >= NEW_HOUSE_OFFSET) {
+				SetHouseAnimationFrame(t, GB(_m[t].m6, 3, 5));
+			}
+		}
+	}
+
 	return InitializeWindowsAndCaches();
 }
 
--- a/src/saveload.cpp
+++ b/src/saveload.cpp
@@ -34,7 +34,7 @@
 
 #include "table/strings.h"
 
-extern const uint16 SAVEGAME_VERSION = 90;
+extern const uint16 SAVEGAME_VERSION = 91;
 uint16 _sl_version;       ///< the major savegame version identifier
 byte   _sl_minor_version; ///< the minor savegame version, DO NOT USE!
 
--- a/src/town_map.h
+++ b/src/town_map.h
@@ -145,7 +145,7 @@
 static inline byte GetHouseAnimationFrame(TileIndex t)
 {
 	assert(IsTileType(t, MP_HOUSE));
-	return GB(_m[t].m6, 3, 5);
+	return GB(_m[t].m6, 2, 6) | (GB(_m[t].m3, 5, 1) << 6);
 }
 
 /**
@@ -157,7 +157,8 @@
 static inline void SetHouseAnimationFrame(TileIndex t, byte frame)
 {
 	assert(IsTileType(t, MP_HOUSE));
-	SB(_m[t].m6, 3, 5, frame);
+	SB(_m[t].m6, 2, 6, GB(frame, 0, 6));
+	SB(_m[t].m3, 5, 1, GB(frame, 6, 1));
 }
 
 /**