Commit 907f083c by Jaime de la Chica Bergillos Committed by José Pardo Madera

Movimiento entre pantallas

parent 60acdada
#include "ColeccionPantallas.h"
#include "PantallaPrincipal.h"
#include "PantallaPrincipal2.h"
PantallaPrincipal pant;
PantallaPrincipal2 pant2;
vector<shared_ptr<Pantalla>> colPantallas={make_shared<PantallaPrincipal>(pant),make_shared<PantallaPrincipal2>(pant2)};
#pragma once
#include <vector>
#include <memory>
#include "GestorPantallas.h"
using namespace std;
extern vector<shared_ptr<Pantalla>> colPantallas;
\ No newline at end of file
No preview for this file type
#include "PantallaPrincipal.h"
#include "PantallaPrincipal2.h"
#include "ColeccionPantallas.h"
PantallaPrincipal::PantallaPrincipal() :
fuente1("assets/OpenSans-Italic.ttf", 100),
Fondo1("assets/fondoHabitacion.jpg")
Fondo1("assets/fondoHabitacion.jpg"),
colisionCambioPantalla(1500,-1500,2000,1300)
{
Sprite sprPlanta("assets/planta.png");
Sprite sprInterfaz("assets/InterfazPrincipal.png");
Sprite sprOjoAbierto("assets/ojoAbierto.png");
Sprite sprOjoCerrado("assets/ojoCerrado.png");
Hitbox hitPlanta(0,-10,1200,-1000000000);
Hitbox hitInterfaz(1920,0,900,700);
Hitbox hitOjo(1630,1248,997,839);
Objeto Ojo(sprOjoCerrado,sprOjoAbierto,sprOjoAbierto,hitOjo,1300,890,400,170,normal);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta,1200,400,300,400, normal);
......@@ -64,6 +69,10 @@ void PantallaPrincipal::manejarEntrada(Handle &handle) {
Agapito.move(Frente);
break;
}
if(Agapito.comprobarColisionPasiva(colisionCambioPantalla)){
PantallaPrincipal2 pant;
handle.reemplazamePor(colPantallas[1]);
}
for(int i=0;i<colisionesActivas.size();i++){
Agapito.comprobarColision(colisionesActivas[i]);
}
......
......@@ -13,6 +13,7 @@ class PantallaPrincipal : public Pantalla {
vector<Hitbox> colisionesActivas;
vector<Hitbox> colisionesPasivas;
vector<Hitbox> colisionesInterfaz;
Hitbox colisionCambioPantalla;
Fuente fuente1;
Sprite Fondo1;
Personaje Agapito;
......
#include "PantallaPrincipal2.h"
#include "PantallaPrincipal.h"
#include "ColeccionPantallas.h"
PantallaPrincipal2::PantallaPrincipal2() :
fuente1("assets/OpenSans-Italic.ttf", 100),
Fondo1("assets/fondoPuerta.jpg"),
colisionCambioPantalla(1500,-1500,2000,1300)
{
Sprite sprInterfaz("assets/InterfazPrincipal.png");
Sprite sprOjoAbierto("assets/ojoAbierto.png");
Sprite sprOjoCerrado("assets/ojoCerrado.png");
Hitbox hitInterfaz(1920,0,900,700);
Hitbox hitOjo(1630,1248,997,839);
Objeto Ojo(sprOjoCerrado,sprOjoAbierto,sprOjoAbierto,hitOjo,1300,890,400,170,normal);
Objeto Interfaz(sprInterfaz,sprInterfaz,sprInterfaz,hitInterfaz,0,870,1920,216,normal);
objetos.push_back(Interfaz);
indice_ojo = objetos.size();
objetos.push_back(Ojo);
colisionesInterfaz.push_back(hitOjo);
}
void PantallaPrincipal2::manejarEntrada(Handle &handle) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
switch (event.key.keysym.sym) {
case SDLK_LEFT:
Agapito.move(Izquierda);
break;
case SDLK_RIGHT:
Agapito.move(Derecha);
break;
case SDLK_UP:
Agapito.move(Fondo);
break;
case SDLK_DOWN:
Agapito.move(Frente);
break;
}
if(Agapito.comprobarColisionPasiva(colisionCambioPantalla)){
handle.reemplazamePor(colPantallas[0]);
}
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[indice_ojo].setEstado(overworld);
}else objetos[indice_ojo].setEstado(normal);
}
break;
case SDL_MOUSEBUTTONDOWN:
{
int xRaton=0;
int zRaton=0;
SDL_GetMouseState(&xRaton, &zRaton);
xRaton*=(1920.0/handle.getTamX());
zRaton*=(1080.0/handle.getTamY());
cout<<"Raton x "<<xRaton<<" Raton z "<<zRaton<<endl;
if(colisionesInterfaz[0].colisiona(xRaton, zRaton) && objetos[indice_ojo].getEstado()==overworld){
Agapito.inventario[Agapito.numObjetos]=objetos[2];
objetos.pop_back();
}
}
break;
case SDL_QUIT:
handle.removeAll();
}
}
}
void PantallaPrincipal2::renderizar(SDL_Renderer *renderer, int tamx, int tamy) {
Texto texto(fuente1, "AGAPITO 3D", {255, 255, 255});
Fondo1.renderizar(renderer, 0, 0,1920,1080, tamx, tamy);
Agapito.renderizar(renderer, tamx, tamy);
for(int i=0;i<objetos.size();i++){
objetos[i].renderizar(renderer, tamx, tamy);
}
texto.renderizar(renderer, 50, 50, tamx, tamy);
}
#pragma once
#include "GestorPantallas.h"
#include <vector>
#include "Objeto.h"
#include "Sprite.h"
#include "Texto.h"
#include "Fuente.h"
#include "Personaje.h"
class PantallaPrincipal2 : public Pantalla {
vector<Objeto> objetos;
vector<Hitbox> colisionesActivas;
vector<Hitbox> colisionesPasivas;
vector<Hitbox> colisionesInterfaz;
Hitbox colisionCambioPantalla;
Fuente fuente1;
Sprite Fondo1;
Personaje Agapito;
int indice_ojo = 0;
public:
PantallaPrincipal2();
void manejarEntrada(Handle &) override;
void renderizar(SDL_Renderer *, int tamx, int tamy) override;
bool transparente() override {
return false;
};
};
\ No newline at end of file
#pragma once
#include <array>
#include <optional>
#include <SDL2/SDL.h>
......
CC = g++
CodeFiles = main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp Texto.cpp GestorPantallas.cpp PantallaPrincipal.cpp
CodeFiles = main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp Texto.cpp GestorPantallas.cpp PantallaPrincipal.cpp PantallaPrincipal2.cpp ColeccionPantallas.cpp
bin = Executable
objdir = obj
......
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