OpenTTD Source 20241224-master-gf74b0cf984
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 "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, 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
grffileNewGRF returning the value.
cbidCallback returning the value.
cb_resCallback result.
Returns
Boolean value. True if cb_res != 0.

Definition at line 554 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
grffileNewGRF returning the value.
cbidCallback returning the value.
cb_resCallback result.
Returns
Boolean value. True if cb_res != 0.

Definition at line 535 of file newgrf_commons.cpp.

References CALLBACK_FAILED, and ErrorUnknownCallbackResult().

Referenced by GetFoundation_Town(), and IndustryTemporarilyRefusesCargo().

◆ ErrorUnknownCallbackResult()

◆ GetCompanyInfo()

uint32_t GetCompanyInfo ( CompanyID  owner,
const Livery l 
)

◆ GetErrorMessageFromLocationCallbackResult()

CommandCost GetErrorMessageFromLocationCallbackResult ( uint16_t  cb_res,
const GRFFile grffile,
StringID  default_error 
)

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

Parameters
cb_resCallback result to translate. If bit 10 is set this is a standard error message, otherwise a NewGRF provided string.
grffileNewGRF to use to resolve a custom error message.
default_errorError message to use for the generic error.
Returns
CommandCost indicating success or the error message.

Definition at line 469 of file newgrf_commons.cpp.

References GetGRFStringID(), and CommandCost::UseTextRefStack().

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
parameterThe NewGRF "encoded" offset.
tileThe tile to base the offset from.
signed_offsetsWhether the offsets are to be interpreted as signed or not.
axisAxis of a railways station.
Returns
The tile at the offset.

Definition at line 410 of file newgrf_commons.cpp.

References AXIS_Y, GB(), GetRailStationAxis(), HasStationTileRail(), INVALID_AXIS, Swap(), 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
tilethe tile of interest.
grf_version8True, 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 433 of file newgrf_commons.cpp.

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

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

◆ GetTerrainType()