# HG changeset patch # User tron # Date 1141246844 0 # Node ID 1edf71aa942ee0cc6e44c5cbf853cf09fbfbf530 # Parent 92181a7f9b7d65d995cfdda628afac885c5a1040 (svn r3714) Add functions to turn tiles into water and shore tiles diff -r 92181a7f9b7d -r 1edf71aa942e landscape.c --- 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); } } } diff -r 92181a7f9b7d -r 1edf71aa942e station_cmd.c --- 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; diff -r 92181a7f9b7d -r 1edf71aa942e water_cmd.c --- 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); } } } diff -r 92181a7f9b7d -r 1edf71aa942e water_map.h --- /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