You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
20 years ago
|
#ifndef SPRITE_H
|
||
|
#define SPRITE_H
|
||
|
|
||
|
|
||
|
/* The following describes bunch of sprites to be drawn together in a single 3D
|
||
|
* bounding box. Used especially for various multi-sprite buildings (like
|
||
|
* depots or stations): */
|
||
|
|
||
|
typedef struct DrawTileSeqStruct {
|
||
|
int8 delta_x;
|
||
|
int8 delta_y;
|
||
|
int8 delta_z;
|
||
|
byte width,height;
|
||
|
byte unk; // 'depth', just z-size; TODO: rename
|
||
|
uint32 image;
|
||
|
} DrawTileSeqStruct;
|
||
|
|
||
|
typedef struct DrawTileSprites {
|
||
|
SpriteID ground_sprite;
|
||
|
DrawTileSeqStruct const *seq;
|
||
|
} DrawTileSprites;
|
||
|
|
||
|
#define foreach_draw_tile_seq(idx, list) for (idx = list; ((byte) idx->delta_x) != 0x80; idx++)
|
||
|
|
||
|
|
||
|
/* This is for custom sprites: */
|
||
|
|
||
|
struct SpriteGroup {
|
||
|
// XXX: Would anyone ever need more than 16 spritesets? Maybe we should
|
||
|
// use even less, now we take whole 8kb for custom sprites table, oh my!
|
||
|
byte sprites_per_set; // means number of directions - 4 or 8
|
||
|
|
||
|
// Loaded = in motion, loading = not moving
|
||
|
// Each group contains several spritesets, for various loading stages
|
||
|
|
||
|
// XXX: For stations the meaning is different - loaded is for stations
|
||
|
// with small amount of cargo whilst loading is for stations with a lot
|
||
|
// of da stuff.
|
||
|
|
||
|
byte loaded_count;
|
||
|
uint16 loaded[16]; // sprite ids
|
||
|
byte loading_count;
|
||
|
uint16 loading[16]; // sprite ids
|
||
|
};
|
||
|
|
||
|
#endif
|