X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=vrlugburz;a=blobdiff_plain;f=src%2Fplayer.c;fp=src%2Fplayer.c;h=24c5851570d996fd64a1e7e6942052eb897a7b69;hp=820dfbdc5d0d4a7254e8cd24f58298afff5af10c;hb=60a62013e45b8dd307494b792c48b5fde17d2fdc;hpb=8b4c81041dbf3149c3bbdac08de63524ee2d48b4 diff --git a/src/player.c b/src/player.c index 820dfbd..24c5851 100644 --- a/src/player.c +++ b/src/player.c @@ -10,6 +10,21 @@ void init_player(struct player *p) p->mp = p->mp_max = 10; } +void move_player(struct player *p, int right, int fwd) +{ + static const int step[][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; + int rdir = (p->dir + 1) & 3; + p->cx += step[p->dir][0] * fwd + step[rdir][0] * right; + p->cy += step[p->dir][1] * fwd + step[rdir][1] * right; +} + +void turn_player(struct player *p, int turn) +{ + if(!turn) return; + turn = turn > 0 ? 1 : 3; + p->dir = (p->dir + turn) & 3; +} + void upd_player_xform(struct player *p) { cgm_vec3 pos; @@ -20,7 +35,14 @@ void upd_player_xform(struct player *p) cgm_midentity(p->view_xform); cgm_mprerotate_x(p->view_xform, -p->phi); - cgm_mprerotate_y(p->view_xform, -p->theta); + cgm_mprerotate_y(p->view_xform, p->dir * M_PI / 2.0f); cgm_mrotate_quat(p->view_xform, &p->vrot); cgm_mpretranslate(p->view_xform, -pos.x, -pos.y, -pos.z); } + +void upd_player_vis(struct player *p) +{ + p->vis = 0; + + +}