X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;ds=sidebyside;f=src%2Fplayer.c;h=5a39077e9437248b2a9a3b5b2d6e83e3dfbff330;hb=d985165d0e156c785895a5272113ff477bebeeb8;hp=62c9813b7cc5c70b836fbf206de9c33b9d675da3;hpb=ff8e2d7dab918d2e303f941fad00dee6bb80544e;p=gbajam22 diff --git a/src/player.c b/src/player.c index 62c9813..5a39077 100644 --- a/src/player.c +++ b/src/player.c @@ -1,29 +1,40 @@ +#include #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) { if(bnstate & KEY_UP) { - p->phi += 0x2000; + p->phi += 0x800; if(p->phi > X_HPI) p->phi = X_HPI; } if(bnstate & KEY_DOWN) { - p->phi -= 0x2000; + p->phi -= 0x800; if(p->phi < -X_HPI) p->phi = -X_HPI; } if(bnstate & KEY_LEFT) { - p->theta += 0x2000; - if(p->theta > X_2PI) p->theta -= X_2PI; + p->theta += 0x800; + if(p->theta >= X_2PI) p->theta -= X_2PI; } if(bnstate & KEY_RIGHT) { - p->theta -= 0x2000; - if(p->theta < X_2PI) p->theta += X_2PI; + p->theta -= 0x800; + if(p->theta < 0) p->theta += X_2PI; } if(bnstate & KEY_A) { - p->y += 0x1000; + p->y += 0x2000; } if(bnstate & KEY_B) { - p->y -= 0x1000; + p->y -= 0x2000; } }