diff options
Diffstat (limited to 'sdl/event.c')
-rw-r--r-- | sdl/event.c | 51 |
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); } |