45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $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 width,height;
 | |
| 	byte unk; // 'depth', just z-size; TODO: rename
 | |
| 	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 */
 | 
