Hitboxes pasivas y objeto ojo

parent 0b0d157a
No preview for this file type
......@@ -29,4 +29,6 @@ public:
sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_), x(_x), y(_y), w(_w), h(_h), estado(estado_){}
void renderizar(SDL_Renderer *renderer, int tamx, int tamy);
void setEstado(State estado_){estado=estado_;}
};
......@@ -6,19 +6,25 @@ PantallaPrincipal::PantallaPrincipal() :
{
Sprite sprPlanta("assets/planta.png");
Sprite sprInterfaz("assets/InterfazPrincipal.png");
Sprite sprOjoAbierto("assets/ojoAbierto.png");
Sprite sprOjoCerrado("assets/ojoCerrado.png");
Hitbox hitPlanta(350,80,450,120);
Hitbox hitInterfaz(1920,0,900,700);
Hitbox hitCama(10,50,300,300);
Hitbox hitFondo(1000000,-10000000,50,0);
Hitbox hitOjo(1000000,-10000000,70,0);
Objeto Ojo(sprOjoCerrado,sprOjoAbierto,sprOjoAbierto,hitOjo,1300,890,400,170,normal);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta,1200,400,300,400, normal);
Objeto Interfaz(sprInterfaz,sprInterfaz,sprInterfaz,hitInterfaz,0,870,1920,216,normal);
objetos.push_back(Planta);
objetos.push_back(Interfaz);
colisiones.push_back(hitPlanta);
colisiones.push_back(hitCama);
colisiones.push_back(hitFondo);
colisiones.push_back(hitInterfaz);
objetos.push_back(Ojo);
objetos.push_back(Planta);
colisionesActivas.push_back(hitPlanta);
colisionesActivas.push_back(hitCama);
colisionesActivas.push_back(hitFondo);
colisionesActivas.push_back(hitInterfaz);
colisionesPasivas.push_back(hitOjo);
}
......@@ -41,8 +47,19 @@ void PantallaPrincipal::manejarEntrada(Handle &handle) {
Agapito.move(Frente);
break;
}
for(int i=0;i<colisiones.size();i++){
Agapito.comprobarColision(colisiones[i]);
for(int i=0;i<colisionesActivas.size();i++){
Agapito.comprobarColision(colisionesActivas[i]);
}
{
bool checkColision=false;
int i=0;
while(!checkColision && i<colisionesPasivas.size()){
checkColision=Agapito.comprobarColisionPasiva(colisionesPasivas[i]);
i++;
}
if(checkColision){
objetos[1].setEstado(overworld);
}else objetos[1].setEstado(normal);
}
break;
case SDL_QUIT:
......
......@@ -10,7 +10,8 @@
class PantallaPrincipal : public Pantalla {
vector<Objeto> objetos;
vector<Hitbox> colisiones;
vector<Hitbox> colisionesActivas;
vector<Hitbox> colisionesPasivas;
Fuente fuente1;
Sprite Fondo1;
Personaje Agapito;
......
......@@ -73,3 +73,9 @@ void Personaje::comprobarColision(Hitbox &hitbox){
}
}
}
bool Personaje::comprobarColisionPasiva(Hitbox &hitbox){
if(hitbox.colisiona(x,profundidades)){
return true;
}else return false;
}
......@@ -40,4 +40,6 @@ int x = -100;
void renderizar(SDL_Renderer *renderer, int tamx, int tamy);
void comprobarColision (Hitbox &hitbox);
bool comprobarColisionPasiva (Hitbox &hitbox);
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment