Skip to content

Commit

Permalink
Hago que las armas guarden su cantidad de proyectiles
Browse files Browse the repository at this point in the history
Signed-off-by: Tomas Fabrizio Orsi <[email protected]>
  • Loading branch information
lima-limon-inc committed Dec 5, 2023
1 parent dffd77c commit 53b8ce5
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 26 deletions.
16 changes: 13 additions & 3 deletions build/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ Tiempo espera viento: 25


# # Comun (lo necesitan cliente y server) # #
Viento maximo:
X: 10
Y: -10
Viento rango:
Max: 10
Min: -10
Tiempo turno: 60
Tiempo changui: 3

Expand Down Expand Up @@ -62,6 +62,7 @@ Bazooka:
Epicentro: 50
Radio: 2
CantidadFragmentos: 0
CantidadProyectiles: 1

Mortero:
ConMira: true
Expand All @@ -75,6 +76,7 @@ Mortero:
Epicentro: 50
Radio: 2
CantidadFragmentos: 6
CantidadProyectiles: 1
DanioFragmento:
Epicentro: 10
Radio: 2
Expand All @@ -91,6 +93,7 @@ Granada Verde:
Epicentro: 30
Radio: 2
CantidadFragmentos: 0
CantidadProyectiles: 1

Granada Roja:
ConMira: true
Expand All @@ -104,6 +107,7 @@ Granada Roja:
Epicentro: 30
Radio: 2
CantidadFragmentos: 6
CantidadProyectiles: 1
DanioFragmento:
Epicentro: 10
Radio: 2
Expand All @@ -120,6 +124,7 @@ Banana:
Epicentro: 70
Radio: 4
CantidadFragmentos: 0
CantidadProyectiles: 1

Granada Santa:
ConMira: true
Expand All @@ -133,6 +138,7 @@ Granada Santa:
Epicentro: 110
Radio: 8
CantidadFragmentos: 0
CantidadProyectiles: 1

Dinamita:
ConMira: false
Expand All @@ -146,6 +152,7 @@ Dinamita:
Epicentro: 50
Radio: 4
CantidadFragmentos: 0
CantidadProyectiles: 1

Bate de Baseball:
ConMira: true
Expand All @@ -159,6 +166,7 @@ Bate de Baseball:
Epicentro: 10
Radio: 0
CantidadFragmentos: 0
CantidadProyectiles: 1

# Agregar cant de misiles
Ataque Aereo:
Expand All @@ -173,6 +181,7 @@ Ataque Aereo:
Epicentro: 40
Radio: 2
CantidadFragmentos: 0
CantidadProyectiles: 30

Teletransportacion:
ConMira: false
Expand All @@ -186,6 +195,7 @@ Teletransportacion:
Epicentro: 0
Radio: 0
CantidadFragmentos: 0
CantidadProyectiles: 1


# # Mapas # #
Expand Down
10 changes: 10 additions & 0 deletions src/common/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ Bazooka:
Epicentro: 50
Radio: 2
CantidadFragmentos: 0
CantidadProyectiles: 1

Mortero:
ConMira: true
Expand All @@ -75,6 +76,7 @@ Mortero:
Epicentro: 50
Radio: 2
CantidadFragmentos: 6
CantidadProyectiles: 1
DanioFragmento:
Epicentro: 10
Radio: 2
Expand All @@ -91,6 +93,7 @@ Granada Verde:
Epicentro: 30
Radio: 2
CantidadFragmentos: 0
CantidadProyectiles: 1

Granada Roja:
ConMira: true
Expand All @@ -104,6 +107,7 @@ Granada Roja:
Epicentro: 30
Radio: 2
CantidadFragmentos: 6
CantidadProyectiles: 1
DanioFragmento:
Epicentro: 10
Radio: 2
Expand All @@ -120,6 +124,7 @@ Banana:
Epicentro: 70
Radio: 4
CantidadFragmentos: 0
CantidadProyectiles: 1

Granada Santa:
ConMira: true
Expand All @@ -133,6 +138,7 @@ Granada Santa:
Epicentro: 110
Radio: 8
CantidadFragmentos: 0
CantidadProyectiles: 1

Dinamita:
ConMira: false
Expand All @@ -146,6 +152,7 @@ Dinamita:
Epicentro: 50
Radio: 4
CantidadFragmentos: 0
CantidadProyectiles: 1

Bate de Baseball:
ConMira: true
Expand All @@ -159,6 +166,7 @@ Bate de Baseball:
Epicentro: 10
Radio: 0
CantidadFragmentos: 0
CantidadProyectiles: 1

# Agregar cant de misiles
Ataque Aereo:
Expand All @@ -173,6 +181,7 @@ Ataque Aereo:
Epicentro: 40
Radio: 2
CantidadFragmentos: 0
CantidadProyectiles: 6

Teletransportacion:
ConMira: false
Expand All @@ -186,6 +195,7 @@ Teletransportacion:
Epicentro: 0
Radio: 0
CantidadFragmentos: 0
CantidadProyectiles: 1


# # Mapas # #
Expand Down
38 changes: 22 additions & 16 deletions src/server/arma.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include "yaml-cpp/yaml.h"


std::pair<int,int> leerArchivo(YAML::Node& config, const std::string& arma, CaracteristicasArma& caracteristicas, Danio& danio, Danio& danioFragmento) {
std::tuple<int,int,int> leerArchivo(YAML::Node& config, const std::string& arma, CaracteristicasArma& caracteristicas, Danio& danio, Danio& danioFragmento) {
caracteristicas.tieneMira = config[arma]["ConMira"].as<bool>();
caracteristicas.esCuerpoACuerpo = config[arma]["EsCuerpoACuerpo"].as<bool>();
caracteristicas.tienePotenciaVariable = config[arma]["TienePotenciaVariable"].as<bool>();
Expand All @@ -15,6 +15,7 @@ std::pair<int,int> leerArchivo(YAML::Node& config, const std::string& arma, Cara

int municiones = config[arma]["Municiones"].as<int>();
int fragmentos = config[arma]["CantidadFragmentos"].as<int>();
int proyectiles = config[arma]["CantidadProyectiles"].as<int>();

danio.epicentro = config[arma]["Danio"]["Epicentro"].as<int>();
danio.radio = config[arma]["Danio"]["Radio"].as<int>();
Expand All @@ -24,8 +25,8 @@ std::pair<int,int> leerArchivo(YAML::Node& config, const std::string& arma, Cara
danioFragmento.radio = config[arma]["DanioFragmento"]["Radio"].as<int>();
}

std::pair<int,int> municionesYFragmentos(municiones, fragmentos);
return municionesYFragmentos;
std::tuple<int,int,int> municionesFragmentosProyectiles(municiones, fragmentos, proyectiles);
return municionesFragmentosProyectiles;
}


Expand All @@ -35,46 +36,46 @@ Arma::Arma(ArmaProtocolo idArma) {
CaracteristicasArma caracteristicas;
Danio danio;
Danio danioFragmento;
std::pair<int,int> municionesYFragmentos(-1,0);
std::tuple<int,int,int> municionesFragmentosProyectiles(-1,0,1);
switch (idArma) {
case BAZOOKA_P:{
municionesYFragmentos = leerArchivo(config, "Bazooka", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Bazooka", caracteristicas, danio, danioFragmento);
break;
}
case MORTERO_P:{
municionesYFragmentos = leerArchivo(config, "Mortero", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Mortero", caracteristicas, danio, danioFragmento);
break;
}
case GRANADA_VERDE_P:{
municionesYFragmentos = leerArchivo(config, "Granada Verde", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Granada Verde", caracteristicas, danio, danioFragmento);
break;
}
case GRANADA_ROJA_P:{
municionesYFragmentos = leerArchivo(config, "Granada Roja", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Granada Roja", caracteristicas, danio, danioFragmento);
break;
}
case GRANADA_SANTA_P:{
municionesYFragmentos = leerArchivo(config, "Granada Santa", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Granada Santa", caracteristicas, danio, danioFragmento);
break;
}
case BANANA_P:{
municionesYFragmentos = leerArchivo(config, "Banana", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Banana", caracteristicas, danio, danioFragmento);
break;
}
case DINAMITA_P:{
municionesYFragmentos = leerArchivo(config, "Dinamita", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Dinamita", caracteristicas, danio, danioFragmento);
break;
}
case BATE_P:{
municionesYFragmentos = leerArchivo(config, "Bate de Baseball", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Bate de Baseball", caracteristicas, danio, danioFragmento);
break;
}
case ATAQUE_AEREO_P:{
municionesYFragmentos = leerArchivo(config, "Ataque Aereo", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Ataque Aereo", caracteristicas, danio, danioFragmento);
break;
}
case TELETRANSPORTACION_P:{
municionesYFragmentos = leerArchivo(config, "Teletransportacion", caracteristicas, danio, danioFragmento);
municionesFragmentosProyectiles = leerArchivo(config, "Teletransportacion", caracteristicas, danio, danioFragmento);
break;
}
case NADA_P:{
Expand All @@ -94,8 +95,9 @@ Arma::Arma(ArmaProtocolo idArma) {
fin.close();
this->idArma = idArma;
this->caracteristicas = caracteristicas;
this->municiones = municionesYFragmentos.first;
this->fragmentos = municionesYFragmentos.second;
this->municiones = std::get<0>(municionesFragmentosProyectiles);
this->fragmentos = std::get<1>(municionesFragmentosProyectiles);
this->proyectiles = std::get<2>(municionesFragmentosProyectiles);
this->danio = danio;
this->danioFragmento = danioFragmento;
this->potencia = caracteristicas.tienePotenciaVariable ? 0 : 100;
Expand Down Expand Up @@ -194,3 +196,7 @@ void Arma::usar() {
this->municiones -= 1;

}

int Arma::getCantidadProyectiles() {
return this->proyectiles;
}
3 changes: 3 additions & 0 deletions src/server/arma.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class Arma {
CaracteristicasArma caracteristicas;
int municiones;
int fragmentos;
int proyectiles;

Danio danio;
Danio danioFragmento;
Expand Down Expand Up @@ -57,6 +58,8 @@ class Arma {
int getCuentaRegresiva();
void setCuentaRegresiva(int cuentaRegresiva);

int getCantidadProyectiles();

// Esto no es atacar, es un actualizar valores
void usar();

Expand Down
2 changes: 1 addition & 1 deletion src/server/gusano.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ Ataque Gusano::ejecutar(Accion accion) {
if (armaEquipada == ATAQUE_AEREO_P) {
std::pair<coordX, coordY> ataquePos;
ataquePos = this->armaSeleccionada->getCoordenadasTeletransporte();
ataquePos.enY = this->mapa.dimensiones.enY - 20;
ataquePos.enY = this->mapa.dimensiones.enY;
posicion = deCoordAb2Vec(ataquePos);
ataqueARealizar.impulsoInicial = b2Vec2(config.gravedad.enX, config.gravedad.enY);
}
Expand Down
11 changes: 5 additions & 6 deletions src/server/partida.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -517,12 +517,12 @@ void Partida::crearProyectiles(Gusano *gusano, Ataque ataque) {
if (arma == NADA_P || arma == TELETRANSPORTACION_P) {
return;
}

Arma armaFinal(arma);

int cantProyectiles = 0;
if (arma == ATAQUE_AEREO_P)
cantProyectiles = 5;
else
cantProyectiles = 1;

cantProyectiles = armaFinal.getCantidadProyectiles();

for (int i = 0 ; i < cantProyectiles; i++) {
Proyectil *nuevoProyectil = this->proyectilConstructor();
nuevoProyectil->armaOrigen = arma;
Expand Down Expand Up @@ -608,7 +608,6 @@ void Partida::crearProyectiles(Gusano *gusano, Ataque ataque) {
ataque.posicion.x += 2;
}

Arma armaFinal(arma);
if (armaFinal.getCaracteristicas().esAfectadoPorViento == true)
ataque.impulsoInicial += viento;

Expand Down

0 comments on commit 53b8ce5

Please sign in to comment.