sprite.h
author KUDr
Wed, 27 Dec 2006 23:11:43 +0000
changeset 5583 ed718fa4c69c
parent 4230 cd86b1c47f33
permissions -rw-r--r--
(svn r7585) -Codechange: CheckStationSpreadOut() took too much CPU. Station rectangle is now maintained instead of calculating it each time by walking through whole map. Should help with the performance issue related to AIs trying to build road stops too often. (idea by Celestar)
/* $Id$ */

#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; // 0x80 is sequence terminator
	int8 delta_y;
	int8 delta_z;
	byte size_x;
	byte size_y;
	byte size_z;
	uint32 image;
} DrawTileSeqStruct;

typedef struct DrawTileSprites {
	SpriteID ground_sprite;
	const DrawTileSeqStruct* seq;
} DrawTileSprites;

/**
 * This structure is the same for both Industries and Houses.
 * Buildings here reference a general type of construction
 */
typedef struct DrawBuildingsTileStruct {
	SpriteID ground;
	SpriteID building;
	byte subtile_x:4;
	byte subtile_y:4;
	byte width:4;
	byte height:4;
	byte dz;
	byte draw_proc;  /* this allows to specify a special drawing procedure.*/
} DrawBuildingsTileStruct;

// Iterate through all DrawTileSeqStructs in DrawTileSprites.
#define foreach_draw_tile_seq(idx, list) for (idx = list; ((byte) idx->delta_x) != 0x80; idx++)


#endif /* SPRITE_H */