Mercurial > MadButterfly
diff include/mb_sprite.h @ 1051:8679b03f72e8
Move declaration about sprite to a separated header file.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 24 Nov 2010 14:19:00 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/mb_sprite.h Wed Nov 24 14:19:00 2010 +0800 @@ -0,0 +1,69 @@ +#ifndef __MB_SPRITE_H_ +#define __MB_SPRITE_H_ + +#include "mb_types.h" +#include "mb_redraw_man.h" + +/*! \defgroup mb_sprite Implement sprites for animation. + * @{ + */ +/*! \brief A sprite is a set of graphics that being an object in animation. + * + * A sprite include graphics comprise an object. For example, a tank, in + * example tank, is comprised a set of graphics that is represented as a + * sprite. + */ +struct _mb_sprite { + void (*free)(mb_sprite_t *); + mb_obj_t *(*get_obj_with_name)(mb_sprite_t *sprite, const char *id); + /*! Return non-zero for error. */ + int (*goto_scene)(mb_sprite_t *sprite, int scene_no); +}; + +#define MB_SPRITE_FREE(sprite) ((mb_sprite_t *)(sprite))->free(sprite) +#define MB_SPRITE_GET_OBJ(sprite, name) \ + ((mb_sprite_t *)(sprite))->get_obj_with_name((mb_sprite_t *)(sprite), \ + (name)) +#define MB_SPRITE_GOTO_SCENE(sprite, scene_no) \ + ((mb_sprite_t *)(sprite))->goto_scene((mb_sprite_t *)(sprite), scene_no) + + +/*! \brief Load sprite dymanicly from the shared object module. + * + * The search path can be changed by sprite_set_search_path. The name + * can have a relative path in the front of it. + * This function will search the object in the current working directory + * and then search the system search path. + */ +extern mb_sprite_t *sprite_load(const char *name, redraw_man_t *rdman, + coord_t *root); + +/*! \brief Set the search path of dymanic object loading. + * + */ +extern void sprite_set_search_path(const char *path); + +/*! \defgroup mb_sprite_lsym Sprite with linear symbol table. + * @{ + */ +struct _mb_sprite_lsym_entry { + const char *sym; + const int offset; +}; +typedef struct _mb_sprite_lsym_entry mb_sprite_lsym_entry_t; + +/*! \brief A sub-type of mb_sprite_t with linear symbol table. + * + * This type of sprite search symbols with linear/or binary searching. + */ +struct _mb_sprite_lsym { + mb_sprite_t sprite; + int num_entries; + mb_sprite_lsym_entry_t *entries; +}; +typedef struct _mb_sprite_lsym mb_sprite_lsym_t; +/* @} */ +/* @} */ + +#endif /* __MB_SPRITE_H_ */ +