--- a/landscape.c Wed Mar 01 20:49:47 2006 +0000
+++ b/landscape.c Wed Mar 01 21:00:44 2006 +0000
@@ -15,6 +15,7 @@
#include "vehicle.h"
#include "variables.h"
#include "void.h"
+#include "water_map.h"
extern const TileTypeProcs
_tile_type_clear_procs,
@@ -450,9 +451,7 @@
for (tile = 0; tile < MapSize(); ++tile) {
if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == 0 && h == 0) {
- SetTileType(tile, MP_WATER);
- SetTileOwner(tile, OWNER_WATER);
- _m[tile].m5 = 0;
+ MakeWater(tile);
}
}
}
--- a/station_cmd.c Wed Mar 01 20:49:47 2006 +0000
+++ b/station_cmd.c Wed Mar 01 21:00:44 2006 +0000
@@ -26,6 +26,7 @@
#include "sprite.h"
#include "depot.h"
#include "train.h"
+#include "water_map.h"
enum {
/* Max stations: 64000 (64 * 1000) */
@@ -1777,12 +1778,8 @@
st->facilities &= ~FACIL_DOCK;
st->had_vehicle_of_type &= ~HVOT_BUOY;
- ModifyTile(tile,
- MP_SETTYPE(MP_WATER) |
- MP_MAP2_CLEAR | MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR | MP_MAPOWNER | MP_MAP5 | MP_MAP2_CLEAR,
- OWNER_WATER, /* map_owner */
- 0 /* map5 */
- );
+ MakeWater(tile);
+ MarkTileDirtyByTile(tile);
UpdateStationVirtCoordDirty(st);
DeleteStationIfEmpty(st);
@@ -1926,8 +1923,8 @@
if (flags & DC_EXEC) {
DoClearSquare(tile1);
- // convert the water tile to water.
- ModifyTile(tile2, MP_SETTYPE(MP_WATER) | MP_MAPOWNER | MP_MAP5 | MP_MAP2_CLEAR | MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR, OWNER_WATER, 0);
+ MakeWater(tile2);
+ MarkTileDirtyByTile(tile2);
st->dock_tile = 0;
st->facilities &= ~FACIL_DOCK;
--- a/water_cmd.c Wed Mar 01 20:49:47 2006 +0000
+++ b/water_cmd.c Wed Mar 01 21:00:44 2006 +0000
@@ -16,6 +16,7 @@
#include "depot.h"
#include "vehicle_gui.h"
#include "train.h"
+#include "water_map.h"
const SpriteID _water_shore_sprites[15] = {
0,
@@ -116,9 +117,10 @@
/* Kill the depot */
DoDeleteDepot(tile);
- /* Make the tiles water */
- ModifyTile(tile, MP_SETTYPE(MP_WATER) | MP_MAPOWNER | MP_MAP5 | MP_MAP2_CLEAR | MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR, OWNER_WATER, 0);
- ModifyTile(tile2, MP_SETTYPE(MP_WATER) | MP_MAPOWNER | MP_MAP5 | MP_MAP2_CLEAR | MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR, OWNER_WATER, 0);
+ MakeWater(tile);
+ MakeWater(tile2);
+ MarkTileDirtyByTile(tile);
+ MarkTileDirtyByTile(tile2);
}
return _price.remove_ship_depot;
@@ -258,7 +260,8 @@
// change owner to OWNER_WATER and set land under bridge bit to water
ModifyTile(tile, MP_MAP5 | MP_MAPOWNER, OWNER_WATER, _m[tile].m5 | 0x08);
} else {
- ModifyTile(tile, MP_SETTYPE(MP_WATER) | MP_MAPOWNER | MP_MAP5 | MP_MAP2_CLEAR | MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR, OWNER_WATER, 0);
+ MakeWater(tile);
+ MarkTileDirtyByTile(tile);
}
// mark the tiles around dirty too
MarkTilesAroundDirty(tile);
@@ -532,12 +535,8 @@
case MP_TREES:
_current_player = OWNER_WATER;
if (!CmdFailed(DoCommandByTile(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
- ModifyTile(
- target,
- MP_SETTYPE(MP_WATER) | MP_MAPOWNER | MP_MAP5 | MP_MAP2_CLEAR |
- MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR,
- OWNER_WATER, 1
- );
+ MakeShore(target);
+ MarkTileDirtyByTile(target);
}
break;
@@ -570,13 +569,8 @@
}
if (!CmdFailed(DoCommandByTile(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR))) {
- ModifyTile(
- target,
- MP_SETTYPE(MP_WATER) | MP_MAPOWNER | MP_MAP5 | MP_MAP2_CLEAR |
- MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR,
- OWNER_WATER,
- 0
- );
+ MakeWater(target);
+ MarkTileDirtyByTile(target);
}
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/water_map.h Wed Mar 01 21:00:44 2006 +0000
@@ -0,0 +1,27 @@
+/* $Id$ */
+
+#ifndef WATER_MAP_H
+#define WATER_MAP_H
+
+static inline void MakeWater(TileIndex t)
+{
+ SetTileType(t, MP_WATER);
+ SetTileOwner(t, OWNER_WATER);
+ _m[t].m2 = 0;
+ _m[t].m3 = 0;
+ _m[t].m4 = 0;
+ _m[t].m5 = 0;
+}
+
+
+static inline void MakeShore(TileIndex t)
+{
+ SetTileType(t, MP_WATER);
+ SetTileOwner(t, OWNER_WATER);
+ _m[t].m2 = 0;
+ _m[t].m3 = 0;
+ _m[t].m4 = 0;
+ _m[t].m5 = 1;
+}
+
+#endif