Conseguida MAXIMNA encapsulacion de objetos sieguienteo POO

parent 4ba78045
No preview for this file type
...@@ -97,8 +97,7 @@ static void iniciarInicio() { ...@@ -97,8 +97,7 @@ static void iniciarInicio() {
getPantalla1()->anadirObjeto(Calendario); getPantalla1()->anadirObjeto(Calendario);
getPantalla2()->anadirObjeto(Puerta); getPantalla2()->anadirObjeto(Puerta);
Agapito.inventario[0] = generarObjetoCartera(nullptr); Agapito.setInventario(0) = generarObjetoCartera(nullptr);
Agapito.numObjetos = 1;
} }
...@@ -131,8 +130,7 @@ static void iniciarCalendarioVisto(){ ...@@ -131,8 +130,7 @@ static void iniciarCalendarioVisto(){
getPantalla1()->anadirHook(funcionComprobarPantallaMinimizada); getPantalla1()->anadirHook(funcionComprobarPantallaMinimizada);
Agapito.inventario[0] = generarObjetoCartera(nullptr); Agapito.setInventario(0) = generarObjetoCartera(nullptr);
Agapito.numObjetos = 1;
} }
...@@ -155,12 +153,11 @@ static void iniciarCalendarioQuitado(){ ...@@ -155,12 +153,11 @@ static void iniciarCalendarioQuitado(){
auto funcionCartera=[](Objeto *Pantalla, Handle &handle) -> bool { auto funcionCartera=[](Objeto *Pantalla, Handle &handle) -> bool {
play_video("assets/AgapitoSacaCarne","es"); play_video("assets/AgapitoSacaCarne","es");
getPantallaFecha()->setTieneCarne(true); getPantallaFecha()->setTieneCarne(true);
Agapito.inventario[0] = generarObjetoCarne(); Agapito.setInventario(0) = generarObjetoCarne();
return false; return false;
}; };
Agapito.inventario[0] = generarObjetoCartera(funcionCartera); Agapito.setInventario(0) = generarObjetoCartera(funcionCartera);
Agapito.numObjetos = 1;
} }
static void iniciarPuzlePantallaResuelto(){ static void iniciarPuzlePantallaResuelto(){
...@@ -254,14 +251,12 @@ static void iniciarCarteraRecuperada(){ ...@@ -254,14 +251,12 @@ static void iniciarCarteraRecuperada(){
auto funcionCartera=[](Objeto *Pantalla, Handle &handle) -> bool { auto funcionCartera=[](Objeto *Pantalla, Handle &handle) -> bool {
play_video("assets/AgapitoSacaIman","es"); play_video("assets/AgapitoSacaIman","es");
getPantallaFecha()->setTieneCarne(true); getPantallaFecha()->setTieneCarne(true);
Agapito.numObjetos-=1; Agapito.unsetInventario(0);
Agapito.inventario[Agapito.numObjetos] = generarObjetoIman(); Agapito.setInventario(0) = generarObjetoIman();
Agapito.numObjetos+=1;
return false; return false;
}; };
Agapito.inventario[Agapito.numObjetos] = generarObjetoCartera(funcionCartera); Agapito.setInventario(0) = generarObjetoCartera(funcionCartera);
Agapito.numObjetos += 1;
} }
......
...@@ -131,8 +131,8 @@ void PantallaCama::renderizar(SDL_Renderer *renderer, int tamx, int tamy) { ...@@ -131,8 +131,8 @@ void PantallaCama::renderizar(SDL_Renderer *renderer, int tamx, int tamy) {
obstaculos[5].renderizar(renderer,870,440,170,170,tamx,tamy); obstaculos[5].renderizar(renderer,870,440,170,170,tamx,tamy);
obstaculos[6].renderizar(renderer,1090,440,170,170,tamx,tamy); obstaculos[6].renderizar(renderer,1090,440,170,170,tamx,tamy);
obstaculos[7].renderizar(renderer,1090,250,170,170,tamx,tamy); obstaculos[7].renderizar(renderer,1090,250,170,170,tamx,tamy);
mano.renderizar(renderer,tamx,tamy);
mano.renderizar_cola(renderer,tamx,tamy); mano.renderizar_cola(renderer,tamx,tamy);
mano.renderizar(renderer,tamx,tamy);
atras.renderizar(renderer,tamx,tamy); atras.renderizar(renderer,tamx,tamy);
......
...@@ -93,9 +93,9 @@ void PantallaMundo::manejarEntrada(Handle &handle) { ...@@ -93,9 +93,9 @@ void PantallaMundo::manejarEntrada(Handle &handle) {
} }
// Colisiones con los objetos del inventario // Colisiones con los objetos del inventario
for (int i = 0; i < Agapito.numObjetos; i++) { for (int i = 0; i < Agapito.numObjetos(); i++) {
if (colisionesInterfaz[i + 1].colisiona(xRaton, zRaton)) { if (colisionesInterfaz[i + 1].colisiona(xRaton, zRaton)) {
Agapito.inventario[i]->interactuar(handle); Agapito.getInventario(i)->interactuar(handle);
} }
} }
} }
......
...@@ -74,12 +74,14 @@ void Personaje::renderizar(SDL_Renderer *renderer, int tamx, int tamy) { ...@@ -74,12 +74,14 @@ void Personaje::renderizar(SDL_Renderer *renderer, int tamx, int tamy) {
void Personaje::renderizar_inventario(SDL_Renderer *renderer, int tamx, int tamy) { void Personaje::renderizar_inventario(SDL_Renderer *renderer, int tamx, int tamy) {
for (int i = 0; i < numObjetos; i++) { for (int i = 0; i < inventario.size(); i++) {
if (inventario[i]) {
inventario[i]->setX(50 + i * 325); inventario[i]->setX(50 + i * 325);
inventario[i]->setY(800); inventario[i]->setY(800);
inventario[i]->renderizar(renderer, tamx, tamy); inventario[i]->renderizar(renderer, tamx, tamy);
} }
}
} }
void Personaje::comprobarColision(Hitbox &hitbox){ void Personaje::comprobarColision(Hitbox &hitbox){
...@@ -106,3 +108,11 @@ bool Personaje::comprobarColisionPasiva(Hitbox &hitbox){ ...@@ -106,3 +108,11 @@ bool Personaje::comprobarColisionPasiva(Hitbox &hitbox){
return true; return true;
}else return false; }else return false;
} }
void Personaje::unsetInventario(unsigned pos) {
inventario[pos] = std::nullopt;
}
optional<Objeto> &Personaje::setInventario(unsigned pos) {
return inventario[pos];
}
...@@ -39,9 +39,8 @@ class Personaje { ...@@ -39,9 +39,8 @@ class Personaje {
Sonido pasoActual; Sonido pasoActual;
bool primerPaso=true; bool primerPaso=true;
public:
array<optional<Objeto>, 3> inventario; array<optional<Objeto>, 3> inventario;
int numObjetos = 0; public:
Personaje(); Personaje();
...@@ -61,4 +60,14 @@ public: ...@@ -61,4 +60,14 @@ public:
void setZ(int z) { void setZ(int z) {
this->profundidades = z; this->profundidades = z;
}; };
void unsetInventario(unsigned pos);
optional<Objeto> &setInventario(unsigned pos);
optional<Objeto> &getInventario(unsigned pos) {
return setInventario(pos);
};
unsigned numObjetos() {
return inventario.size();
}
}; };
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