diff options
author | Kyle K <kylek389@gmail.com> | 2011-07-19 09:17:16 -0500 |
---|---|---|
committer | Kamil Kaminski <kamilkss@gmail.com> | 2011-07-19 09:17:16 -0500 |
commit | 1944ec48d1c7870403fb6c4f25cf885dd591a8ab (patch) | |
tree | 09e43d1413d5cc4805d14c917feb77342670d73f /sdl | |
parent | 09d12523ad298f7d58bf2948af5275ddd6caa976 (diff) | |
download | GLPyramid-1944ec48d1c7870403fb6c4f25cf885dd591a8ab.tar.gz GLPyramid-1944ec48d1c7870403fb6c4f25cf885dd591a8ab.tar.bz2 GLPyramid-1944ec48d1c7870403fb6c4f25cf885dd591a8ab.zip |
sdl: unglobalize struct platform variable
Diffstat (limited to 'sdl')
-rw-r--r-- | sdl/event.c | 51 | ||||
-rw-r--r-- | sdl/event.h | 6 | ||||
-rw-r--r-- | sdl/platform.c | 2 | ||||
-rw-r--r-- | sdl/pyramid.c | 20 |
4 files changed, 40 insertions, 39 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); } diff --git a/sdl/event.h b/sdl/event.h index 468087b..0608fa7 100644 --- a/sdl/event.h +++ b/sdl/event.h @@ -1,7 +1,9 @@ #ifndef _EVENT_H_ #define _EVENT_H_ -/* a table holding function pointers to function that handle events */ +struct platform; + +/* a table holding function pointers to functions that handle events */ struct event_vtbl { void (*keydown)(SDL_keysym *, const unsigned int *, const int); @@ -9,7 +11,7 @@ struct event_vtbl }; /* function prototypes */ -int event_handler_init(struct event_vtbl *); +int event_handler_init(struct platform *, struct event_vtbl *); void sdl_process_events(void); void event_keydown(SDL_keysym *, const unsigned int *, const int); diff --git a/sdl/platform.c b/sdl/platform.c index 138596a..7c7bcdd 100644 --- a/sdl/platform.c +++ b/sdl/platform.c @@ -71,7 +71,7 @@ void platform_init(struct platform *p) struct event_vtbl event_tbl; memset(&event_tbl, 0, sizeof(event_tbl)); event_tbl.keydown = event_keydown; - ret = event_handler_init(&event_tbl); + ret = event_handler_init(p, &event_tbl); if (ret == -1) fprintf(stderr, "platform: warning, failed to init event handler\n"); diff --git a/sdl/pyramid.c b/sdl/pyramid.c index 1e14ebb..ff8a03f 100644 --- a/sdl/pyramid.c +++ b/sdl/pyramid.c @@ -31,9 +31,6 @@ #include "sdltools.h" #include "window.h" -/* globals */ -struct platform p; - /* sane defaults, these are overwritable by config.lua */ int program_running = 1; unsigned int xres_w = 640; @@ -49,7 +46,7 @@ unsigned int maxfps_w = 60; static int client_init(struct client *); static int client_destroy(struct client *); static inline void process_events(void); -static void render(void); +static void render(struct platform *); static int client_init(struct client *p) { @@ -90,7 +87,7 @@ static inline void process_events(void) sdl_process_events(); } -static void render(void) +static void render(struct platform *p) { /* clear the window with current clearing color */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -98,17 +95,17 @@ static void render(void) /* save the matrix state and do the rotations */ glPushMatrix(); /* apply camera transform, and draw the ground */ - glframe_apply_camera_transform(&p.camera, 1); - glCallList(p.c->ground_list); + glframe_apply_camera_transform(&p->camera, 1); + glCallList(p->c->ground_list); glPushMatrix(); /* move object back and do in place rotation */ glTranslatef(0.0f, 0.2f, -3.5f); - glRotatef(p.c->xrot, 1.0f, 0.0f, 0.0f); - glRotatef(p.c->yrot, 0.0f, 1.0f, 0.0f); + glRotatef(p->c->xrot, 1.0f, 0.0f, 0.0f); + glRotatef(p->c->yrot, 0.0f, 1.0f, 0.0f); /* draw the pyramid */ - glCallList(p.c->triangle_list); + glCallList(p->c->triangle_list); glPopMatrix(); /* draw a snowman */ @@ -127,6 +124,7 @@ static void render(void) int main(int argc, char **argv) { + struct platform p; memset(&p, 0, sizeof(p)); /* setup client platform */ @@ -148,7 +146,7 @@ int main(int argc, char **argv) startclock = SDL_GetTicks(); process_events(); - render(); + render(&p); sdlFrameControl(startclock); } |