#include #include "../main.h" #include "player.h" #include #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); } } void Player_load(Object* self){ Player_log("Loading player"); } Object* new_Player(){ Object* self = new_Object(0,0); self->update = &Player_update; self->load = &Player_load; return self; }