12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include <keypadc.h>
- #include "../main.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 = self->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 + self->width(self)) > MAX_WIDTH){
- self->x = MAX_WIDTH - self->width(self);
- }
- if(self->y < 0){
- self->y = 0;
- }else if((self->y + self->height(self)) > MAX_HEIGHT){
- self->y = MAX_HEIGHT - self->height(self);
- }
- if(x == self->x && y == self->y){
- self->sprite = sprites->get(sprites, 0);
- }
- }
- void Player_load(Object* self){
- Player_log("Loading player");
- }
- void Player_free(Object* self){
- Player_log("Freeing player");
- // free(self->sprites);
- free_Object(self);
- }
- Object* new_Player(){
- Object* self = new_Object(0,0);
- // Vector* self->sprites = new_Vector(0, sizeof(Sprite), &free_Sprite);
- self->update = &Player_update;
- self->free = &Player_free;
- self->load = &Player_load;
- return self;
- }
|