OpenTTD Source  20241124-master-g9399a92a4f
sprite.h File Reference

Base for drawing complex sprites. More...

#include "transparency.h"
#include "table/sprites.h"

Go to the source code of this file.

Data Structures

struct  DrawTileSeqStruct
 A tile child sprite and palette to draw for stations etc, with 3D bounding box. More...
 
struct  DrawTileSprites
 Ground palette sprite of a tile, together with its sprite layout. More...
 
struct  DrawBuildingsTileStruct
 This structure is the same for both Industries and Houses. More...
 

Macros

#define GENERAL_SPRITE_COLOUR(colour)   ((colour) + PALETTE_RECOLOUR_START)
 
#define COMPANY_SPRITE_COLOUR(owner)   (GENERAL_SPRITE_COLOUR(_company_colours[owner]))
 
#define foreach_draw_tile_seq(idx, list)   for (idx = list; !idx->IsTerminator(); idx++)
 Iterate through all DrawTileSeqStructs in DrawTileSprites.
 

Functions

void DrawCommonTileSeq (const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, int32_t orig_offset, uint32_t newgrf_offset, PaletteID default_palette, bool child_offset_is_unsigned)
 
void DrawCommonTileSeqInGUI (int x, int y, const DrawTileSprites *dts, int32_t orig_offset, uint32_t newgrf_offset, PaletteID default_palette, bool child_offset_is_unsigned)
 Draws a tile sprite sequence in the GUI. More...
 
void DrawRailTileSeq (const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, int32_t total_offset, uint32_t newgrf_offset, PaletteID default_palette)
 Draw tile sprite sequence on tile with railroad specifics. More...
 
void DrawRailTileSeqInGUI (int x, int y, const DrawTileSprites *dts, int32_t total_offset, uint32_t newgrf_offset, PaletteID default_palette)
 Draw tile sprite sequence in GUI with railroad specifics. More...
 
void DrawOrigTileSeq (const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, PaletteID default_palette)
 Draw TTD sprite sequence on tile.
 
void DrawOrigTileSeqInGUI (int x, int y, const DrawTileSprites *dts, PaletteID default_palette)
 Draw TTD sprite sequence in GUI.
 
void DrawNewGRFTileSeq (const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, uint32_t stage, PaletteID default_palette)
 Draw NewGRF industrytile or house sprite layout. More...
 
void DrawNewGRFTileSeqInGUI (int x, int y, const DrawTileSprites *dts, uint32_t stage, PaletteID default_palette)
 Draw NewGRF object in GUI. More...
 
PaletteID SpriteLayoutPaletteTransform (SpriteID image, PaletteID pal, PaletteID default_pal)
 Applies PALETTE_MODIFIER_TRANSPARENT and PALETTE_MODIFIER_COLOUR to a palette entry of a sprite layout entry. More...
 
PaletteID GroundSpritePaletteTransform (SpriteID image, PaletteID pal, PaletteID default_pal)
 Applies PALETTE_MODIFIER_COLOUR to a palette entry of a ground sprite. More...
 

Detailed Description

Base for drawing complex sprites.

Definition in file sprite.h.

Function Documentation

◆ DrawCommonTileSeqInGUI()

void DrawCommonTileSeqInGUI ( int  x,
int  y,
const DrawTileSprites dts,
int32_t  orig_offset,
uint32_t  newgrf_offset,
PaletteID  default_palette,
bool  child_offset_is_unsigned 
)

Draws a tile sprite sequence in the GUI.

Parameters
xX position to draw to
yY position to draw to
dtsSprite and subsprites to draw
orig_offsetSprite-Offset for original sprites
newgrf_offsetSprite-Offset for NewGRF defined sprites
default_paletteThe default recolour sprite to use (typically company colour)
child_offset_is_unsignedWhether child sprite offsets are interpreted signed or unsigned

Definition at line 92 of file sprite.cpp.

◆ DrawNewGRFTileSeq()

void DrawNewGRFTileSeq ( const struct TileInfo ti,
const DrawTileSprites dts,
TransparencyOption  to,
uint32_t  stage,
PaletteID  default_palette 
)
inline

Draw NewGRF industrytile or house sprite layout.

Parameters
stageSprite inside the Action1 spritesets to use, i.e. construction stage.

Definition at line 124 of file sprite.h.

References DrawCommonTileSeq().

◆ DrawNewGRFTileSeqInGUI()

void DrawNewGRFTileSeqInGUI ( int  x,
int  y,
const DrawTileSprites dts,
uint32_t  stage,
PaletteID  default_palette 
)
inline

Draw NewGRF object in GUI.

Parameters
stageSprite inside the Action1 spritesets to use, i.e. construction stage.

Definition at line 133 of file sprite.h.

◆ DrawRailTileSeq()

void DrawRailTileSeq ( const struct TileInfo ti,
const DrawTileSprites dts,
TransparencyOption  to,
int32_t  total_offset,
uint32_t  newgrf_offset,
PaletteID  default_palette 
)
inline

Draw tile sprite sequence on tile with railroad specifics.

Parameters
total_offsetSpriteoffset from normal rail to current railtype.
newgrf_offsetStartsprite of the Action1 to use.

Definition at line 89 of file sprite.h.

References DrawCommonTileSeq().

◆ DrawRailTileSeqInGUI()

void DrawRailTileSeqInGUI ( int  x,
int  y,
const DrawTileSprites dts,
int32_t  total_offset,
uint32_t  newgrf_offset,
PaletteID  default_palette 
)
inline

Draw tile sprite sequence in GUI with railroad specifics.

Parameters
total_offsetSpriteoffset from normal rail to current railtype.
newgrf_offsetStartsprite of the Action1 to use.

Definition at line 99 of file sprite.h.

◆ GroundSpritePaletteTransform()

PaletteID GroundSpritePaletteTransform ( SpriteID  image,
PaletteID  pal,
PaletteID  default_pal 
)
inline

Applies PALETTE_MODIFIER_COLOUR to a palette entry of a ground sprite.

Note
Not useable for OTTD internal spritelayouts from table/xxx_land.h as PALETTE_MODIFIER_TRANSPARENT is only set when to use the default palette.
Parameters
imageThe sprite to draw
palThe palette from the sprite layout
default_palThe default recolour sprite to use (typically company colour resp. random industry/house colour)
Returns
The palette to use

Definition at line 168 of file sprite.h.

References HasBit(), and PALETTE_MODIFIER_COLOUR.

◆ SpriteLayoutPaletteTransform()

PaletteID SpriteLayoutPaletteTransform ( SpriteID  image,
PaletteID  pal,
PaletteID  default_pal 
)
inline

Applies PALETTE_MODIFIER_TRANSPARENT and PALETTE_MODIFIER_COLOUR to a palette entry of a sprite layout entry.

Note
for ground sprites use GroundSpritePaletteTransform
Not useable for OTTD internal spritelayouts from table/xxx_land.h as PALETTE_MODIFIER_TRANSPARENT is only set when to use the default palette.
Parameters
imageThe sprite to draw
palThe palette from the sprite layout
default_palThe default recolour sprite to use (typically company colour resp. random industry/house colour)
Returns
The palette to use

Definition at line 149 of file sprite.h.

References HasBit(), PALETTE_MODIFIER_COLOUR, and PALETTE_MODIFIER_TRANSPARENT.

Referenced by DrawCommonTileSeq().