OpenTTD
|
This file simplyfies and embeds a common mechanism of loading/saving and mapping of grf entities. More...
#include "sprite.h"
#include "core/alloc_type.hpp"
#include "core/smallvec_type.hpp"
#include "command_type.h"
#include "direction_type.h"
#include "company_type.h"
Go to the source code of this file.
Data Structures | |
struct | TileLayoutRegisters |
Additional modifiers for items in sprite layouts. More... | |
struct | NewGRFSpriteLayout |
NewGRF supplied spritelayout. More... | |
struct | EntityIDMapping |
Maps an entity id stored on the map to a GRF file. More... | |
class | OverrideManagerBase |
class | HouseOverrideManager |
class | IndustryOverrideManager |
class | IndustryTileOverrideManager |
class | AirportOverrideManager |
class | AirportTileOverrideManager |
class | ObjectOverrideManager |
struct | GRFFilePropsBase< Tcnt > |
Data related to the handling of grf files. More... | |
struct | GRFFileProps |
Data related to the handling of grf files. More... |
Enumerations | |
enum | TileContext { TCX_NORMAL, TCX_UPPER_HALFTILE, TCX_ON_BRIDGE } |
Context for tile accesses. More... | |
enum | TileLayoutFlags { TLF_NOTHING = 0x00, TLF_DODRAW = 0x01, TLF_SPRITE = 0x02, TLF_PALETTE = 0x04, TLF_CUSTOM_PALETTE = 0x08, TLF_BB_XY_OFFSET = 0x10, TLF_BB_Z_OFFSET = 0x20, TLF_CHILD_X_OFFSET = 0x10, TLF_CHILD_Y_OFFSET = 0x20, TLF_SPRITE_VAR10 = 0x40, TLF_PALETTE_VAR10 = 0x80, TLF_KNOWN_FLAGS = 0xFF, TLF_DRAWING_FLAGS = ~TLF_CUSTOM_PALETTE, TLF_NON_GROUND_FLAGS = TLF_BB_XY_OFFSET | TLF_BB_Z_OFFSET | TLF_CHILD_X_OFFSET | TLF_CHILD_Y_OFFSET, TLF_VAR10_FLAGS = TLF_SPRITE_VAR10 | TLF_PALETTE_VAR10, TLF_SPRITE_REG_FLAGS = TLF_DODRAW | TLF_SPRITE | TLF_BB_XY_OFFSET | TLF_BB_Z_OFFSET | TLF_CHILD_X_OFFSET | TLF_CHILD_Y_OFFSET, TLF_PALETTE_REG_FLAGS = TLF_PALETTE } |
Flags to enable register usage in sprite layouts. More... |
Functions | |
static uint | GetConstructionStageOffset (uint construction_stage, uint num_sprites) |
Determines which sprite to use from a spriteset for a specific construction stage. | |
uint32 | GetTerrainType (TileIndex tile, TileContext context=TCX_NORMAL) |
Function used by houses (and soon industries) to get information on type of "terrain" the tile it is queries sits on. | |
TileIndex | GetNearbyTile (byte parameter, TileIndex tile, bool signed_offsets=true, Axis axis=INVALID_AXIS) |
Get the tile at the given offset. | |
uint32 | GetNearbyTileInformation (TileIndex tile, bool grf_version8) |
Common part of station var 0x67, house var 0x62, indtile var 0x60, industry var 0x62. | |
uint32 | GetCompanyInfo (CompanyID owner, const struct Livery *l=NULL) |
CommandCost | GetErrorMessageFromLocationCallbackResult (uint16 cb_res, const GRFFile *grffile, StringID default_error) |
Get the error message from a shape/location/slope check callback result. | |
void | ErrorUnknownCallbackResult (uint32 grfid, uint16 cbid, uint16 cb_res) |
Record that a NewGRF returned an unknown/invalid callback result. | |
bool | ConvertBooleanCallback (const struct GRFFile *grffile, uint16 cbid, uint16 cb_res) |
bool | Convert8bitBooleanCallback (const struct GRFFile *grffile, uint16 cbid, uint16 cb_res) |
Variables | |
static const uint | TLR_MAX_VAR10 = 7 |
Maximum value for var 10. | |
HouseOverrideManager | _house_mngr |
IndustryOverrideManager | _industry_mngr |
IndustryTileOverrideManager | _industile_mngr |
AirportOverrideManager | _airport_mngr |
AirportTileOverrideManager | _airporttile_mngr |
ObjectOverrideManager | _object_mngr |
The override manager for our objects. |
This file simplyfies and embeds a common mechanism of loading/saving and mapping of grf entities.
Definition in file newgrf_commons.h.
enum TileContext |
Context for tile accesses.
Definition at line 26 of file newgrf_commons.h.
enum TileLayoutFlags |
Flags to enable register usage in sprite layouts.
TLF_DODRAW |
Only draw sprite if value of register TileLayoutRegisters::dodraw is non-zero. |
TLF_SPRITE |
Add signed offset to sprite from register TileLayoutRegisters::sprite. |
TLF_PALETTE |
Add signed offset to palette from register TileLayoutRegisters::palette. |
TLF_CUSTOM_PALETTE |
Palette is from Action 1 (moved to SPRITE_MODIFIER_CUSTOM_SPRITE in palette during loading). |
TLF_BB_XY_OFFSET |
Add signed offset to bounding box X and Y positions from register TileLayoutRegisters::delta.parent[0..1]. |
TLF_BB_Z_OFFSET |
Add signed offset to bounding box Z positions from register TileLayoutRegisters::delta.parent[2]. |
TLF_CHILD_X_OFFSET |
Add signed offset to child sprite X positions from register TileLayoutRegisters::delta.child[0]. |
TLF_CHILD_Y_OFFSET |
Add signed offset to child sprite Y positions from register TileLayoutRegisters::delta.child[1]. |
TLF_SPRITE_VAR10 |
Resolve sprite with a specific value in variable 10. |
TLF_PALETTE_VAR10 |
Resolve palette with a specific value in variable 10. |
TLF_KNOWN_FLAGS |
Known flags. Any unknown set flag will disable the GRF. |
TLF_DRAWING_FLAGS |
Flags which are still required after loading the GRF. |
TLF_NON_GROUND_FLAGS |
Flags which do not work for the (first) ground sprite. |
TLF_VAR10_FLAGS |
Flags which refer to using multiple action-1-2-3 chains. |
TLF_SPRITE_REG_FLAGS |
Flags which require resolving the action-1-2-3 chain for the sprite, even if it is no action-1 sprite. |
TLF_PALETTE_REG_FLAGS |
Flags which require resolving the action-1-2-3 chain for the palette, even if it is no action-1 palette. |
Definition at line 35 of file newgrf_commons.h.
void ErrorUnknownCallbackResult | ( | uint32 | grfid, |
uint16 | cbid, | ||
uint16 | cb_res | ||
) |
Record that a NewGRF returned an unknown/invalid callback result.
Also show an error to the user.
grfid | ID of the NewGRF causing the problem. |
cbid | Callback causing the problem. |
cb_res | Invalid result returned by the callback. |
Definition at line 518 of file newgrf_commons.cpp.
References DEBUG, GBUG_UNKNOWN_CB_RESULT, GetGRFConfig(), GRFConfig::GetName(), GRFConfig::grf_bugs, HasBit(), lastof, SetBit(), SetDParam(), SetDParamStr(), ShowErrorMessage(), and WL_CRITICAL.
Referenced by AnimationBase< IndustryAnimationBase, IndustryTileSpec, Industry, int, GetSimpleIndustryCallback >::AnimateTile(), BuildObject(), CheckTrainAttachment(), CmdBuildRailStation(), Train::ConsistChanged(), Convert8bitBooleanCallback(), ConvertBooleanCallback(), DoCreateNewIndustry(), IndustryViewWindow::DrawInfo(), BuildObjectWindow::DrawWidget(), BuildIndustryWindow::DrawWidget(), GetAirportTextCallback(), GetCargoSubtypeText(), GetCargoSuffix(), GetIndustryProbabilityCallback(), GetLoadAmount(), GetRoadVehLength(), RunVehicleDayProc(), ShowAdditionalText(), and Vehicle::UpdateVisualEffect().
|
inlinestatic |
Determines which sprite to use from a spriteset for a specific construction stage.
construction_stage | Construction stage 0 - 3. |
num_sprites | Number of available sprites to select stage from. |
Definition at line 77 of file newgrf_commons.h.
Referenced by NewGRFSpriteLayout::PrepareLayout(), and TileLayoutSpriteGroup::ProcessRegisters().
CommandCost GetErrorMessageFromLocationCallbackResult | ( | uint16 | cb_res, |
const GRFFile * | grffile, | ||
StringID | default_error | ||
) |
Get the error message from a shape/location/slope check callback result.
cb_res | Callback result to translate. If bit 10 is set this is a standard error message, otherwise a NewGRF provided string. |
grffile | NewGRF to use to resolve a custom error message. |
default_error | Error message to use for the generic error. |
Definition at line 482 of file newgrf_commons.cpp.
References GetGRFStringID(), and CommandCost::UseTextRefStack().
Referenced by CheckIfCallBackAllowsCreation(), CmdBuildObject(), PerformIndustryTileSlopeCheck(), and PerformStationTileSlopeCheck().
Get the tile at the given offset.
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. |
Definition at line 425 of file newgrf_commons.cpp.
References AXIS_Y, GB(), GetRailStationAxis(), HasStationTileRail(), INVALID_AXIS, Swap(), TILE_MASK, and TileDiffXY().
Referenced by GetNearbyAirportTileInformation(), GetNearbyIndustryTileInformation(), GetNearbyObjectTileInformation(), GetNearbyTileInformation(), IndustriesScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), AirportTileScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), StationScopeResolver::GetVariable(), and ObjectScopeResolver::GetVariable().
uint32 GetNearbyTileInformation | ( | TileIndex | tile, |
bool | grf_version8 | ||
) |
Common part of station var 0x67, house var 0x62, indtile var 0x60, industry var 0x62.
tile | the tile of interest. |
grf_version8 | True, if we are dealing with a new NewGRF which uses GRF version >= 8. |
Definition at line 448 of file newgrf_commons.cpp.
References Clamp(), GetTerrainType(), GetTilePixelSlope(), GetTileType(), GetTreeGround(), GetWaterClass(), HasTileWaterClass(), IsTileType(), MP_TREES, MP_WATER, TILE_HEIGHT, and TREE_GROUND_SHORE.
Referenced by GetNearbyAirportTileInformation(), GetNearbyIndustryTileInformation(), GetNearbyObjectTileInformation(), GetNearbyTileInformation(), HouseScopeResolver::GetVariable(), and StationScopeResolver::GetVariable().
uint32 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.
tile | TileIndex of the tile been queried |
context | The context of the tile. |
Definition at line 350 of file newgrf_commons.cpp.
References _generating_world, _settings_game, GameSettings::game_creation, GetBridgeHeight(), GetClearDensity(), GetSnowLine(), GetTileMaxZ(), GetTileType(), GetTileZ(), GetTreeDensity(), GetTreeGround(), GetTropicZone(), HasTunnelBridgeSnowOrDesert(), IsOnSnow(), 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, RAIL_GROUND_HALF_SNOW, RAIL_GROUND_ICE_DESERT, TCX_ON_BRIDGE, TCX_UPPER_HALFTILE, TREE_GROUND_ROUGH_SNOW, and TREE_GROUND_SNOW_DESERT.
Referenced by AmbientSoundEffectCallback(), GetNearbyTileInformation(), RailTypeScopeResolver::GetVariable(), IndustriesScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), AirportTileScopeResolver::GetVariable(), CanalScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), StationScopeResolver::GetVariable(), and ObjectScopeResolver::GetVariable().
ObjectOverrideManager _object_mngr |
The override manager for our objects.
Referenced by FinaliseObjectsArray(), and GetCountAndDistanceOfClosestInstance().