Pantalla cama esiten

parent c006ac39
......@@ -9,13 +9,15 @@ PantallaPrincipal pant;
PantallaPrincipal2 pant2;
PantallaInicio pant3;
PantallaFecha pant4;
PantallaCama pant5;
vector<shared_ptr<Pantalla>> colPantallas={
make_shared<PantallaPrincipal>(pant),
make_shared<PantallaPrincipal2>(pant2),
make_shared<PantallaInicio>(pant3),
make_shared<PantallaFecha>(pant4)
make_shared<PantallaFecha>(pant4),
make_shared<PantallaCama>(pant5)
};
shared_ptr<PantallaPrincipal> getPantalla1(){
......@@ -27,3 +29,6 @@ shared_ptr<PantallaPrincipal2> getPantalla2(){
shared_ptr<PantallaFecha> getPantallaFecha(){
return std::dynamic_pointer_cast<PantallaFecha>(colPantallas[3]);
}
shared_ptr<PantallaCama> getPantallaCama(){
return std::dynamic_pointer_cast<PantallaCama>(colPantallas[4]);
}
......@@ -6,6 +6,7 @@
#include "PantallaPrincipal.h"
#include "PantallaPrincipal2.h"
#include "PantallaFecha.h"
#include "PantallaCama.h"
using namespace std;
......@@ -15,3 +16,4 @@ extern vector<shared_ptr<Pantalla>> colPantallas;
shared_ptr<PantallaPrincipal> getPantalla1();
shared_ptr<PantallaPrincipal2> getPantalla2();
shared_ptr<PantallaFecha> getPantallaFecha();
shared_ptr<PantallaCama> getPantallaCama();
No preview for this file type
......@@ -169,23 +169,32 @@ static void iniciarPuzlePantallaResuelto(){
Objeto destornillador(sprDestornillador,sprDestornillador,sprDestornillador,hitDestornillador,1200,700,50,70, normal,nullptr);
getPantalla1()->anadirObjeto(destornillador);
Sprite sprCaja("assets/caja.png");
Hitbox hitCaja(800,760,800,600);
auto funcionCaja=[](Objeto *Cajon, Handle &handle)->bool{
play_video("assets/NoPuedoAbrirCaja","es");
historiaPrincipal.pasarDeEstadoA(Historia::Secuencia::PuzlePantallaResuelto, Historia::Secuencia::CajaVista);
return false;
};
Objeto caja(sprCaja,sprCaja,sprCaja,hitCaja,1250,700,220,180, normal,funcionCaja);
Objeto Puerta = generarObjetoPuerta();
getPantalla1()->anadirObjeto(caja);
getPantalla2()->anadirObjeto(Puerta);
}
static void iniciarCajaVista(){
Sprite sprDestornillador("assets/destornillador.png");
Hitbox hitDestornillador(0,0,0,0);
Objeto destornillador(sprDestornillador,sprDestornillador,sprDestornillador,hitDestornillador,1200,700,50,70, normal,nullptr);
getPantalla1()->anadirObjeto(destornillador);
Sprite sprCajon("assets/cajon.png");
Hitbox hitCajon(750,600,600,-1000000000);
auto funcionCajon=[](Objeto *Cajon, Handle &handle)->bool{
play_video("assets/AbreCaja","es");
// Comprobamos si el jugador ha seguido el camino normal de usar la cartera para el puzle anterior
if (getPantallaFecha()->tieneCarne()) {
// En ese caso continuamos normalmente
historiaPrincipal.pasarDeEstadoA(Historia::Secuencia::PuzlePantallaResuelto, Historia::Secuencia::CajaAbierta);
} else {
// Si ha descubierto la fecha sin usar la cartera, continua teniendola y no la ha perdido
// El estado "CarteraRecuperada" añade la cartera al inventario
// Asi que para evitar dos carteras, lo borramos
Agapito.numObjetos = 0;
historiaPrincipal.pasarDeEstadoA(Historia::Secuencia::PuzlePantallaResuelto, Historia::Secuencia::CarteraRecuperada);
}
historiaPrincipal.pasarDeEstadoA(Historia::Secuencia::CajaVista, Historia::Secuencia::CajaAbierta);
return false;
};
Objeto cajon(sprCajon,sprCajon,sprCajon,hitCajon,760,500,220,180, normal,funcionCajon);
......@@ -203,6 +212,7 @@ static void iniciarPuzlePantallaResuelto(){
getPantalla2()->anadirObjeto(Puerta);
}
static void iniciarCajaAbierta(){
Objeto Puerta = generarObjetoPuerta();
getPantalla2()->anadirObjeto(Puerta);
......@@ -215,6 +225,17 @@ static void iniciarCajaAbierta(){
};
Objeto llave(sprLlave,sprLlave,sprLlave,hitLlave,100,150,50,50, normal,funcionLlave);
getPantalla1()->anadirObjeto(llave);
Sprite sprCama("assets/rutaInventada.png");
Hitbox hitCama(800,760, 10000000,-10000000);
auto funcionCama=[](Objeto *Cama, Handle &handle)->bool{
handle.addPantalla(getPantallaCama());
return false;
};
Objeto cama(sprCama,sprCama,sprCama,hitCama,100,150,50,50, normal,funcionCama);
getPantalla1()->anadirObjeto(llave);
getPantalla1()->anadirObjeto(cama);
}
static void iniciarCarteraRecuperada(){
......@@ -262,6 +283,10 @@ void Historia::siguienteEstado(Secuencia estado){
iniciarPuzlePantallaResuelto();
break;
case CajaVista:
iniciarCajaVista();
break;
case CajaAbierta:
iniciarCajaAbierta();
break;
......
......@@ -9,6 +9,7 @@ class Historia{
CalendarioVisto,
CalendarioQuitado,
PuzlePantallaResuelto,
CajaVista,
CajonAbierto,
CajaAbierta,
CarteraRecuperada,
......@@ -17,7 +18,7 @@ class Historia{
};
private:
Secuencia estadoActual=PreInicio;
Secuencia estadoActual=CajaAbierta;
void limpiarEstado();
void siguienteEstado(Secuencia estado);
......
#include "PantallaCama.h"
#include "ColeccionPantallas.h"
#include "Historia.h"
#include <iostream>
PantallaCama::PantallaCama() :
fuente1("assets/OpenSans-Italic.ttf", 100),
Fondo1("assets/puzleMover.jpeg"),
atras(Sprite("assets/volver.png"),Sprite("assets/volver.png"),Sprite("assets/volver.png"),Hitbox(1800,1600,300,200),1600,200,100,100,normal,nullptr),
obstaculos{
Sprite("assets/nuez.png"),
Sprite("assets/marcianito.png"),
Sprite("assets/pez.png"),
Sprite("assets/bomba.png"),
Sprite("assets/cabezaRata.png"),
Sprite("assets/senorCongelado.png"),
},
hitObs{
Hitbox(500,300,300,200)
},
cancion("assets/LonesomeJourneyByKeysOfMoonMusic.wav",true),
sonidoBoton("assets/SonidoClicar.wav",false)
{
}
void PantallaCama::manejarEntrada(Handle &handle) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
switch (event.key.keysym.sym) {
case 13:
break;
}
break;
case SDL_MOUSEBUTTONDOWN:
{
int xRaton=0;
int zRaton=0;
SDL_GetMouseState(&xRaton, &zRaton);
xRaton*=(1920.0/handle.getTamX());
zRaton*=(1080.0/handle.getTamY());
int contadorCorrectos=0;
if(atras.colisionaObjeto(xRaton,zRaton)){
sonidoBoton.play();
cancion.pausar();
handle.removeme();
}
}
break;
case SDL_QUIT:
handle.removeAll();
}
}
}
void PantallaCama::renderizar(SDL_Renderer *renderer, int tamx, int tamy) {
if(!cancion.getTocada() && sonidoBoton.acabado()){
cancion.play();
}
Fondo1.renderizar(renderer, 0, 0,1920,1080, tamx, tamy);
atras.renderizar(renderer,tamx,tamy);
}
#pragma once
#include "GestorPantallas.h"
#include <vector>
#include "Objeto.h"
#include "Sprite.h"
#include "Texto.h"
#include "Fuente.h"
#include "Sonido.h"
class PantallaCama : public Pantalla {
vector<Sprite> obstaculos;
vector<Hitbox> hitObs;
vector<Hitbox> colisionesParedes;
Objeto atras;
Fuente fuente1;
Sprite Fondo1;
Sonido cancion;
Sonido sonidoBoton;
public:
PantallaCama();
void manejarEntrada(Handle &) override;
void renderizar(SDL_Renderer *, int tamx, int tamy) override;
bool transparente() override {
return false;
};
};
CC = g++
CodeFiles = main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp Texto.cpp GestorPantallas.cpp PantallaPrincipal.cpp PantallaPrincipal2.cpp ColeccionPantallas.cpp Video.cpp PantallaInicio.cpp PantallaMundo.cpp Sonido.cpp Historia.cpp PantallaFecha.cpp
CodeFiles = main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp Texto.cpp GestorPantallas.cpp PantallaPrincipal.cpp PantallaPrincipal2.cpp ColeccionPantallas.cpp Video.cpp PantallaInicio.cpp PantallaMundo.cpp Sonido.cpp Historia.cpp PantallaFecha.cpp PantallaCama.cpp
bin = Executable
......
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