123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #ifndef spritelayout_H_INCLUDED
- #define spritelayout_H_INCLUDED
- /* The layout of the sprite. Each int * pointer field should be ponted to
- * an array of size rows.
- * In general, the cells of a sprite are expected to be layed out on a sprite
- * sheet in rows of equal height, and in columns of equal width.
- */
- struct SpriteLayout_ {
- int rows;
- int * per_row;
- int * row_type;
- int * row_dir;
- double * row_duration;
- /* The maximum sizes of the individual frames or layers. */
- int size_x;
- int size_y;
- /* If not negative, this means the standinwaltk'th frame of the
- walking animation is in fact the standing position. This frame should be skipped
- for walking and added to a separate standing position.
- The standing actions will be placed after all other actions of the sprite.
- */
- int standinwalk;
- /* The offset from the top to the "feet" of the sprite. Must be the same for
- * all frames. */
- int offset_x;
- int offset_y;
-
- };
- #define DEFINE_SPRITELAYOUT(NAME, ROWS, PER_ROW, ROW_POSE, ROW_DIR, \
- SIZE_X, SIZE_Y, STANDINWALK, OFFSET_X, OFFSET_Y) \
- struct SpriteLayout_ NAME = { ROWS , PER_ROW, ROW_POSE, ROW_DIR, \
- SIZE_X, SIZE_Y, STANDINWALK, OFFSET_X, OFFSET_Y }
- int spritelayout_rows(SpriteLayout * layout);
- Sprite * spritelayout_loadactionlayer(SpriteLayout * layout, Sprite * sprite,
- Image * source, int actionindex, int layerindex);
-
- SpriteLayout * spritelayout_for(int load_type);
- Sprite * spritelayout_load_layer
- (SpriteLayout * layout, Sprite * sprite, Image * source, int layeri);
- #endif
|