OpenTTD Source: src/newgrf_commons.cpp File Reference

OpenTTD Source 15.0-RC2

Functions
newgrf_commons.cpp File Reference

Implementation of the class OverrideManagerBase and its descendance, present and future. More...

`#include "stdafx.h"`
`#include "debug.h"`
`#include "landscape.h"`
`#include "house.h"`
`#include "industrytype.h"`
`#include "newgrf_config.h"`
`#include "company_func.h"`
`#include "clear_map.h"`
`#include "station_map.h"`
`#include "tree_map.h"`
`#include "tunnelbridge_map.h"`
`#include "newgrf_object.h"`
`#include "genworld.h"`
`#include "newgrf_spritegroup.h"`
`#include "newgrf_text.h"`
`#include "company_base.h"`
`#include "error.h"`
`#include "strings_func.h"`
`#include "string_func.h"`
`#include "table/strings.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Functions
uint32_t | GetTerrainType (TileIndex tile, TileContext context)
| Function used by houses (and soon industries) to get information on type of "terrain" the tile it is queries sits on.
TileIndex | GetNearbyTile (uint8_t parameter, TileIndex tile, bool signed_offsets, Axis axis)
| Get the tile at the given offset.
uint32_t | GetNearbyTileInformation (TileIndex tile, bool grf_version8)
| Common part of station var 0x67, house var 0x62, indtile var 0x60, industry var 0x62.
uint32_t | GetCompanyInfo (CompanyID owner, const Livery *l)
| Returns company information like in vehicle var 43 or station var 43.
CommandCost | GetErrorMessageFromLocationCallbackResult (uint16_t cb_res, std::span< const int32_t > textstack, const GRFFile *grffile, StringID default_error)
| Get the error message from a shape/location/slope check callback result.
void | ErrorUnknownCallbackResult (uint32_t grfid, uint16_t cbid, uint16_t cb_res)
| Record that a NewGRF returned an unknown/invalid callback result.
bool | ConvertBooleanCallback (const GRFFile *grffile, uint16_t cbid, uint16_t cb_res)
| Converts a callback result into a boolean.
bool | Convert8bitBooleanCallback (const GRFFile *grffile, uint16_t cbid, uint16_t cb_res)
| Converts a callback result into a boolean.

## Detailed Description

Implementation of the class OverrideManagerBase and its descendance, present and future.

Definition in file newgrf_commons.cpp.

## Function Documentation

## ◆ Convert8bitBooleanCallback()

bool Convert8bitBooleanCallback | ( | const GRFFile * | grffile,
|  | uint16_t | cbid,
|  | uint16_t | cb_res
| ) |  |

Converts a callback result into a boolean.

For grf version < 8 the first 8 bit of the result are checked for zero or non-zero. For grf version >= 8 the callback result must be 0 or 1.

Parameters

  grffile | NewGRF returning the value.
  cbid | Callback returning the value.
  cb_res | Callback result.

Returns
  Boolean value. True if cb_res != 0.

Definition at line 562 of file newgrf_commons.cpp.

References CALLBACK_FAILED, ErrorUnknownCallbackResult(), and GB().

Referenced by CmdBuildRailStation(), CmdBuildRoadStop(), IsRoadStopAvailable(), IsStationAvailable(), and TryBuildTownHouse().

## ◆ ConvertBooleanCallback()

bool ConvertBooleanCallback | ( | const GRFFile * | grffile,
|  | uint16_t | cbid,
|  | uint16_t | cb_res
| ) |  |

Converts a callback result into a boolean.

For grf version < 8 the result is checked for zero or non-zero. For grf version >= 8 the callback result must be 0 or 1.

Parameters

  grffile | NewGRF returning the value.
  cbid | Callback returning the value.
  cb_res | Callback result.

Returns
  Boolean value. True if cb_res != 0.

Definition at line 543 of file newgrf_commons.cpp.

References CALLBACK_FAILED, and ErrorUnknownCallbackResult().

Referenced by GetFoundation_Town(), and IndustryTemporarilyRefusesCargo().

## ◆ ErrorUnknownCallbackResult()

void ErrorUnknownCallbackResult | ( | uint32_t | grfid,
|  | uint16_t | cbid,
|  | uint16_t | cb_res
| ) |  |

Record that a NewGRF returned an unknown/invalid callback result.

Also show an error to the user.

Parameters

  grfid | ID of the NewGRF causing the problem.
  cbid | Callback causing the problem.
  cb_res | Invalid result returned by the callback.

Definition at line 517 of file newgrf_commons.cpp.

References Debug, GetEncodedString(), GetGRFConfig(), GRFConfig::GetName(), GetString(), GRFConfig::grf_bugs, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set(), ShowErrorMessage(), StrMakeValid(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), UnknownCbResult, and WL_CRITICAL.

Referenced by AnimationBase< Tbase, Tspec, Tobj, Textra, GetCallback, Tframehelper >::AnimateTile(), BuildObject(), CalculateRefitMasks(), CheckTrainAttachment(), CmdBuildRailStation(), Train::ConsistChanged(), Convert8bitBooleanCallback(), ConvertBooleanCallback(), DoCreateNewIndustry(), IndustryViewWindow::DrawInfo(), BuildIndustryWindow::DrawWidget(), BuildObjectWindow::DrawWidget(), GetAirportTextCallback(), GetCargoSubtypeText(), GetCargoSuffix(), GetHouseName(), GetIndustryProbabilityCallback(), GetLoadAmount(), GetNewGRFAdditionalText(), GetRoadVehLength(), RunEconomyVehicleDayProc(), and Vehicle::UpdateVisualEffect().

## ◆ GetCompanyInfo()

uint32_t GetCompanyInfo | ( | CompanyID | owner,
|  | const Livery * | l
| ) |  |

Returns company information like in vehicle var 43 or station var 43.

Parameters

  owner | Owner of the object.
  l | Livery of the object; nullptr to use default.

Returns
  NewGRF company information.

Definition at line 457 of file newgrf_commons.cpp.

References Livery::colour1, Livery::colour2, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), Company::IsValidAiID(), and Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::IsValidID().

Referenced by VehicleScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), and StationScopeResolver::GetVariable().

## ◆ GetErrorMessageFromLocationCallbackResult()

CommandCost GetErrorMessageFromLocationCallbackResult | ( | uint16_t | cb_res,
|  | std::span< const int32_t > | textstack,
|  | const GRFFile * | grffile,
|  | StringID | default_error
| ) |  |

Get the error message from a shape/location/slope check callback result.

Parameters

  cb_res | Callback result to translate. If bit 10 is set this is a standard error message, otherwise a NewGRF provided string.
  textstack | Text parameter stack.
  grffile | NewGRF to use to resolve a custom error message.
  default_error | Error message to use for the generic error.

Returns
  CommandCost indicating success or the error message.

Definition at line 471 of file newgrf_commons.cpp.

References GetEncodedStringWithArgs(), GetGRFStringID(), GetGRFStringTextStackParameters(), GRFSTR_MISC_GRF_TEXT, IsLocalCompany(), and CommandCost::SetEncodedMessage().

Referenced by CheckIfCallBackAllowsCreation(), CmdBuildObject(), PerformIndustryTileSlopeCheck(), and PerformStationTileSlopeCheck().

## ◆ GetNearbyTile()

TileIndex GetNearbyTile | ( | uint8_t | parameter,
|  | TileIndex | tile,
|  | bool | signed_offsets,
|  | Axis | axis
| ) |  |

Get the tile at the given offset.

Parameters

  parameter | The NewGRF "encoded" offset.
  tile | The tile to base the offset from.
  signed_offsets | Whether the offsets are to be interpreted as signed or not.
  axis | Axis of a railways station.

Returns
  The tile at the offset.

Definition at line 411 of file newgrf_commons.cpp.

References AXIS_Y, GB(), GetRailStationAxis(), HasStationTileRail(), INVALID_AXIS, TileDiffXY(), and Map::WrapToMap().

Referenced by GetNearbyAirportTileInformation(), GetNearbyIndustryTileInformation(), GetNearbyObjectTileInformation(), GetNearbyTileInformation(), AirportTileScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), IndustriesScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), and StationScopeResolver::GetVariable().

## ◆ GetNearbyTileInformation()

uint32_t GetNearbyTileInformation | ( | TileIndex | tile,
|  | bool | grf_version8
| ) |  |

Common part of station var 0x67, house var 0x62, indtile var 0x60, industry var 0x62.

Parameters

  tile | the tile of interest.
  grf_version8 | True, if we are dealing with a new NewGRF which uses GRF version >= 8.

Returns
  0czzbbss: c = TileType; zz = TileZ; bb: 7-3 zero, 4-2 TerrainType, 1 water/shore, 0 zero; ss = TileSlope

Definition at line 434 of file newgrf_commons.cpp.

References GetTerrainType(), GetTilePixelSlope(), GetTileType(), GetTreeGround(), GetWaterClass(), HasTileWaterClass(), IsRoadWaypointTile(), IsTileType(), MP_ROAD, MP_TREES, MP_WATER, TILE_HEIGHT, to_underlying(), and TREE_GROUND_SHORE.

Referenced by GetNearbyAirportTileInformation(), GetNearbyIndustryTileInformation(), GetNearbyObjectTileInformation(), HouseScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), and StationScopeResolver::GetVariable().

## ◆ GetTerrainType()

uint32_t GetTerrainType | ( | TileIndex | tile,
|  | TileContext | context
| ) |  |

Function used by houses (and soon industries) to get information on type of "terrain" the tile it is queries sits on.

Parameters

  tile | TileIndex of the tile been queried
  context | The context of the tile.

Returns
  value corresponding to the grf expected format: Terrain type: 0 normal, 1 desert, 2 rainforest, 4 on or above snowline

Definition at line 336 of file newgrf_commons.cpp.

References _generating_world, _settings_game, GameSettings::game_creation, GetBridgeHeight(), GetClearDensity(), GetSnowLine(), GetTileMaxZ(), GetTileType(), GetTileZ(), GetTreeDensity(), GetTreeGround(), GetTropicZone(), HalfTileSnow, HasTunnelBridgeSnowOrDesert(), IsOnSnowOrDesert(), IsSnowTile(), GameCreationSettings::landscape, MP_CLEAR, MP_HOUSE, MP_INDUSTRY, MP_OBJECT, MP_RAILWAY, MP_ROAD, MP_STATION, MP_TREES, MP_TUNNELBRIDGE, MP_VOID, MP_WATER, SnowOrDesert, TCX_ON_BRIDGE, TCX_UPPER_HALFTILE, TREE_GROUND_ROUGH_SNOW, and TREE_GROUND_SNOW_DESERT.

Referenced by AmbientSoundEffectCallback(), GetNearbyTileInformation(), AirportTileScopeResolver::GetVariable(), CanalScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), IndustriesScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), RailTypeScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), RoadTypeScopeResolver::GetVariable(), and StationScopeResolver::GetVariable().