/+junk/c_sdl_joypad_ducktape

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/%2Bjunk/c_sdl_joypad_ducktape
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#ifndef __H_GAME_OBJECT__
#define __H_GAME_OBJECT__

/**
 * This file, as the rest of the project is under MIT license.
 * see http://opensource.org/licenses/MIT
 *
 * Author Gustav Hartvigsson <gustav.hartvigsson _at_ gmail.com> 2014
 */

#include <SDL2/SDL.h>
#include <stdbool.h>

/******************************************************************************
 * Object declaration.
 *****************************************************************************/

typedef struct GameObjectClass {
  GameObjectFreeFunc                     free_func;
  GameObjectDrawFunc                     draw_func;
  GameObjectCallbackHandlerFunc          callback_handler_func;
  GameObjectSetCallbackFunc              set_callback_func;
  GameObjectMoveFunc                     move_func;
  GameObjectSetMovementDeltaFunc         set_movement_delta_func;
  GameObjectGetBoundingBoxFunc           get_bounding_box_func;
  GameObjectGetIsAliveFunc               get_is_alive_func;
  GameObjectGetIsCollideFunc             get_is_collide_func;
} GameObjectClass;


typedef struct GameObject {
  GameObjectClass *      klass; /**< the class that holds all the virtual
                                  * functions. */
  void *       priv; /**< The private data. */
} GameObject;

/******************************************************************************
 * Function pointer declarations.
 *****************************************************************************/
 
typedef void (* GameObjectCallbackFunc)(GameObject * self, void * data);

typedef void (* GameObjectFreeFunc)(GameObject * self);

typedef void (* GameObjectDrawFunc)(GameObject * self, SDL_Renderer * renderer);

typedef void (* GameObjectCallbackHandlerFunc)(GameObject * self, char * name);

typedef void (* GameObjectSetCallbackFunc)(GameObject * self, char * name,\
                                      GameObjectCallbackFunc callback_func,
                                      void * data);

typedef void (* GameObjectMoveFunc)(GameObject * self);

typedef void (* GameObjectSetMovementDeltaFunc)(GameObject * self, int delta_x,\
                                      int delta_y, Uint32 time_delta);

typedef SDL_Rect (* GameObjectGetBoundingBoxFunc)(GameObject * self);

typedef bool (* GameObjectGetIsAliveFunc)(GameObject * self);

typedef bool (* GameObjectGetIsCollideFunc)(GameObject * self,
                                            GameObject * other);


/******************************************************************************
 * Game Object base functions.
 *****************************************************************************/
void game_object_free (GameObject * self);

GameObjectClass * game_object_get_class (GameObject * self);

void game_object_set_class (GameObject * self, GameObjectClass * klass);

void game_object_draw (GameObject * self, SDL_Renderer * renderer);

void game_object_move (GameObject * self);

void game_object_set_movement_delta (GameObject * self, int delta_x,
                                                     int delta_y, uint32_t d_t);

bool game_object_get_is_alive (GameObject * self);

void game_object_set_callback (GameObject * self, char * name,
                               GameObjectCallbackFunc callback_func,
                               void * data);

void game_object_do_callback (GameObject * self, char * name);


/******************************************************************************
 * Game Object set virtual function functions.
 *****************************************************************************/

void game_object_set_free_func (GameObject * self,
                                GameObjectFreeFunc free_func);

void game_object_set_draw_func (GameObject * self,
                                GameObjectDrawFunc draw_func);

void game_object_set_callback_handler_func (GameObject * self,
                           GameObjectCallbackHandlerFunc callback_handler_func);

void game_object_set_add_callback_func (GameObject * self,
                                   GameObjectSetCallbackFunc add_callback_func);

void game_object_set_move_func (GameObject * self,
                                GameObjectMoveFunc move_func);

void game_object_set_set_move_delta_func (GameObject * self,
                          GameObjectSetMovementDeltaFunc set_movent_delta_func);

void game_object_set_get_bounding_box_func (GameObject * self,
                            GameObjectGetBoundingBoxFunc get_bounding_box_func);

void game_object_set_movment_delta (GameObject * self, int delta_x,
                                    int delta_y, uint32_t delta_time);

void game_object_set_get_is_alive_func (GameObject * self,
                                    GameObjectGetIsAliveFunc get_is_alive_func);

void game_object_set_is_collide_func (GameObject * self,
                                   GameObjectGetIsCollideFunc is_collide_func);
#endif /* __H_GAME_OBJECT__ */