53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
#include "game/bola.hpp"
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include "core/jail/jgame.hpp"
|
|
|
|
Bola::Bola(JD8_Surface gfx, Prota* sam)
|
|
: Sprite(gfx) {
|
|
this->sam = sam;
|
|
|
|
entitat.frames.reserve(2);
|
|
entitat.frames.push_back({30, 155, 15, 15});
|
|
entitat.frames.push_back({45, 155, 15, 15});
|
|
|
|
entitat.animacions.resize(1);
|
|
entitat.animacions[0].frames = {0, 1};
|
|
|
|
this->cur_frame = 0;
|
|
this->o = 0;
|
|
this->cycles_per_frame = 4;
|
|
this->x = 20;
|
|
this->y = 100;
|
|
this->contador = 0;
|
|
}
|
|
|
|
void Bola::draw() {
|
|
if (this->contador == 0) Sprite::draw();
|
|
}
|
|
|
|
void Bola::update() {
|
|
if (this->contador == 0) {
|
|
// Augmentem la x
|
|
this->x++;
|
|
if (this->x == 280) this->contador = 200;
|
|
|
|
// Augmentem el frame
|
|
if (JG_GetCycleCounter() % this->cycles_per_frame == 0) {
|
|
this->cur_frame++;
|
|
if (this->cur_frame == entitat.animacions[this->o].frames.size()) this->cur_frame = 0;
|
|
}
|
|
|
|
// Comprovem si ha tocat a Sam
|
|
if (this->x > (this->sam->x - 7) && this->x < (this->sam->x + 7) && this->y > (this->sam->y - 7) && this->y < (this->sam->y + 7)) {
|
|
this->contador = 200;
|
|
info::ctx.vida--;
|
|
if (info::ctx.vida == 0) this->sam->o = 5;
|
|
}
|
|
} else {
|
|
this->contador--;
|
|
if (this->contador == 0) this->x = 20;
|
|
}
|
|
}
|