1
0
Fork 0

(svn r20446) -Codechange: unify the location of the water class

release/1.1
rubidium 2010-08-11 14:14:06 +00:00
parent 43d6740f2d
commit ab5b0ceff2
10 changed files with 91 additions and 59 deletions

View File

@ -52,7 +52,7 @@
<a href="landscape_grid.html">Landscape grid</a> page. <a href="landscape_grid.html">Landscape grid</a> page.
</p> </p>
The <a name="OwnershipInfo">owner of a tile</a>, as frequently associated with attribute m1, The <a name="OwnershipInfo">owner of a tile</a>, as frequently associated with attribute m1 bits 4..0,
can be either companies (human or AI) or "Game entities". can be either companies (human or AI) or "Game entities".
They are identified using: They are identified using:
<table border="1"> <table border="1">
@ -78,7 +78,7 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>)</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>)</li>
<li>m2: see fields</li> <li>m2: see fields</li>
<li>m3 bits 3..0: see fields</li> <li>m3 bits 3..0: see fields</li>
<li>m3 bit 4: set if the tile is covered with snow</li> <li>m3 bit 4: set if the tile is covered with snow</li>
@ -183,7 +183,7 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the tile</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the tile</li>
<li>m2: see signals</li> <li>m2: see signals</li>
<li>m3 bits 7..4: see signals</li> <li>m3 bits 7..4: see signals</li>
<li>m3 bits 3..0 = <a name="TrackType">track type</a>: <li>m3 bits 3..0 = <a name="TrackType">track type</a>:
@ -548,7 +548,7 @@
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>) <li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)
<li>m5 bit 6 clear: road <li>m5 bit 6 clear: road
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
<li>m7 bits 3..0: counter for the roadworks</li> <li>m7 bits 3..0: counter for the roadworks</li>
<li>m5 bits 3..0: road layout road type 0 (normal road): bit set = road piece present: <li>m5 bits 3..0: road layout road type 0 (normal road): bit set = road piece present:
<table> <table>
@ -587,7 +587,7 @@
</li> </li>
<li>m5 bit 6 set: level crossing <li>m5 bit 6 set: level crossing
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the railway track</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the railway track</li>
<li>m3 bits 3..0: <a href="#TrackType">railway track type</a></li> <li>m3 bits 3..0: <a href="#TrackType">railway track type</a></li>
<li>m5 bit 0: direction <li>m5 bit 0: direction
<table> <table>
@ -610,7 +610,7 @@
</li> </li>
<li>m5 bit 7 set, bit 6 clear: road depot <li>m5 bit 7 set, bit 6 clear: road depot
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the depot</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the depot</li>
<li>m2: Depot index</li> <li>m2: Depot index</li>
<li>m5 bits 3..0: exit towards: <li>m5 bits 3..0: exit towards:
<table> <table>
@ -723,7 +723,7 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
<li>m2 bits 8..6: ground <li>m2 bits 8..6: ground
<table> <table>
@ -822,12 +822,12 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the station</li> <li>m1 bits 6..5: water class for buoys, water part of docks and for airport tiles</li>
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the station</li>
<li>m2: index into the array of stations</li> <li>m2: index into the array of stations</li>
<li>m3 bits 7..4: persistent random data for railway stations/waypoints and airports)</li> <li>m3 bits 7..4: persistent random data for railway stations/waypoints and airports)</li>
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram tracks (road stop)</li> <li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram tracks (road stop)</li>
<li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li> <li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li>
<li>m3 bits 1..0: water class for buoys, water part of docks and for airport tiles</li>
<li>m4: custom station id; 0 means standard graphics</li> <li>m4: custom station id; 0 means standard graphics</li>
<li>m5: graphics index (range from 0..255 for each station type): <li>m5: graphics index (range from 0..255 for each station type):
<table> <table>
@ -959,9 +959,9 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> (for sea, rivers, and coasts normally <tt>11</tt>)</li> <li>m1 bits 6..5 : Water class (sea, canal or river)
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (for sea, rivers, and coasts normally <tt>11</tt>)</li>
<li>m2: Depot index (for depots only)</li> <li>m2: Depot index (for depots only)</li>
<li>m3 bits 1..0 : Water class (sea, canal or river)
<li>m4: Random data for canal or river tiles</li> <li>m4: Random data for canal or river tiles</li>
<li>m5: tile type: <li>m5: tile type:
<table> <table>
@ -1413,7 +1413,7 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a></li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a></li>
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram</li> <li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram</li>
<li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway</li> <li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway</li>
<li>m5 bit 4: pbs reservation state for railway</li> <li>m5 bit 4: pbs reservation state for railway</li>
@ -1566,7 +1566,8 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li> <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: see company statue <li>m2: see company statue
<li>m3: offset to northern most tile <li>m3: offset to northern most tile
<li>m5: tile type: <li>m5: tile type:

View File

@ -66,7 +66,7 @@ the array so you can quickly see what is used and what is not.
<td rowspan="2">0</td> <td rowspan="2">0</td>
<td class="caption">ground</td> <td class="caption">ground</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td> <td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOO</span>X <span class="free">OOOO</span></td> <td class="bits"><span class="free">OOO</span>X <span class="free">OOOO</span></td>
<td class="bits">XXXX XX<span class="free">OO</span></td> <td class="bits">XXXX XX<span class="free">OO</span></td>
@ -77,7 +77,7 @@ the array so you can quickly see what is used and what is not.
<tr> <tr>
<td class="caption">farmland</td> <td class="caption">farmland</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td> <td class="bits">-inherit-</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
@ -89,7 +89,7 @@ the array so you can quickly see what is used and what is not.
<td rowspan=3>1</td> <td rowspan=3>1</td>
<td class="caption">rail</td> <td class="caption">rail</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX <span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO</span> XXXX <span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO</span> XXXX</td> <td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td> <td class="bits"><span class="free">OOOO</span> XXXX</td>
@ -123,7 +123,7 @@ the array so you can quickly see what is used and what is not.
<td rowspan=3>2</td> <td rowspan=3>2</td>
<td class="caption">road</td> <td class="caption">road</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
@ -169,7 +169,7 @@ the array so you can quickly see what is used and what is not.
<td>4</td> <td>4</td>
<td class="caption">trees</td> <td class="caption">trees</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td> <td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td> <td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
<td class="bits"><span class="option">~~</span>XX XXXX</td> <td class="bits"><span class="option">~~</span>XX XXXX</td>
<td class="bits">XXXX XX<span class="free">OO</span></td> <td class="bits">XXXX XX<span class="free">OO</span></td>
@ -181,7 +181,7 @@ the array so you can quickly see what is used and what is not.
<td rowspan=7>5</td> <td rowspan=7>5</td>
<td class="caption">rail station</td> <td class="caption">rail station</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td> <td class="bits"><span class="free">O</span>XXX XXXX</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
@ -216,7 +216,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="option">~~~~ ~</span>XXX</td> <td class="bits"><span class="option">~~~~ ~</span>XXX</td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
@ -227,7 +227,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XXXX <span class="free">OO</span>XX</td> <td class="bits">XXXX <span class="free">OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
@ -238,7 +238,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td> <td class="bits"><span class="option">~~~~ ~~~~</span></td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
@ -259,9 +259,9 @@ the array so you can quickly see what is used and what is not.
<td rowspan=3>6</td> <td rowspan=3>6</td>
<td class="caption">sea, shore</td> <td class="caption">sea, shore</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td> <td class="bits"><span class="free">O</span>XXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">X<span class="option">~~</span>X XXXX</td> <td class="bits">X<span class="option">~~</span>X XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits">XX<span class="free">OO OO</span>XX</td>
@ -272,7 +272,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits">XX<span class="free">OO OO</span>XX</td>
@ -283,7 +283,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits">XX<span class="free">OO OO</span>XX</td>
@ -306,7 +306,7 @@ the array so you can quickly see what is used and what is not.
<td rowspan=2>9</td> <td rowspan=2>9</td>
<td class="caption">tunnel entrance</td> <td class="caption">tunnel entrance</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
@ -329,7 +329,7 @@ the array so you can quickly see what is used and what is not.
<td rowspan=2>A</td> <td rowspan=2>A</td>
<td class="caption">objects</td> <td class="caption">objects</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td> <td class="bits"><span class="free">O</span>XXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOO</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>

View File

@ -277,6 +277,7 @@ static inline void MakeClear(TileIndex t, ClearGround g, uint density)
if (!MayHaveBridgeAbove(t)) SB(_m[t].m6, 6, 2, 0); if (!MayHaveBridgeAbove(t)) SB(_m[t].m6, 6, 2, 0);
SetTileType(t, MP_CLEAR); SetTileType(t, MP_CLEAR);
_m[t].m1 = 0;
SetTileOwner(t, OWNER_NONE); SetTileOwner(t, OWNER_NONE);
_m[t].m2 = 0; _m[t].m2 = 0;
_m[t].m3 = 0; _m[t].m3 = 0;
@ -296,6 +297,7 @@ static inline void MakeClear(TileIndex t, ClearGround g, uint density)
static inline void MakeField(TileIndex t, uint field_type, IndustryID industry) static inline void MakeField(TileIndex t, uint field_type, IndustryID industry)
{ {
SetTileType(t, MP_CLEAR); SetTileType(t, MP_CLEAR);
_m[t].m1 = 0;
SetTileOwner(t, OWNER_NONE); SetTileOwner(t, OWNER_NONE);
_m[t].m2 = industry; _m[t].m2 = industry;
_m[t].m3 = field_type; _m[t].m3 = field_type;

View File

@ -53,7 +53,7 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, uint index)
TileArea ta(tile, GB(spec->size, 0, 4), GB(spec->size, 4, 4)); TileArea ta(tile, GB(spec->size, 0, 4), GB(spec->size, 4, 4));
TILE_AREA_LOOP(t, ta) { TILE_AREA_LOOP(t, ta) {
TileIndex offset = t - tile; TileIndex offset = t - tile;
MakeObject(t, type, owner, TileY(offset) << 4 | TileX(offset), index); MakeObject(t, type, owner, TileY(offset) << 4 | TileX(offset), index, WATER_CLASS_INVALID);
MarkTileDirtyByTile(t); MarkTileDirtyByTile(t);
} }
} }

View File

@ -13,6 +13,7 @@
#define OBJECT_MAP_H #define OBJECT_MAP_H
#include "tile_map.h" #include "tile_map.h"
#include "water_map.h"
#include "object_type.h" #include "object_type.h"
/** /**
@ -162,11 +163,13 @@ static inline void SetObjectOffset(TileIndex t, uint8 offset)
* @param o The new owner of the tile. * @param o The new owner of the tile.
* @param offset The offset to the northern tile of this object. * @param offset The offset to the northern tile of this object.
* @param index Generic index associated with the object type. * @param index Generic index associated with the object type.
* @param wc Water class for this obect.
*/ */
static inline void MakeObject(TileIndex t, ObjectType u, Owner o, uint8 offset, uint index) static inline void MakeObject(TileIndex t, ObjectType u, Owner o, uint8 offset, uint index, WaterClass wc)
{ {
SetTileType(t, MP_OBJECT); SetTileType(t, MP_OBJECT);
SetTileOwner(t, o); SetTileOwner(t, o);
SetWaterClass(t, wc);
_m[t].m2 = index; _m[t].m2 = index;
_m[t].m3 = offset; _m[t].m3 = offset;
_m[t].m4 = 0; _m[t].m4 = 0;

View File

@ -1543,6 +1543,41 @@ bool AfterLoadGame()
} }
} }
/* The water class was moved/unified. */
if (CheckSavegameVersion(146)) {
for (TileIndex t = 0; t < map_size; t++) {
switch (GetTileType(t)) {
case MP_STATION:
switch (GetStationType(t)) {
case STATION_OILRIG:
case STATION_DOCK:
case STATION_BUOY:
SetWaterClass(t, (WaterClass)GB(_m[t].m3, 0, 2));
SB(_m[t].m3, 0, 2, 0);
break;
default:
SetWaterClass(t, WATER_CLASS_INVALID);
break;
}
break;
case MP_WATER:
SetWaterClass(t, (WaterClass)GB(_m[t].m3, 0, 2));
SB(_m[t].m3, 0, 2, 0);
break;
case MP_OBJECT:
SetWaterClass(t, WATER_CLASS_INVALID);
break;
default:
/* No water class. */
break;
}
}
}
if (CheckSavegameVersion(86)) { if (CheckSavegameVersion(86)) {
for (TileIndex t = 0; t < map_size; t++) { for (TileIndex t = 0; t < map_size; t++) {
/* Move river flag and update canals to use water class */ /* Move river flag and update canals to use water class */
@ -2153,12 +2188,6 @@ bool AfterLoadGame()
FOR_ALL_DEPOTS(d) d->build_date = _date; FOR_ALL_DEPOTS(d) d->build_date = _date;
} }
if (CheckSavegameVersion(145)) {
for (TileIndex t = 0; t < map_size; t++) {
if (IsAirportTile(t)) SetWaterClass(t, WATER_CLASS_INVALID);
}
}
/* Road stops is 'only' updating some caches */ /* Road stops is 'only' updating some caches */
AfterLoadRoadStops(); AfterLoadRoadStops();
AfterLoadLabelMaps(); AfterLoadLabelMaps();

View File

@ -209,8 +209,9 @@
* 143 20048 * 143 20048
* 144 20334 * 144 20334
* 145 20376 * 145 20376
* 146 20446
*/ */
extern const uint16 SAVEGAME_VERSION = 145; ///< current savegame version of OpenTTD extern const uint16 SAVEGAME_VERSION = 146; ///< current savegame version of OpenTTD
SavegameType _savegame_type; ///< type of savegame we are loading SavegameType _savegame_type; ///< type of savegame we are loading

View File

@ -553,7 +553,7 @@ static inline byte GetStationTileRandomBits(TileIndex t)
* @param st the type this station tile * @param st the type this station tile
* @param section the StationGfx to be used for this tile * @param section the StationGfx to be used for this tile
*/ */
static inline void MakeStation(TileIndex t, Owner o, StationID sid, StationType st, byte section) static inline void MakeStation(TileIndex t, Owner o, StationID sid, StationType st, byte section, WaterClass wc = WATER_CLASS_INVALID)
{ {
SetTileType(t, MP_STATION); SetTileType(t, MP_STATION);
SetTileOwner(t, o); SetTileOwner(t, o);
@ -644,8 +644,7 @@ static inline void MakeDriveThroughRoadStop(TileIndex t, Owner station, Owner ro
*/ */
static inline void MakeAirport(TileIndex t, Owner o, StationID sid, byte section, WaterClass wc) static inline void MakeAirport(TileIndex t, Owner o, StationID sid, byte section, WaterClass wc)
{ {
MakeStation(t, o, sid, STATION_AIRPORT, section); MakeStation(t, o, sid, STATION_AIRPORT, section, wc);
SetWaterClass(t, wc);
} }
/** /**
@ -659,8 +658,7 @@ static inline void MakeBuoy(TileIndex t, StationID sid, WaterClass wc)
/* Make the owner of the buoy tile the same as the current owner of the /* Make the owner of the buoy tile the same as the current owner of the
* water tile. In this way, we can reset the owner of the water to its * water tile. In this way, we can reset the owner of the water to its
* original state when the buoy gets removed. */ * original state when the buoy gets removed. */
MakeStation(t, GetTileOwner(t), sid, STATION_BUOY, 0); MakeStation(t, GetTileOwner(t), sid, STATION_BUOY, 0, wc);
SetWaterClass(t, wc);
} }
/** /**
@ -674,8 +672,7 @@ static inline void MakeBuoy(TileIndex t, StationID sid, WaterClass wc)
static inline void MakeDock(TileIndex t, Owner o, StationID sid, DiagDirection d, WaterClass wc) static inline void MakeDock(TileIndex t, Owner o, StationID sid, DiagDirection d, WaterClass wc)
{ {
MakeStation(t, o, sid, STATION_DOCK, d); MakeStation(t, o, sid, STATION_DOCK, d);
MakeStation(t + TileOffsByDiagDir(d), o, sid, STATION_DOCK, GFX_DOCK_BASE_WATER_PART + DiagDirToAxis(d)); MakeStation(t + TileOffsByDiagDir(d), o, sid, STATION_DOCK, GFX_DOCK_BASE_WATER_PART + DiagDirToAxis(d), wc);
SetWaterClass(t + TileOffsByDiagDir(d), wc);
} }
/** /**
@ -686,8 +683,7 @@ static inline void MakeDock(TileIndex t, Owner o, StationID sid, DiagDirection d
*/ */
static inline void MakeOilrig(TileIndex t, StationID sid, WaterClass wc) static inline void MakeOilrig(TileIndex t, StationID sid, WaterClass wc)
{ {
MakeStation(t, OWNER_NONE, sid, STATION_OILRIG, 0); MakeStation(t, OWNER_NONE, sid, STATION_OILRIG, 0, wc);
SetWaterClass(t, wc);
} }
#endif /* STATION_MAP_H */ #endif /* STATION_MAP_H */

View File

@ -142,7 +142,7 @@ static inline Owner GetTileOwner(TileIndex tile)
assert(!IsTileType(tile, MP_HOUSE)); assert(!IsTileType(tile, MP_HOUSE));
assert(!IsTileType(tile, MP_INDUSTRY)); assert(!IsTileType(tile, MP_INDUSTRY));
return (Owner)_m[tile].m1; return (Owner)GB(_m[tile].m1, 0, 5);
} }
/** /**
@ -162,7 +162,7 @@ static inline void SetTileOwner(TileIndex tile, Owner owner)
assert(!IsTileType(tile, MP_HOUSE)); assert(!IsTileType(tile, MP_HOUSE));
assert(!IsTileType(tile, MP_INDUSTRY)); assert(!IsTileType(tile, MP_INDUSTRY));
_m[tile].m1 = owner; SB(_m[tile].m1, 0, 5, owner);
} }
/** /**

View File

@ -72,8 +72,8 @@ static inline WaterTileType GetWaterTileType(TileIndex t)
*/ */
static inline WaterClass GetWaterClass(TileIndex t) static inline WaterClass GetWaterClass(TileIndex t)
{ {
assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY)); assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY) || IsTileType(t, MP_OBJECT));
return (WaterClass)(IsTileType(t, MP_INDUSTRY) ? GB(_m[t].m1, 5, 2) : GB(_m[t].m3, 0, 2)); return (WaterClass)GB(_m[t].m1, 5, 2);
} }
/** /**
@ -83,12 +83,8 @@ static inline WaterClass GetWaterClass(TileIndex t)
*/ */
static inline void SetWaterClass(TileIndex t, WaterClass wc) static inline void SetWaterClass(TileIndex t, WaterClass wc)
{ {
assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY)); assert(IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY) || IsTileType(t, MP_OBJECT));
if (IsTileType(t, MP_INDUSTRY)) { SB(_m[t].m1, 5, 2, wc);
SB(_m[t].m1, 5, 2, wc);
} else {
SB(_m[t].m3, 0, 2, wc);
}
} }
/** /**
@ -251,6 +247,7 @@ static inline void MakeShore(TileIndex t)
{ {
SetTileType(t, MP_WATER); SetTileType(t, MP_WATER);
SetTileOwner(t, OWNER_WATER); SetTileOwner(t, OWNER_WATER);
SetWaterClass(t, WATER_CLASS_SEA);
_m[t].m2 = 0; _m[t].m2 = 0;
_m[t].m3 = 0; _m[t].m3 = 0;
_m[t].m4 = 0; _m[t].m4 = 0;
@ -270,8 +267,9 @@ static inline void MakeWater(TileIndex t, Owner o, WaterClass wc, uint8 random_b
{ {
SetTileType(t, MP_WATER); SetTileType(t, MP_WATER);
SetTileOwner(t, o); SetTileOwner(t, o);
SetWaterClass(t, wc);
_m[t].m2 = 0; _m[t].m2 = 0;
_m[t].m3 = wc; _m[t].m3 = 0;
_m[t].m4 = random_bits; _m[t].m4 = random_bits;
_m[t].m5 = 0; _m[t].m5 = 0;
SB(_m[t].m6, 2, 4, 0); SB(_m[t].m6, 2, 4, 0);
@ -322,8 +320,9 @@ static inline void MakeShipDepot(TileIndex t, Owner o, DepotID did, DepotPart ba
{ {
SetTileType(t, MP_WATER); SetTileType(t, MP_WATER);
SetTileOwner(t, o); SetTileOwner(t, o);
SetWaterClass(t, original_water_class);
_m[t].m2 = did; _m[t].m2 = did;
_m[t].m3 = original_water_class; _m[t].m3 = 0;
_m[t].m4 = 0; _m[t].m4 = 0;
_m[t].m5 = base + a * 2; _m[t].m5 = base + a * 2;
SB(_m[t].m6, 2, 4, 0); SB(_m[t].m6, 2, 4, 0);
@ -342,8 +341,9 @@ static inline void MakeLockTile(TileIndex t, Owner o, byte section, WaterClass o
{ {
SetTileType(t, MP_WATER); SetTileType(t, MP_WATER);
SetTileOwner(t, o); SetTileOwner(t, o);
SetWaterClass(t, original_water_class);
_m[t].m2 = 0; _m[t].m2 = 0;
_m[t].m3 = original_water_class; _m[t].m3 = 0;
_m[t].m4 = 0; _m[t].m4 = 0;
_m[t].m5 = section; _m[t].m5 = section;
SB(_m[t].m6, 2, 4, 0); SB(_m[t].m6, 2, 4, 0);