- [NEW] Passat a de SDL_Mixer a JailAudio - [NEW] Actualitzat a Respack2 - [NEW] Llevat el data.jrf i afegit el directori 'data' amb els arxius. Molt millor per a developar. - [CHG] Músiques passades a OGG - [NEW] Afegit lagueirtofile
70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
#include "bola.h"
|
|
#include "jgame.h"
|
|
#include <stdlib.h>
|
|
|
|
Bola::Bola( JD8_Surface gfx, Info* info, Prota* sam ) : Sprite( gfx ) {
|
|
this->info = info;
|
|
this->sam = sam;
|
|
|
|
this->entitat = (Entitat*)malloc( sizeof( Entitat ) );
|
|
// Frames
|
|
this->entitat->num_frames = 2;
|
|
this->entitat->frames = (Frame*)malloc( this->entitat->num_frames * sizeof( Frame ) );
|
|
this->entitat->frames[0].w = 15;
|
|
this->entitat->frames[0].h = 15;
|
|
this->entitat->frames[0].x = 30;
|
|
this->entitat->frames[0].y = 155;
|
|
this->entitat->frames[1].w = 15;
|
|
this->entitat->frames[1].h = 15;
|
|
this->entitat->frames[1].x = 45;
|
|
this->entitat->frames[1].y = 155;
|
|
|
|
// Animacions
|
|
this->entitat->num_animacions = 1;
|
|
this->entitat->animacions = (Animacio*)malloc( this->entitat->num_animacions * sizeof( Animacio ) );
|
|
this->entitat->animacions[0].num_frames = 2;
|
|
this->entitat->animacions[0].frames = (Uint8*)malloc( 2 );
|
|
this->entitat->animacions[0].frames[0] = 0;
|
|
this->entitat->animacions[0].frames[1] = 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 == this->entitat->animacions[this->o].num_frames ) 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;
|
|
this->info->vida--;
|
|
if( this->info->vida == 0 ) this->sam->o = 5;
|
|
}
|
|
} else {
|
|
this->contador--;
|
|
if( this->contador == 0 ) this->x = 20;
|
|
}
|
|
|
|
}
|