Compare commits
3 Commits
6085dbaed0
...
351c9ba713
Author | SHA1 | Date |
---|---|---|
|
351c9ba713 | |
|
f9236e4182 | |
|
f0d76713c2 |
|
@ -18,7 +18,7 @@ static resource_t* insert_asset(const resource_t* resource) {
|
|||
return inserted;
|
||||
}
|
||||
|
||||
void add_arbitrary_asset(void* memory, deleter_t deleter) {
|
||||
void add_arbitrary_asset(void* memory, deleter_fn deleter) {
|
||||
char name_buf[99];
|
||||
// generate the name of the arbitrary block based on adresses
|
||||
sprintf(name_buf, "%p%p", memory, deleter);
|
||||
|
|
|
@ -17,7 +17,7 @@ typedef enum resourcetype_t {
|
|||
RESOURCETYPE_MAX
|
||||
} resourcetype_t;
|
||||
|
||||
typedef void(*deleter_t)(void* target);
|
||||
typedef void(*deleter_fn)(void* target);
|
||||
|
||||
typedef struct resource_t {
|
||||
resourcetype_t type;
|
||||
|
@ -31,13 +31,13 @@ typedef struct resource_t {
|
|||
} font;
|
||||
struct {
|
||||
void* memory;
|
||||
deleter_t deleter;
|
||||
deleter_fn deleter;
|
||||
} arbitrary_type;
|
||||
};
|
||||
} resource_t;
|
||||
|
||||
extern void add_arbitrary_asset(void* memory, deleter_t deleter);
|
||||
extern void add_arbitrary_asset_by_name(void* memory, deleter_t deleter, const char* name);
|
||||
extern void add_arbitrary_asset(void* memory, deleter_fn deleter);
|
||||
extern void add_arbitrary_asset_by_name(void* memory, deleter_fn deleter, const char* name);
|
||||
extern SDL_Texture* load_texture(const char* file);
|
||||
extern TTF_Font* load_font(const char* file, int size);
|
||||
extern SDL_Texture* get_texture(const char* file);
|
||||
|
|
|
@ -6,6 +6,34 @@
|
|||
#include "SDL2/SDL_render.h"
|
||||
#include <SDL2/SDL_events.h>
|
||||
|
||||
enum INPUT_LISTENER_TYPE_T {
|
||||
INPUT_LISTENER_MOUSE,
|
||||
INPUT_LISTENER_AXIS,
|
||||
INPUT_LISTENER_SCROLL,
|
||||
INPUT_LISTENER_BUTTON,
|
||||
};
|
||||
|
||||
typedef struct input_listener_t {
|
||||
enum INPUT_LISTENER_TYPE_T type;
|
||||
union {
|
||||
struct {
|
||||
input_axis_fn delegate;
|
||||
SDL_Scancode positive, negative;
|
||||
int last_positive, last_negative;
|
||||
} axis;
|
||||
struct {
|
||||
input_mouse_fn delegate;
|
||||
} mouse;
|
||||
struct {
|
||||
input_button_fn delegate;
|
||||
uint32_t button;
|
||||
int last;
|
||||
} button;
|
||||
struct {
|
||||
input_scroll_fn delegate;
|
||||
} scroll;
|
||||
};
|
||||
} input_listener_t;
|
||||
|
||||
const Uint8* g_key_states = NULL;
|
||||
input_listener_t g_key_listeners[24];
|
||||
|
@ -17,7 +45,7 @@ static uint32_t _mouse_left_seconds = 0;
|
|||
static float _scroll_delta = 0;
|
||||
|
||||
void add_key_listener(SDL_Scancode negative, SDL_Scancode positive,
|
||||
input_axis_delegate_t delegate) {
|
||||
input_axis_fn delegate) {
|
||||
memset(g_key_listeners_endptr, 0x0, sizeof(input_listener_t));
|
||||
g_key_listeners_endptr->type = INPUT_LISTENER_AXIS;
|
||||
g_key_listeners_endptr->axis.delegate = delegate;
|
||||
|
@ -28,14 +56,14 @@ void add_key_listener(SDL_Scancode negative, SDL_Scancode positive,
|
|||
++g_key_listeners_endptr;
|
||||
}
|
||||
|
||||
void add_mouse_listener(input_mouse_delegate_t delegate) {
|
||||
void add_mouse_listener(input_mouse_fn delegate) {
|
||||
memset(g_key_listeners_endptr, 0x0, sizeof(input_listener_t));
|
||||
g_key_listeners_endptr->type = INPUT_LISTENER_MOUSE;
|
||||
g_key_listeners_endptr->mouse.delegate = delegate;
|
||||
++g_key_listeners_endptr;
|
||||
}
|
||||
|
||||
void add_mouse_button_listener(uint32_t button, input_button_delegate_t delegate) {
|
||||
void add_mouse_button_listener(uint32_t button, input_button_fn delegate) {
|
||||
memset(g_key_listeners_endptr, 0x0, sizeof(input_listener_t));
|
||||
g_key_listeners_endptr->type = INPUT_LISTENER_BUTTON;
|
||||
g_key_listeners_endptr->button.delegate = delegate;
|
||||
|
@ -44,7 +72,7 @@ void add_mouse_button_listener(uint32_t button, input_button_delegate_t delegate
|
|||
++g_key_listeners_endptr;
|
||||
}
|
||||
|
||||
void add_scroll_listener(input_scroll_delegate_t delegate) {
|
||||
void add_scroll_listener(input_scroll_fn delegate) {
|
||||
memset(g_key_listeners_endptr, 0x0, sizeof(input_listener_t));
|
||||
g_key_listeners_endptr->type = INPUT_LISTENER_SCROLL;
|
||||
g_key_listeners_endptr->scroll.delegate = delegate;
|
||||
|
|
|
@ -7,56 +7,28 @@ extern "C" {
|
|||
|
||||
#include "SDL2/SDL.h"
|
||||
|
||||
typedef void(*input_axis_delegate_t)(int value);
|
||||
typedef void(*input_mouse_delegate_t)(float dx, float dy);
|
||||
typedef void(*input_button_delegate_t)(int down);
|
||||
typedef void(*input_scroll_delegate_t)(float delta);
|
||||
|
||||
enum INPUT_LISTENER_TYPE_T {
|
||||
INPUT_LISTENER_MOUSE,
|
||||
INPUT_LISTENER_AXIS,
|
||||
INPUT_LISTENER_SCROLL,
|
||||
INPUT_LISTENER_BUTTON,
|
||||
};
|
||||
|
||||
typedef struct input_listener_t {
|
||||
enum INPUT_LISTENER_TYPE_T type;
|
||||
union {
|
||||
struct {
|
||||
input_axis_delegate_t delegate;
|
||||
SDL_Scancode positive, negative;
|
||||
int last_positive, last_negative;
|
||||
} axis;
|
||||
struct {
|
||||
input_mouse_delegate_t delegate;
|
||||
} mouse;
|
||||
struct {
|
||||
input_button_delegate_t delegate;
|
||||
uint32_t button;
|
||||
int last;
|
||||
} button;
|
||||
struct {
|
||||
input_scroll_delegate_t delegate;
|
||||
} scroll;
|
||||
};
|
||||
} input_listener_t;
|
||||
typedef void(*input_axis_fn)(int value);
|
||||
typedef void(*input_mouse_fn)(float dx, float dy);
|
||||
typedef void(*input_button_fn)(int down);
|
||||
typedef void(*input_scroll_fn)(float delta);
|
||||
|
||||
extern const Uint8* g_key_states;
|
||||
|
||||
extern void add_key_listener(SDL_Scancode negative, SDL_Scancode positive,
|
||||
input_axis_delegate_t delegate);
|
||||
extern void add_mouse_listener(input_mouse_delegate_t delegate);
|
||||
extern void add_mouse_button_listener(uint32_t button, input_button_delegate_t delegate);
|
||||
extern void add_scroll_listener(input_scroll_delegate_t delegate);
|
||||
extern void remove_listener_at(size_t index);
|
||||
input_axis_fn delegate);
|
||||
extern void add_mouse_listener(input_mouse_fn delegate);
|
||||
extern void add_mouse_button_listener(uint32_t button, input_button_fn delegate);
|
||||
extern void add_scroll_listener(input_scroll_fn delegate);
|
||||
|
||||
extern void mouse_screen_position(float* ox, float* oy);
|
||||
extern void mouse_world_position(float* ox, float* oy);
|
||||
|
||||
extern int input_get_keydown(SDL_Scancode scancode);
|
||||
extern int input_get_mousedown(int mousebtn);
|
||||
|
||||
extern void input_init();
|
||||
extern void update_input();
|
||||
extern void input_notify_event(SDL_Event event);
|
||||
extern int input_get_keydown(SDL_Scancode scancode);
|
||||
extern int input_get_mousedown(int mousebtn);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -34,15 +34,9 @@ typedef struct physics_t {
|
|||
} physics_t;
|
||||
|
||||
extern physics_t physics_default();
|
||||
|
||||
extern void object_broadcast_evt_collision(object_t* this, object_t* other);
|
||||
|
||||
extern void physics_update();
|
||||
|
||||
extern void physics_move(object_t* this, float delta_time);
|
||||
|
||||
extern short can_collide(const object_t* this);
|
||||
|
||||
extern void solve_collision_slide(object_t* left, object_t* right);
|
||||
extern float get_solve_force(const object_t* this, const object_t* other, float* solve_x, float* solve_y);
|
||||
|
||||
|
|
Loading…
Reference in New Issue