Conseguida MAXIMNA encapsulacion de objetos sieguienteo POO

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