OpenTTD Source: src/object_cmd.cpp File Reference

OpenTTD Source 14.0-beta1

Macros | Functions | Variables
object_cmd.cpp File Reference
`#include "stdafx.h"`
`#include "landscape.h"`
`#include "command_func.h"`
`#include "company_func.h"`
`#include "viewport_func.h"`
`#include "company_base.h"`
`#include "town.h"`
`#include "bridge_map.h"`
`#include "genworld.h"`
`#include "autoslope.h"`
`#include "clear_func.h"`
`#include "water.h"`
`#include "window_func.h"`
`#include "company_gui.h"`
`#include "cheat_type.h"`
`#include "object.h"`
`#include "cargopacket.h"`
`#include "core/random_func.hpp"`
`#include "core/pool_func.hpp"`
`#include "object_map.h"`
`#include "object_base.h"`
`#include "newgrf_config.h"`
`#include "newgrf_object.h"`
`#include "timer/timer_game_calendar.h"`
`#include "newgrf_debug.h"`
`#include "vehicle_func.h"`
`#include "station_func.h"`
`#include "object_cmd.h"`
`#include "landscape_cmd.h"`
`#include "pathfinder/water_regions.h"`
`#include "table/strings.h"`
`#include "table/object_land.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Macros
#define | GetCompanyHQSize GetAnimationFrame
| We encode the company HQ size in the animation stage.
#define | IncreaseCompanyHQSize IncreaseAnimationStage
| We encode the company HQ size in the animation stage.

## Functions
ObjectType | GetObjectType (Tile t)
| Gets the ObjectType of the given object tile. More...
void | InitializeObjects ()
| Initialize/reset the objects.
void | BuildObject (ObjectType type, TileIndex tile, CompanyID owner, Town *town, uint8_t view)
| Actually build the object. More...
static void | IncreaseAnimationStage (TileIndex tile)
| Increase the animation stage of a whole structure. More...
void | UpdateCompanyHQ (TileIndex tile, uint score)
| Update the CompanyHQ to the state associated with the given score. More...
void | UpdateObjectColours (const Company *c)
| Updates the colour of the object whenever a company changes. More...
CommandCost | CheckBuildableTile (TileIndex tile, uint invalid_dirs, int &allowed_z, bool allow_steep, bool check_bridge)
| Checks if the given tile is buildable, flat and has a certain height. More...
static CommandCost | ClearTile_Object (TileIndex tile, DoCommandFlag flags)
CommandCost | CmdBuildObject (DoCommandFlag flags, TileIndex tile, ObjectType type, uint8_t view)
| Build an object object. More...
CommandCost | CmdBuildObjectArea (DoCommandFlag flags, TileIndex tile, TileIndex start_tile, ObjectType type, uint8_t view, bool diagonal)
| Construct multiple objects in an area. More...
static Foundation | GetFoundation_Object (TileIndex tile, Slope tileh)
static void | DrawTile_Object (TileInfo *ti)
static int | GetSlopePixelZ_Object (TileIndex tile, uint x, uint y, bool)
static void | ReallyClearObjectTile (Object *o)
| Perform the actual removal of the object from the map. More...
ClearedObjectArea * | FindClearedObject (TileIndex tile)
| Find the entry in _cleared_object_areas which occupies a certain tile. More...
static void | AddAcceptedCargo_Object (TileIndex tile, CargoArray &acceptance, CargoTypes *always_accepted)
static void | AddProducedCargo_Object (TileIndex tile, CargoArray &produced)
static void | GetTileDesc_Object (TileIndex tile, TileDesc *td)
static void | TileLoop_Object (TileIndex tile)
static TrackStatus | GetTileTrackStatus_Object (TileIndex, TransportType, uint, DiagDirection)
static bool | ClickTile_Object (TileIndex tile)
static void | AnimateTile_Object (TileIndex tile)
static bool | HasTransmitter (TileIndex tile, void *)
| Helper function for `CircularTileSearch`. More...
static bool | TryBuildLightHouse ()
| Try to build a lighthouse. More...
static bool | TryBuildTransmitter ()
| Try to build a transmitter. More...
void | GenerateObjects ()
static void | ChangeTileOwner_Object (TileIndex tile, Owner old_owner, Owner new_owner)
static CommandCost | TerraformTile_Object (TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new)

## Variables
ObjectPool | _object_pool ("Object")
std::vector< ClearedObjectArea > | _cleared_object_areas
const TileTypeProcs | _tile_type_object_procs

## Detailed Description

Handling of object tiles.

Definition in file object_cmd.cpp.

## Function Documentation

## ◆ BuildObject()

void BuildObject | ( | ObjectType | type,
|  | TileIndex | tile,
|  | CompanyID | owner,
|  | Town * | town,
|  | uint8_t | view
| ) |  |

Actually build the object.

Parameters

  type | The type of object to build.
  tile | The tile to build the northern tile of the object on.
  owner | The owner of the object.
  town | Town the tile is related with.
  view | The view for the object.

Precondition
  All preconditions for building the object at that location are met, e.g. slope and clearness of tiles are checked.

Definition at line 88 of file object_cmd.cpp.

References Object::build_date, CalcClosestTownFromTile(), Object::colour, TimerGameCalendar::date, GB(), ObjectSpec::Get(), HasBit(), Object::location, OWNER_NONE, ObjectSpec::size, Object::town, Object::type, and Object::view.

Referenced by TryBuildTransmitter().

## ◆ CheckBuildableTile()

CommandCost CheckBuildableTile | ( | TileIndex | tile,
|  | uint | invalid_dirs,
|  | int & | allowed_z,
|  | bool | allow_steep,
|  | bool | check_bridge = `true`
| ) |  |

Checks if the given tile is buildable, flat and has a certain height.

Parameters

  tile | TileIndex to check.
  invalid_dirs | Prohibited directions for slopes (set of DiagDirection).
  allowed_z | Height allowed for the tile. If allowed_z is negative, it will be set to the height of this tile.
  allow_steep | Whether steep slopes are allowed.
  check_bridge | Check for the existence of a bridge.

Returns
  The cost in case of success, or an error code if it failed.

Definition at line 799 of file station_cmd.cpp.

References _settings_game, CommandCost::AddCost(), ConstructionSettings::build_on_slopes, CanBuildDepotByTileh(), GameSettings::construction, DIAGDIR_BEGIN, DIAGDIR_END, EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), GetSlopeMaxZ(), GetTileSlope(), HasBit(), IsBridgeAbove(), IsSteepSlope(), return_cmd_error, and SLOPE_FLAT.

Referenced by CheckFlatLandAirport(), and CheckFlatLandRoadStop().

## ◆ CmdBuildObject()

CommandCost CmdBuildObject | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | ObjectType | type,
|  | uint8_t | view
| ) |  |

Build an object object.

Parameters

  flags | type of operation
  tile | tile where the object will be located
  type | the object type to build
  view | the view for the object

Returns
  the cost of this operation or an error

Definition at line 208 of file object_cmd.cpp.

References CMD_ERROR, EXPENSES_CONSTRUCTION, and ObjectSpec::Get().

## ◆ CmdBuildObjectArea()

CommandCost CmdBuildObjectArea | ( | DoCommandFlag | flags,
|  | TileIndex | tile,
|  | TileIndex | start_tile,
|  | ObjectType | type,
|  | uint8_t | view,
|  | bool | diagonal
| ) |  |

Construct multiple objects in an area.

Parameters

  flags | of operation to conduct
  tile | end tile of area dragging
  start_tile | start tile of area dragging
  type | the object type to build
  view | the view for the object
  diagonal | Whether to use the Orthogonal (0) or Diagonal (1) iterator.

Returns
  the cost of this operation or an error

Definition at line 390 of file object_cmd.cpp.

References _current_company, CommandCost::AddCost(), CompanyProperties::build_object_limit, CMD_ERROR, TileIterator::Create(), DC_EXEC, EXPENSES_CONSTRUCTION, CommandCost::Failed(), GB(), ObjectSpec::Get(), GetAvailableMoneyForCommand(), CommandCost::GetCost(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), INVALID_TILE, OBJECT_SIZE_1X1, ObjectSpec::size, Map::Size(), and ObjectSpec::views.

## ◆ FindClearedObject()

ClearedObjectArea* FindClearedObject | ( | TileIndex | tile | ) |

Find the entry in _cleared_object_areas which occupies a certain tile.

Parameters

  tile | Tile of interest

Returns
  Occupying entry, or nullptr if none

Definition at line 531 of file object_cmd.cpp.

Referenced by CmdTerraformLand().

## ◆ GetObjectType()

ObjectType GetObjectType | ( | Tile | t | ) |

Gets the ObjectType of the given object tile.

Parameters

  t | the tile to get the type from.

Precondition
  IsTileType(t, MP_OBJECT)

Returns
  the type.

Definition at line 66 of file object_cmd.cpp.

References Object::GetByTile(), IsTileType(), MP_OBJECT, and Object::type.

Referenced by ObjectSpec::GetByTile(), IsObjectType(), and IsObjectTypeTile().

## ◆ HasTransmitter()

static bool HasTransmitter | ( | TileIndex | tile,
|  | void * |
| ) |  |
| static

Helper function for `CircularTileSearch`.

Parameters

  tile | The tile to check.

Returns
  True iff the tile has a radio tower.

Definition at line 741 of file object_cmd.cpp.

References IsObjectTypeTile(), and OBJECT_TRANSMITTER.

Referenced by TryBuildTransmitter().

## ◆ IncreaseAnimationStage()

static void IncreaseAnimationStage | ( | TileIndex | tile | ) |
| static

Increase the animation stage of a whole structure.

Parameters

  tile | The tile of the structure.

Definition at line 143 of file object_cmd.cpp.

References GetAnimationFrame(), Object::GetByTile(), Object::location, MarkTileDirtyByTile(), and SetAnimationFrame().

## ◆ ReallyClearObjectTile()

static void ReallyClearObjectTile | ( | Object * | o | ) |
| static

Perform the actual removal of the object from the map.

Parameters

  o | The object to really clear.

Definition at line 513 of file object_cmd.cpp.

References Object::DecTypeCount(), DeleteNewGRFInspectWindow(), Object::location, and Object::type.

## ◆ TryBuildLightHouse()

static bool TryBuildLightHouse | ( |  | ) |
| static

Try to build a lighthouse.

Returns
  True iff building a lighthouse succeeded.

Definition at line 750 of file object_cmd.cpp.

References Map::MaxX(), and Map::MaxY().

## ◆ TryBuildTransmitter()

static bool TryBuildTransmitter | ( |  | ) |
| static

Try to build a transmitter.

Returns
  True iff a transmitter was built.

Definition at line 792 of file object_cmd.cpp.

References BuildObject(), CircularTileSearch(), HasTransmitter(), IsBridgeAbove(), IsTileFlat(), IsTileType(), MP_CLEAR, OBJECT_TRANSMITTER, and RandomTile.

## ◆ UpdateCompanyHQ()

void UpdateCompanyHQ | ( | TileIndex | tile,
|  | uint | score
| ) |  |

Update the CompanyHQ to the state associated with the given score.

Parameters

  tile | The (northern) tile of the company HQ, or INVALID_TILE.
  score | The current (performance) score of the company.

Definition at line 162 of file object_cmd.cpp.

References GetCompanyHQSize, IncreaseCompanyHQSize, and INVALID_TILE.

## ◆ UpdateObjectColours()

void UpdateObjectColours | ( | const Company * | c | ) |

Updates the colour of the object whenever a company changes.

Parameters

  c | The company the company colour changed of.

Definition at line 181 of file object_cmd.cpp.

References ObjectSpec::callback_mask, CBM_OBJ_COLOUR, Livery::colour1, Livery::colour2, ObjectSpec::flags, ObjectSpec::GetByTile(), GetTileOwner(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_object_pool >::Iterate(), and OBJECT_FLAG_2CC_COLOUR.

## Variable Documentation

## ◆ _tile_type_object_procs

const TileTypeProcs _tile_type_object_procs

Initial value:
= {
DrawTile_Object,
GetSlopePixelZ_Object,
ClearTile_Object,
AddAcceptedCargo_Object,
GetTileDesc_Object,
GetTileTrackStatus_Object,
ClickTile_Object,
AnimateTile_Object,
TileLoop_Object,
ChangeTileOwner_Object,
AddProducedCargo_Object,
nullptr,
GetFoundation_Object,
TerraformTile_Object,
}

Definition at line 57 of file landscape.cpp.