/+junk/c_sdl_joypad

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/%2Bjunk/c_sdl_joypad
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
126
127
128
129
130
131
132
/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil
 * vi: set shiftwidth=2 tabstop=2 expandtab:
 * :indentSize=2:tabSize=2:noTabs=true:
 */

#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>

typedef struct GameObject 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);

/******************************************************************************
 * 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;



/******************************************************************************
 * 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__ */