|
OpenTTD Source 20251117-master-g7398d2e290
|
This file simplifies and embeds a common mechanism of loading/saving and mapping of grf entities. More...
#include "sprite.h"#include "core/alloc_type.hpp"#include "command_type.h"#include "direction_type.h"#include "company_type.h"#include "cargo_type.h"#include "core/bitmath_func.hpp"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... | |
| class | SpriteLayoutProcessor |
| Add dynamic register values to a sprite layout. 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 |
| Base data related to the handling of grf files. More... | |
| struct | FixedGRFFileProps< Tkey, Tcount > |
| Fixed-length list of sprite groups for an entity. More... | |
| struct | StandardGRFFileProps |
| Container for standard sprite groups. More... | |
| struct | VariableGRFFileProps< Tkey > |
| Variable-length list of sprite groups for an entity. More... | |
| struct | CargoGRFFileProps |
| Sprite groups indexed by CargoType. More... | |
| struct | SubstituteGRFFileProps |
| NewGRF entities which can replace default entities. More... | |
| struct | LabelObject< T > |
| Container for a label for rail or road type conversion. More... | |
Enumerations | |
| enum | TileContext : uint8_t { TCX_NORMAL , TCX_UPPER_HALFTILE , TCX_ON_BRIDGE } |
| Context for tile accesses. More... | |
| enum | TileLayoutFlags : uint8_t { 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_KNOWN_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... | |
| enum class | StandardSpriteGroup { Default , Purchase , End } |
| Standard sprite groups. More... | |
Functions | |
| uint | GetConstructionStageOffset (uint construction_stage, uint num_sprites) |
| Determines which sprite to use from a spriteset for a specific construction stage. | |
| uint32_t | 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 (uint8_t parameter, TileIndex tile, bool signed_offsets=true, Axis axis=INVALID_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 struct Livery *l=nullptr) |
| 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 struct GRFFile *grffile, uint16_t cbid, uint16_t cb_res) |
| bool | Convert8bitBooleanCallback (const struct GRFFile *grffile, uint16_t cbid, uint16_t 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 |
This file simplifies and embeds a common mechanism of loading/saving and mapping of grf entities.
Definition in file newgrf_commons.h.
|
strong |
Standard sprite groups.
| Enumerator | |
|---|---|
| Default | Default type used when no more-specific group matches. |
| Purchase | Used before an entity exists. |
Definition at line 371 of file newgrf_commons.h.
| enum TileContext : uint8_t |
Context for tile accesses.
Definition at line 25 of file newgrf_commons.h.
| enum TileLayoutFlags : uint8_t |
Flags to enable register usage in sprite layouts.
| Enumerator | |
|---|---|
| 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 34 of file newgrf_commons.h.
| 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.
| 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().
|
inline |
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 76 of file newgrf_commons.h.
Referenced by TileLayoutSpriteGroup::ProcessRegisters(), and SpriteLayoutProcessor::SpriteLayoutProcessor().
| 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.
| 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. |
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().
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 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().
| uint32_t 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 434 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().
| 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.
| tile | TileIndex of the tile been queried |
| context | The context of the tile. |
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(), 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, 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(), AirportTileScopeResolver::GetVariable(), CanalScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), IndustriesScopeResolver::GetVariable(), IndustryTileScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), RailTypeScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), RoadTypeScopeResolver::GetVariable(), and StationScopeResolver::GetVariable().
|
static |
Maximum value for var 10.
Definition at line 107 of file newgrf_commons.h.
Referenced by ReadSpriteLayoutRegisters().