OpenTTD Source 20241224-master-gee860a5c8e
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.
 
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.
 
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.
 
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.
 
void DrawNewGRFTileSeqInGUI (int x, int y, const DrawTileSprites *dts, uint32_t stage, PaletteID default_palette)
 Draw NewGRF object in GUI.
 
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.
 
PaletteID GroundSpritePaletteTransform (SpriteID image, PaletteID pal, PaletteID default_pal)
 Applies PALETTE_MODIFIER_COLOUR to a palette entry of a ground sprite.
 

Detailed Description

Base for drawing complex sprites.

Definition in file sprite.h.

Macro Definition Documentation

◆ COMPANY_SPRITE_COLOUR

#define COMPANY_SPRITE_COLOUR (   owner)    (GENERAL_SPRITE_COLOUR(_company_colours[owner]))

Definition at line 18 of file sprite.h.

◆ foreach_draw_tile_seq

#define foreach_draw_tile_seq (   idx,
  list 
)    for (idx = list; !idx->IsTerminator(); idx++)

Iterate through all DrawTileSeqStructs in DrawTileSprites.

Definition at line 79 of file sprite.h.

◆ GENERAL_SPRITE_COLOUR

#define GENERAL_SPRITE_COLOUR (   colour)    ((colour) + PALETTE_RECOLOUR_START)

Definition at line 17 of 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.

References DrawTileSeqStruct::delta_x, DrawTileSeqStruct::delta_z, DrawSprite(), foreach_draw_tile_seq, GB(), HasBit(), DrawTileSeqStruct::IsParentSprite(), Normal, PalSpriteID::pal, RemapCoords(), ScaleSpriteTrad(), DrawTileSprites::seq, PalSpriteID::sprite, SPRITE_MASK, SPRITE_MODIFIER_CUSTOM_SPRITE, SPRITE_WIDTH, SpriteLayoutPaletteTransform(), UnScaleGUI(), Sprite::x_offs, and Sprite::y_offs.

Referenced by DrawNewGRFTileSeqInGUI(), DrawOrigTileSeqInGUI(), DrawRailTileSeqInGUI(), and DrawRoadStopTile().

◆ 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().

Referenced by DrawTileLayout().

◆ 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.

References DrawCommonTileSeqInGUI().

Referenced by DrawNewHouseTileInGUI(), and DrawNewObjectTileInGUI().

◆ DrawOrigTileSeq()

void DrawOrigTileSeq ( const struct TileInfo ti,
const DrawTileSprites dts,
TransparencyOption  to,
PaletteID  default_palette 
)
inline

Draw TTD sprite sequence on tile.

Definition at line 107 of file sprite.h.

References DrawCommonTileSeq().

◆ DrawOrigTileSeqInGUI()

void DrawOrigTileSeqInGUI ( int  x,
int  y,
const DrawTileSprites dts,
PaletteID  default_palette 
)
inline

Draw TTD sprite sequence in GUI.

Definition at line 115 of file sprite.h.

References DrawCommonTileSeqInGUI().

Referenced by ObjectPickerCallbacks::DrawType(), and BuildObjectWindow::DrawWidget().

◆ 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().

Referenced by DrawTile_Road().

◆ 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.

References DrawCommonTileSeqInGUI().

Referenced by DrawRoadDepotSprite(), and DrawStationTile().

◆ 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.

Referenced by DrawNewHouseTileInGUI(), DrawNewObjectTileInGUI(), DrawRoadStopTile(), DrawStationTile(), and DrawTileLayout().

◆ 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(), and DrawCommonTileSeqInGUI().