2
#ifndef __H_GAME_OBJECT__
3
#define __H_GAME_OBJECT__
8
typedef struct _GameObject GameObject;
10
typedef struct _GameObjectClass GameObjectClass;
12
typedef struct _GameObjectPriv GameObjectPriv;
15
/******************************************************************************
16
* Function pointer declarations.
17
*****************************************************************************/
19
typedef void (* GameObjectCallbackFunc)(GameObject * self, void * data);
21
typedef void (* GameObjectFreeFunc)(GameObject * self);
23
typedef void (* GameObjectDrawFunc)(GameObject * self, SDL_Renderer * renderer);
25
typedef void (* GameObjectCallbackHandlerFunc)(GameObject * self, char * name);
27
typedef void (* GameObjectAddCallbackFunc)(GamoObject * self, char * self,\
28
GameObjectCallbackFunc callback_func);
30
typedef void (* GameObjectMoveFunc)(GameObject * self);
32
typedef void (* GameObjectSetMovementDeltaFunc)(GameObject * self, int delta_x,\
33
int delta_y, Uint32 time_delta);
35
typedef SDL_Rect (* GameObjectGetBoundingBoxFunc)(GameObject * self);
37
typedef bool (* GameObjectGetIsAliveFunc)(GameObject * self);
39
/******************************************************************************
41
*****************************************************************************/
43
struct _GameObjectClass {
44
GameObjectFreeFunc free_func;
45
GameObjectDrawFunc draw_func;
46
GameObjectCallbackHandlerFunc callback_handler_func;
47
GameObjectAddCallbackFunc add_callback_func;
48
GameObjectMoveFunc move_func;
49
GameObjectSetMovementDeltaFunc set_movement_delta_func;
50
GameObjectGetBoundingBoxFunc get_bounding_box_func;
51
GameObjectGetIsAliveFunc get_is_alive_func;
54
struct _GameObjectPriv {}; /**< prototype for the private data */
57
GameObjectClass * klass; /**< the class that holds all the virtual
59
GameObjectPriv * priv; /**< The private data. */
62
/******************************************************************************
63
* Game Object base functions.
64
*****************************************************************************/
65
void game_object_free (GameObject * self);
67
GameObjectClass * game_object_get_class (GameObject * self);
69
void game_object_set_class (GameObject * self, GameObjectClass * klass);
71
void game_object_draw (GameObject * self, SDL_Renderer * renderer);
73
void game_object_move (GameObject * self);
75
bool game_object_get_is_alive (GameObject * self);
77
void game_object_set_callback (GameObject * self, const char * name,
80
void game_object_do_callback (GameObject * self, const char * name);
83
/******************************************************************************
84
* Game Object set virtual function functions.
85
*****************************************************************************/
87
void game_object_set_free_func (GameObject * self,
88
GameObjectFreeFunc free_func);
90
void game_object_set_draw_func (GameObject * self,
91
GameObjectDrawFunc draw_func);
93
void game_object_set_callback_handler_func (GameObject * self,
94
GameObjectCallbackHandlerFunc callback_handler_func);
96
void game_object_set_add_callback_func (GameObject * self,
97
GameObjectAddCallbackFunc add_callback_func);
99
void game_object_set_move_func (GameObject * self,
100
GameObjectMoveFunc move_func);
102
void game_object_set_set_move_delta_func (GameObject * self,
103
GameObjectSetMovementDeltaFunc set_movent_delta_func);
105
void game_object_set_get_bounding_box_func (GameObject * self,
106
GameObjectGetBoundingBoxFunc get_bounding_box_func);
108
void game_object_set_movment_delta (GameObject * self, int delta_x,
109
int delta_y, uint32 delta_time);
111
void game_object_set_get_is_alive_func (GameObject * self,
112
GameObjectGetIsAliveFunc get_is_alive_func);
114
#endif /* __H_GAME_OBJECT__ */