X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fplayer.c;h=6c97e38dd2fad2338034c3cff83453c5e646b5c2;hb=79c636931d1f9bf844196e91be171b17bbe9c04f;hp=d025799cd91e91951960eb7e5f2ffdea5a2cab0e;hpb=5e41feadc19dbc9cda954543cf2b2649ced835b4;p=gbajam22 diff --git a/src/player.c b/src/player.c index d025799..6c97e38 100644 --- a/src/player.c +++ b/src/player.c @@ -1,9 +1,32 @@ +#include +#include "game.h" #include "player.h" +#include "level.h" #include "gbaregs.h" #include "xgl.h" +void init_player(struct player *p, struct level *lvl) +{ + memset(p, 0, sizeof *p); + p->cx = lvl->orgx; + p->cy = lvl->orgy; + cell_to_pos(lvl, lvl->orgx, lvl->orgy, &p->x, &p->y); + p->cell = level_cell(lvl, lvl->orgx, lvl->orgy); +} + void player_input(struct player *p, uint16_t bnstate) { +#ifndef BUILD_GBA + p->theta = (p->theta + view_dtheta) % X_2PI; + if(p->theta < 0) p->theta += X_2PI; + p->phi += view_dphi; + if(p->phi > X_HPI) p->phi = X_HPI; + if(p->phi < -X_HPI) p->phi = -X_HPI; + + view_dtheta = 0; + view_dphi = 0; +#endif + if(bnstate & KEY_UP) { p->phi += 0x800; if(p->phi > X_HPI) p->phi = X_HPI; @@ -14,11 +37,11 @@ void player_input(struct player *p, uint16_t bnstate) } if(bnstate & KEY_LEFT) { p->theta += 0x800; - if(p->theta > X_2PI) p->theta -= X_2PI; + if(p->theta >= X_2PI) p->theta -= X_2PI; } if(bnstate & KEY_RIGHT) { p->theta -= 0x800; - if(p->theta < X_2PI) p->theta += X_2PI; + if(p->theta < 0) p->theta += X_2PI; } if(bnstate & KEY_A) { p->y += 0x2000;