|
@@ -5,14 +5,13 @@
|
|
|
|
|
|
#define Player_log(msg) dbg_sprintf(dbgout, "[Object(Player) %d] %s\n", self->id, msg)
|
|
#define Player_log(msg) dbg_sprintf(dbgout, "[Object(Player) %d] %s\n", self->id, msg)
|
|
|
|
|
|
-void Player_update(Object* base){
|
|
|
|
- Player* self = (Player*)base;
|
|
|
|
- Scene* scene = base->scene;
|
|
|
|
|
|
+void Player_update(Object* self){
|
|
|
|
+ Scene* scene = self->scene;
|
|
Vector* sprites = scene->sprites;
|
|
Vector* sprites = scene->sprites;
|
|
Sprite* sprite;
|
|
Sprite* sprite;
|
|
kb_key_t arrows = kb_Data[7];
|
|
kb_key_t arrows = kb_Data[7];
|
|
- int x = base->x;
|
|
|
|
- int y = base->y;
|
|
|
|
|
|
+ int x = self->x;
|
|
|
|
+ int y = self->y;
|
|
int speed;
|
|
int speed;
|
|
#ifdef LOG_UPDATE
|
|
#ifdef LOG_UPDATE
|
|
Player_log("Drawing player");
|
|
Player_log("Drawing player");
|
|
@@ -23,83 +22,69 @@ void Player_update(Object* base){
|
|
speed = WALK_SPEED;
|
|
speed = WALK_SPEED;
|
|
}
|
|
}
|
|
if(arrows & kb_Down){
|
|
if(arrows & kb_Down){
|
|
- if(base->y < MAX_HEIGHT){
|
|
|
|
- base->y += speed;
|
|
|
|
|
|
+ if(self->y < MAX_HEIGHT){
|
|
|
|
+ self->y += speed;
|
|
sprite = sprites->get(sprites, 2);
|
|
sprite = sprites->get(sprites, 2);
|
|
- if(sprite != base->sprite){
|
|
|
|
- base->sprite = sprite;
|
|
|
|
|
|
+ if(sprite != self->sprite){
|
|
|
|
+ self->sprite = sprite;
|
|
}else{
|
|
}else{
|
|
- base->sprite = sprites->get(sprites, 4);
|
|
|
|
|
|
+ self->sprite = sprites->get(sprites, 4);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}else if(arrows & kb_Up){
|
|
}else if(arrows & kb_Up){
|
|
- if(base->y > 0){
|
|
|
|
- base->y -= speed;
|
|
|
|
|
|
+ if(self->y > 0){
|
|
|
|
+ self->y -= speed;
|
|
sprite = sprites->get(sprites, 18);
|
|
sprite = sprites->get(sprites, 18);
|
|
- if(sprite != base->sprite){
|
|
|
|
- base->sprite = sprite;
|
|
|
|
|
|
+ if(sprite != self->sprite){
|
|
|
|
+ self->sprite = sprite;
|
|
}else{
|
|
}else{
|
|
- base->sprite = sprites->get(sprites, 20);
|
|
|
|
|
|
+ self->sprite = sprites->get(sprites, 20);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(arrows & kb_Right){
|
|
if(arrows & kb_Right){
|
|
- if(base->x < MAX_WIDTH){
|
|
|
|
- base->x += speed;
|
|
|
|
|
|
+ if(self->x < MAX_WIDTH){
|
|
|
|
+ self->x += speed;
|
|
sprite = sprites->get(sprites, 10);
|
|
sprite = sprites->get(sprites, 10);
|
|
- if(sprite != base->sprite){
|
|
|
|
- base->sprite = sprite;
|
|
|
|
|
|
+ if(sprite != self->sprite){
|
|
|
|
+ self->sprite = sprite;
|
|
}else{
|
|
}else{
|
|
- base->sprite = sprites->get(sprites, 12);
|
|
|
|
|
|
+ self->sprite = sprites->get(sprites, 12);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}else if(arrows & kb_Left){
|
|
}else if(arrows & kb_Left){
|
|
- if(base->x > 0){
|
|
|
|
- base->x -= speed;
|
|
|
|
|
|
+ if(self->x > 0){
|
|
|
|
+ self->x -= speed;
|
|
sprite = sprites->get(sprites, 6);
|
|
sprite = sprites->get(sprites, 6);
|
|
- if(sprite != base->sprite){
|
|
|
|
- base->sprite = sprite;
|
|
|
|
|
|
+ if(sprite != self->sprite){
|
|
|
|
+ self->sprite = sprite;
|
|
}else{
|
|
}else{
|
|
- base->sprite = sprites->get(sprites, 8);
|
|
|
|
|
|
+ self->sprite = sprites->get(sprites, 8);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if(base->x < 0){
|
|
|
|
- base->x = 0;
|
|
|
|
- }else if(base->x >= MAX_WIDTH){
|
|
|
|
- base->x = MAX_WIDTH;
|
|
|
|
|
|
+ if(self->x < 0){
|
|
|
|
+ self->x = 0;
|
|
|
|
+ }else if(self->x >= MAX_WIDTH){
|
|
|
|
+ self->x = MAX_WIDTH;
|
|
}
|
|
}
|
|
- if(base->y < 0){
|
|
|
|
- base->y = 0;
|
|
|
|
- }else if(base->y >= MAX_HEIGHT){
|
|
|
|
- base->y = MAX_HEIGHT;
|
|
|
|
|
|
+ if(self->y < 0){
|
|
|
|
+ self->y = 0;
|
|
|
|
+ }else if(self->y >= MAX_HEIGHT){
|
|
|
|
+ self->y = MAX_HEIGHT;
|
|
}
|
|
}
|
|
- if(x == base->x && y == base->y){
|
|
|
|
- base->sprite = sprites->get(sprites, 0);
|
|
|
|
|
|
+ if(x == self->x && y == self->y){
|
|
|
|
+ self->sprite = sprites->get(sprites, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-void Player_load(Object* base){
|
|
|
|
|
|
+void Player_load(Object* self){
|
|
Player_log("Loading player");
|
|
Player_log("Loading player");
|
|
- Player* self = (Player*)base;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-void Player_free(Object* base){
|
|
|
|
- Player* self = (Player*)base;
|
|
|
|
- Player_log("Freeing player");
|
|
|
|
- free(self->sprites);
|
|
|
|
- base->free = NULL;
|
|
|
|
- free_Object((Object*)self);
|
|
|
|
- free(self);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-Player* new_Player(){
|
|
|
|
- Player* self = (Player*)malloc(sizeof(Player));
|
|
|
|
- Object* base = new_Object(0,0);
|
|
|
|
- self->base = *base;
|
|
|
|
- self->sprites = new_Vector(0, sizeof(Sprite), (vc_vector_deleter*)&free_Sprite);
|
|
|
|
- base->update = &Player_update;
|
|
|
|
- base->free = &Player_free;
|
|
|
|
- base->load = &Player_load;
|
|
|
|
|
|
+Object* new_Player(){
|
|
|
|
+ Object* self = new_Object(0,0);
|
|
|
|
+ self->update = &Player_update;
|
|
|
|
+ self->load = &Player_load;
|
|
return self;
|
|
return self;
|
|
}
|
|
}
|