#include "stdafx.h"
#include "openttd.h"
#include "cmd_helper.h"
#include "landscape.h"
#include "viewport_func.h"
#include "command_func.h"
#include "town.h"
#include "news_func.h"
#include "depot_base.h"
#include "depot_func.h"
#include "vehicle_gui.h"
#include "train.h"
#include "roadveh.h"
#include "water.h"
#include "industry_map.h"
#include "cargotype.h"
#include "newgrf_canal.h"
#include "transparency.h"
#include "strings_func.h"
#include "functions.h"
#include "window_func.h"
#include "vehicle_func.h"
#include "sound_func.h"
#include "company_func.h"
#include "clear_map.h"
#include "tree_map.h"
#include "aircraft.h"
#include "newgrf_cargo.h"
#include "effectvehicle_func.h"
#include "tunnelbridge_map.h"
#include "ai/ai.hpp"
#include "table/sprites.h"
#include "table/strings.h"
#include "table/water_land.h"
Go to the source code of this file.
Data Structures | |
struct | LocksDrawTileStruct |
Enumerations | |
enum | FloodingBehaviour { FLOOD_NONE, FLOOD_ACTIVE, FLOOD_PASSIVE, FLOOD_DRYUP } |
Describes the behaviour of a tile during flooding. More... | |
Functions | |
static void | MarkTileDirtyIfCanalOrRiver (TileIndex tile) |
Marks tile dirty if it is a canal or river tile. | |
static void | MarkCanalsAndRiversAroundDirty (TileIndex tile) |
Marks the tiles around a tile as dirty, if they are canals or rivers. | |
CommandCost | CmdBuildShipDepot (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Build a ship depot. | |
void | MakeWaterKeepingClass (TileIndex tile, Owner o) |
static CommandCost | RemoveShipDepot (TileIndex tile, DoCommandFlag flags) |
static CommandCost | DoBuildShiplift (TileIndex tile, DiagDirection dir, DoCommandFlag flags) |
build a shiplift | |
static CommandCost | RemoveShiplift (TileIndex tile, DoCommandFlag flags) |
CommandCost | CmdBuildLock (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Builds a lock (ship-lift). | |
CommandCost | CmdBuildCanal (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
Build a piece of canal. | |
static CommandCost | ClearTile_Water (TileIndex tile, DoCommandFlag flags) |
static bool | IsWateredTile (TileIndex tile, Direction from) |
return true if a tile is a water tile wrt. | |
static void | DrawWaterEdges (SpriteID base, TileIndex tile) |
static void | DrawSeaWater (TileIndex tile) |
Draw a plain sea water tile with no edges. | |
static void | DrawCanalWater (TileIndex tile) |
draw a canal styled water tile with dikes around | |
static void | DrawWaterStuff (const TileInfo *ti, const WaterDrawTileStruct *wdts, SpriteID palette, uint base, bool draw_ground) |
static void | DrawRiverWater (const TileInfo *ti) |
void | DrawShoreTile (Slope tileh) |
void | DrawWaterClassGround (const TileInfo *ti) |
static void | DrawTile_Water (TileInfo *ti) |
void | DrawShipDepotSprite (int x, int y, int image) |
static uint | GetSlopeZ_Water (TileIndex tile, uint x, uint y) |
static Foundation | GetFoundation_Water (TileIndex tile, Slope tileh) |
static void | GetAcceptedCargo_Water (TileIndex tile, AcceptedCargo ac) |
static void | GetTileDesc_Water (TileIndex tile, TileDesc *td) |
static void | AnimateTile_Water (TileIndex tile) |
static void | FloodVehicle (Vehicle *v) |
static Vehicle * | FloodVehicleProc (Vehicle *v, void *data) |
Flood a vehicle if we are allowed to flood it, i.e. | |
static void | FloodVehicles (TileIndex tile) |
Finds a vehicle to flood. | |
static FloodingBehaviour | GetFloodingBehaviour (TileIndex tile) |
Returns the behaviour of a tile during flooding. | |
void | DoFloodTile (TileIndex target) |
Floods a tile. | |
static void | DoDryUp (TileIndex tile) |
Drys a tile up. | |
void | TileLoop_Water (TileIndex tile) |
Let a water tile floods its diagonal adjoining tiles called from tunnelbridge_cmd, and by TileLoop_Industry() and TileLoop_Track(). | |
void | ConvertGroundTilesIntoWaterTiles () |
static TrackStatus | GetTileTrackStatus_Water (TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) |
static bool | ClickTile_Water (TileIndex tile) |
static void | ChangeTileOwner_Water (TileIndex tile, Owner old_owner, Owner new_owner) |
static VehicleEnterTileStatus | VehicleEnter_Water (Vehicle *v, TileIndex tile, int x, int y) |
static CommandCost | TerraformTile_Water (TileIndex tile, DoCommandFlag flags, uint z_new, Slope tileh_new) |
Variables | |
static const uint8 | _flood_from_dirs [] |
Describes from which directions a specific slope can be flooded (if the tile is floodable at all). | |
const TileTypeProcs | _tile_type_water_procs |
Definition in file water_cmd.cpp.
enum FloodingBehaviour |
Describes the behaviour of a tile during flooding.
Definition at line 43 of file water_cmd.cpp.
CommandCost CmdBuildCanal | ( | TileIndex | tile, | |
DoCommandFlag | flags, | |||
uint32 | p1, | |||
uint32 | p2, | |||
const char * | text | |||
) |
Build a piece of canal.
tile | end tile of stretch-dragging | |
flags | type of operation | |
p1 | start tile of stretch-dragging | |
p2 | specifies canal (0), water (1) or river (2); last two can only be built in scenario editor |
Definition at line 283 of file water_cmd.cpp.
References CommandCost::AddCost(), BEGIN_TILE_LOOP, CMD_ERROR, CMD_LANDSCAPE_CLEAR, CmdFailed(), DoCommand(), END_TILE_LOOP, CommandCost::GetCost(), GetTileSlope(), IsInclinedSlope(), IsTileOwner(), IsTileType(), MapSize(), MarkCanalsAndRiversAroundDirty(), MarkTileDirtyByTile(), MP_WATER, OWNER_WATER, return_cmd_error, SLOPE_FLAT, Swap(), TileHeight(), TileX(), TileXY(), and TileY().
CommandCost CmdBuildLock | ( | TileIndex | tile, | |
DoCommandFlag | flags, | |||
uint32 | p1, | |||
uint32 | p2, | |||
const char * | text | |||
) |
Builds a lock (ship-lift).
tile | tile where to place the lock | |
flags | type of operation | |
p1 | unused | |
p2 | unused |
Definition at line 266 of file water_cmd.cpp.
References DoBuildShiplift(), GetInclinedSlopeDirection(), GetTileSlope(), INVALID_DIAGDIR, and return_cmd_error.
CommandCost CmdBuildShipDepot | ( | TileIndex | tile, | |
DoCommandFlag | flags, | |||
uint32 | p1, | |||
uint32 | p2, | |||
const char * | text | |||
) |
Build a ship depot.
tile | tile where ship depot is built | |
flags | type of operation | |
p1 | bit 0 depot orientation (Axis) | |
p2 | unused |
Definition at line 102 of file water_cmd.cpp.
References AXIS_X, CMD_ERROR, CMD_LANDSCAPE_CLEAR, CmdFailed(), DC_EXEC, DoCommand(), GetTileSlope(), IsBridgeAbove(), MarkTileDirtyByTile(), return_cmd_error, SLOPE_FLAT, and TileDiffXY().
static Vehicle* FloodVehicleProc | ( | Vehicle * | v, | |
void * | data | |||
) | [static] |
Flood a vehicle if we are allowed to flood it, i.e.
when it is on the ground.
v | The vehicle to test for flooding. | |
data | The z of level to flood. |
Definition at line 722 of file water_cmd.cpp.
References AIR_SHADOW.
Referenced by FloodVehicles().
static void FloodVehicles | ( | TileIndex | tile | ) | [static] |
Finds a vehicle to flood.
It does not find vehicles that are already crashed on bridges, i.e. flooded.
tile | the tile where to find a vehicle to flood |
Definition at line 738 of file water_cmd.cpp.
References _settings_game, Station::Airport(), Station::airport_tile, BEGIN_TILE_LOOP, AirportFTAClass::delta_z, END_TILE_LOOP, FindVehicleOnPos(), FloodVehicleProc(), GetBridgeHeight(), GetOtherBridgeEnd(), IsBridgeTile(), IsTileType(), MP_STATION, StationSettings::nonuniform_stations, AirportFTAClass::size_x, AirportFTAClass::size_y, GameSettings::station, TILE_ADDXY, Station::TileBelongsToRailStation(), Station::train_tile, Station::trainst_h, and Station::trainst_w.
Referenced by DoFloodTile().
static FloodingBehaviour GetFloodingBehaviour | ( | TileIndex | tile | ) | [static] |
Returns the behaviour of a tile during flooding.
Definition at line 858 of file water_cmd.cpp.
References FLOOD_ACTIVE, FLOOD_DRYUP, FLOOD_NONE, GetTileSlope(), GetTileType(), GetTreeGround(), IsIndustryTileOnWater(), IsSlopeWithOneCornerRaised(), MP_INDUSTRY, MP_RAILWAY, MP_STATION, MP_TREES, MP_WATER, RAIL_GROUND_WATER, SLOPE_FLAT, and TREE_GROUND_SHORE.
Referenced by TileLoop_Water().
return true if a tile is a water tile wrt.
a certain direction.
tile | The tile of interest. | |
from | The direction of interest. |
Definition at line 416 of file water_cmd.cpp.
References DiagDirToAxis(), DIR_E, DIR_N, DIR_NE, DIR_NW, DIR_S, DIR_SE, DIR_SW, DIR_W, DirToDiagDir(), GetIndustryIndex(), GetTileSlope(), GetTileType(), GetTunnelBridgeDirection(), GetTunnelBridgeTransportType(), IsIndustryTileOnWater(), IsPlainRailTile(), IsTileType(), MP_INDUSTRY, MP_RAILWAY, MP_STATION, MP_TUNNELBRIDGE, MP_WATER, RAIL_GROUND_WATER, ReverseDiagDir(), SLOPE_E, SLOPE_FLAT, SLOPE_N, SLOPE_S, SLOPE_W, TileOffsByDir(), TRANSPORT_WATER, and WATER_CLASS_INVALID.
static void MarkTileDirtyIfCanalOrRiver | ( | TileIndex | tile | ) | [inline, static] |
Marks tile dirty if it is a canal or river tile.
Called to avoid glitches when flooding tiles next to canal tile.
tile | tile to check |
Definition at line 77 of file water_cmd.cpp.
References IsTileType(), MarkTileDirtyByTile(), and MP_WATER.
Referenced by MarkCanalsAndRiversAroundDirty().
void TileLoop_Water | ( | TileIndex | tile | ) |
Let a water tile floods its diagonal adjoining tiles called from tunnelbridge_cmd, and by TileLoop_Industry() and TileLoop_Track().
tile | the water/shore tile that floods |
Definition at line 1011 of file water_cmd.cpp.
References _flood_from_dirs, AddTileIndexDiffCWrap(), DIR_BEGIN, DIR_END, DoDryUp(), DoFloodTile(), FLOOD_ACTIVE, FLOOD_DRYUP, FLOOD_PASSIVE, FOR_EACH_SET_BIT, GetFloodingBehaviour(), GetFoundationSlope(), HasBit(), INVALID_TILE, IsTileType(), MP_WATER, ReverseDir(), SLOPE_HALFTILE_MASK, SLOPE_STEEP, and TileIndexDiffCByDir().
const uint8 _flood_from_dirs[] [static] |
Initial value:
{ (1 << DIR_NW) | (1 << DIR_SW) | (1 << DIR_SE) | (1 << DIR_NE), (1 << DIR_NE) | (1 << DIR_SE), (1 << DIR_NW) | (1 << DIR_NE), (1 << DIR_NE), (1 << DIR_NW) | (1 << DIR_SW), 0, (1 << DIR_NW), (1 << DIR_N ) | (1 << DIR_NW) | (1 << DIR_NE), (1 << DIR_SW) | (1 << DIR_SE), (1 << DIR_SE), 0, (1 << DIR_E ) | (1 << DIR_NE) | (1 << DIR_SE), (1 << DIR_SW), (1 << DIR_S ) | (1 << DIR_SW) | (1 << DIR_SE), (1 << DIR_W ) | (1 << DIR_SW) | (1 << DIR_NW), }
Definition at line 53 of file water_cmd.cpp.
Referenced by TileLoop_Water().
const TileTypeProcs _tile_type_water_procs |
Initial value:
{ DrawTile_Water, GetSlopeZ_Water, ClearTile_Water, GetAcceptedCargo_Water, GetTileDesc_Water, GetTileTrackStatus_Water, ClickTile_Water, AnimateTile_Water, TileLoop_Water, ChangeTileOwner_Water, NULL, VehicleEnter_Water, GetFoundation_Water, TerraformTile_Water, }