summaryrefslogtreecommitdiffstats
path: root/sdl/event.c
diff options
context:
space:
mode:
Diffstat (limited to 'sdl/event.c')
-rw-r--r--sdl/event.c51
1 files changed, 26 insertions, 25 deletions
diff --git a/sdl/event.c b/sdl/event.c
index c3120af..16e5f00 100644
--- a/sdl/event.c
+++ b/sdl/event.c
@@ -17,17 +17,18 @@
#include "window.h"
#include "event.h"
-extern struct platform p;
extern int program_running;
+static struct platform *p;
/* our function table */
static struct event_vtbl event_tbl;
-int event_handler_init(struct event_vtbl *tbl)
+int event_handler_init(struct platform *plat, struct event_vtbl *tbl)
{
- if (!tbl)
+ if (!tbl || !plat)
return -1;
+ p = plat;
event_tbl = *tbl;
/* predefined handlers that are automatically provided */
@@ -103,46 +104,46 @@ void event_keydown(SDL_keysym *keysym, const unsigned int *keys_held, const int
switch (keysym->sym)
{
case SDLK_ESCAPE: program_running = 0; break;
- case SDLK_w: p.c->xrot -= 5.0f; break;
- case SDLK_s: p.c->xrot += 5.0f; break;
- case SDLK_a: p.c->yrot -= 5.0f; break;
- case SDLK_d: p.c->yrot += 5.0f; break;
- case SDLK_UP: glframe_move_forward(&p.camera, 0.5f); break;
- case SDLK_DOWN: glframe_move_forward(&p.camera, -0.5f); break;
- case SDLK_LEFT: glframe_rotate_local_y(&p.camera, 0.1f); break;
- case SDLK_RIGHT: glframe_rotate_local_y(&p.camera, -0.1f); break;
- case SDLK_n: glframe_rotate_local_x(&p.camera, 0.1f); break;
- case SDLK_m: glframe_rotate_local_x(&p.camera, -0.1f); break;
+ case SDLK_w: p->c->xrot -= 5.0f; break;
+ case SDLK_s: p->c->xrot += 5.0f; break;
+ case SDLK_a: p->c->yrot -= 5.0f; break;
+ case SDLK_d: p->c->yrot += 5.0f; break;
+ case SDLK_UP: glframe_move_forward(&p->camera, 0.5f); break;
+ case SDLK_DOWN: glframe_move_forward(&p->camera, -0.5f); break;
+ case SDLK_LEFT: glframe_rotate_local_y(&p->camera, 0.1f); break;
+ case SDLK_RIGHT: glframe_rotate_local_y(&p->camera, -0.1f); break;
+ case SDLK_n: glframe_rotate_local_x(&p->camera, 0.1f); break;
+ case SDLK_m: glframe_rotate_local_x(&p->camera, -0.1f); break;
default: break;
}
}
else
{
if (keys_held[SDLK_w])
- p.c->xrot -= 5.0f;
+ p->c->xrot -= 5.0f;
if (keys_held[SDLK_s])
- p.c->xrot += 5.0f;
+ p->c->xrot += 5.0f;
if (keys_held[SDLK_a])
- p.c->yrot -= 5.0f;
+ p->c->yrot -= 5.0f;
if (keys_held[SDLK_d])
- p.c->yrot += 5.0f;
+ p->c->yrot += 5.0f;
if (keys_held[SDLK_UP])
- glframe_move_forward(&p.camera, 0.05f);
+ glframe_move_forward(&p->camera, 0.05f);
if (keys_held[SDLK_DOWN])
- glframe_move_forward(&p.camera, -0.05f);
+ glframe_move_forward(&p->camera, -0.05f);
if (keys_held[SDLK_LEFT])
- glframe_rotate_local_y(&p.camera, 0.02f);
+ glframe_rotate_local_y(&p->camera, 0.02f);
if (keys_held[SDLK_RIGHT])
- glframe_rotate_local_y(&p.camera, -0.02f);
+ glframe_rotate_local_y(&p->camera, -0.02f);
if (keys_held[SDLK_n])
- glframe_rotate_local_x(&p.camera, 0.02f);
+ glframe_rotate_local_x(&p->camera, 0.02f);
if (keys_held[SDLK_m])
- glframe_rotate_local_x(&p.camera, -0.02f);
+ glframe_rotate_local_x(&p->camera, -0.02f);
}
- p.c->xrot = (GLfloat) ((const int) p.c->xrot % 360);
- p.c->yrot = (GLfloat) ((const int) p.c->yrot % 360);
+ p->c->xrot = (GLfloat) ((const int) p->c->xrot % 360);
+ p->c->yrot = (GLfloat) ((const int) p->c->yrot % 360);
}