tron@2186: /* $Id$ */ tron@2186: darkvater@406: #ifndef SPRITE_H darkvater@406: #define SPRITE_H darkvater@406: darkvater@406: darkvater@406: /* The following describes bunch of sprites to be drawn together in a single 3D darkvater@406: * bounding box. Used especially for various multi-sprite buildings (like darkvater@406: * depots or stations): */ darkvater@406: darkvater@406: typedef struct DrawTileSeqStruct { darkvater@408: int8 delta_x; // 0x80 is sequence terminator darkvater@406: int8 delta_y; darkvater@406: int8 delta_z; tron@4230: byte size_x; tron@4230: byte size_y; tron@4230: byte size_z; darkvater@406: uint32 image; darkvater@406: } DrawTileSeqStruct; darkvater@406: darkvater@406: typedef struct DrawTileSprites { darkvater@406: SpriteID ground_sprite; tron@2548: const DrawTileSeqStruct* seq; darkvater@406: } DrawTileSprites; darkvater@406: belugas@3654: /** belugas@3654: * This structure is the same for both Industries and Houses. belugas@3654: * Buildings here reference a general type of construction belugas@3654: */ belugas@3654: typedef struct DrawBuildingsTileStruct { belugas@3654: SpriteID ground; belugas@3654: SpriteID building; belugas@3654: byte subtile_x:4; belugas@3654: byte subtile_y:4; belugas@3654: byte width:4; belugas@3654: byte height:4; belugas@3654: byte dz; belugas@3654: byte draw_proc; /* this allows to specify a special drawing procedure.*/ belugas@3654: } DrawBuildingsTileStruct; belugas@3654: darkvater@408: // Iterate through all DrawTileSeqStructs in DrawTileSprites. darkvater@406: #define foreach_draw_tile_seq(idx, list) for (idx = list; ((byte) idx->delta_x) != 0x80; idx++) darkvater@406: darkvater@406: Darkvater@2436: #endif /* SPRITE_H */