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_ */
+