123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #include <keypadc.h>
- #include "../main.h"
- #include "player.h"
- #include <stdlib.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);
- }
- }
- 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;
- }
|