X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fgame.c;fp=src%2Fgame.c;h=3194196faedbcb15b3dd9ddf5ca790403c586794;hb=8de1d701e4e9a45e7ed69ccf1fc298514fed5d8f;hp=a997b692282e06c7323bc4a9cdc6d3cd4b1bde02;hpb=76c3689b01d18e5949e91d0658deb278714f882b;p=vrlugburz diff --git a/src/game.c b/src/game.c index a997b69..3194196 100644 --- a/src/game.c +++ b/src/game.c @@ -18,7 +18,7 @@ float win_aspect; int mouse_x, mouse_y; int bnstate[8]; -float cam_dist = 10; +float cam_dist; float view_matrix[16], proj_matrix[16]; unsigned int sdr_foo; @@ -60,26 +60,51 @@ void game_shutdown(void) free_program(sdr_foo); } -#define STEP_INTERVAL 1000 +#define STEP_INTERVAL 128 void update(float dt) { static long prev_step; - int step[][2] = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}}; + int dir; + int step[][2] = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}}; cgm_vec3 vdir = {0, 0, -1}; - upd_player_xform(&player); cgm_vmul_m3v3(&vdir, player.view_xform); - player.dir = (int)(2.0f * (atan2(vdir.z, vdir.x) + M_PI) / M_PI + 0.5f); + player.dir = (int)(2.0f * (-atan2(vdir.z, vdir.x) + M_PI) / M_PI + 0.5f) & 3; - /* if(time_msec - prev_step >= STEP_INTERVAL) { - if(input[INP_FWD]) { + if(input_state[INP_FWD]) { + player.cx += step[player.dir][0]; + player.cy += step[player.dir][1]; + prev_step = time_msec; + printf("step[%d] %d,%d\n", player.dir, player.cx, player.cy); + } + if(input_state[INP_BACK]) { + player.cx -= step[player.dir][0]; + player.cy -= step[player.dir][1]; + prev_step = time_msec; + printf("step[%d] %d,%d\n", player.dir, player.cx, player.cy); + } + if(input_state[INP_LEFT]) { + dir = (player.dir + 3) & 3; + player.cx += step[dir][0]; + player.cy += step[dir][1]; + prev_step = time_msec; + printf("step[%d] %d,%d\n", player.dir, player.cx, player.cy); } + if(input_state[INP_RIGHT]) { + dir = (player.dir + 1) & 3; + player.cx += step[dir][0]; + player.cy += step[dir][1]; + prev_step = time_msec; + printf("step[%d] %d,%d\n", player.dir, player.cx, player.cy); + } + memset(input_state, 0, sizeof input_state); } - */ + + upd_player_xform(&player); } void game_display(void) @@ -101,7 +126,9 @@ void game_display(void) glLoadMatrixf(proj_matrix); glMatrixMode(GL_MODELVIEW); - glLoadMatrixf(player.view_xform); + glLoadIdentity(); + glTranslatef(0, 0, -cam_dist); + glMultMatrixf(player.view_xform); draw_level(); @@ -120,7 +147,7 @@ static void draw_level(void) cell = lvl.cells; for(i=0; i