1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #include <keypadc.h>
- #include "../main.h"
- #define Player_log(msg) dbg_sprintf(dbgout, "[Object(Player) %d] %s\n", self->id, msg)
- void Player_update(Object* self){
- Scene* scene = current_Scene();
- Vector* sprites = scene->sprites;
- Sprite* sprite;
- kb_key_t arrows = kb_Data[7];
- int x = self->x;
- int y = self->y;
- int speed;
- #ifdef LOG_UPDATE
- Player_log("Drawing player");
- #endif
- if(kb_Data[2] & kb_Alpha){
- speed = RUN_SPEED;
- }else{
- speed = WALK_SPEED;
- }
- if(arrows & kb_Down){
- if(self->y < MAX_HEIGHT){
- self->y += speed;
- sprite = sprites->get(sprites, 2);
- if(sprite != self->sprite){
- self->sprite = sprite;
- }else{
- self->sprite = sprites->get(sprites, 4);
- }
- }
- }else if(arrows & kb_Up){
- if(self->y > 0){
- self->y -= speed;
- sprite = sprites->get(sprites, 18);
- if(sprite != self->sprite){
- self->sprite = sprite;
- }else{
- self->sprite = sprites->get(sprites, 20);
- }
- }
- }
- if(arrows & kb_Right){
- if(self->x < MAX_WIDTH){
- self->x += speed;
- sprite = sprites->get(sprites, 10);
- if(sprite != self->sprite){
- self->sprite = sprite;
- }else{
- self->sprite = sprites->get(sprites, 12);
- }
- }
- }else if(arrows & kb_Left){
- if(self->x > 0){
- self->x -= speed;
- sprite = sprites->get(sprites, 6);
- if(sprite != self->sprite){
- self->sprite = sprite;
- }else{
- self->sprite = sprites->get(sprites, 8);
- }
- }
- }
- if(self->x < 0){
- self->x = 0;
- }else if(self->x >= MAX_WIDTH){
- self->x = MAX_WIDTH;
- }
- if(self->y < 0){
- self->y = 0;
- }else if(self->y >= MAX_HEIGHT){
- self->y = MAX_HEIGHT;
- }
- if(x == self->x && y == self->y){
- self->sprite = sprites->get(sprites, 0);
- }
- }
- Object* new_Player(){
- Object* self = new_Object(0,0);
- self->update = &Player_update;
- return self;
- }
|