diff --git a/data/config/param.txt b/data/config/param.txt index 120d7ac..e20ffb2 100644 --- a/data/config/param.txt +++ b/data/config/param.txt @@ -1,9 +1,9 @@ -# GAME +## GAME gameWidth 320 gameHeight 240 itemSize 20 -# FADE +## FADE numSquaresWidth 160 numSquaresHeight 120 fadeRandomSquaresDelay 1 @@ -11,20 +11,33 @@ fadeRandomSquaresMult 500 fadePostDuration 80 venetianSize 16 -# SCOREBOARD +## SCOREBOARD scoreboard.x 0 scoreboard.y 200 scoreboard.w 320 scoreboard.h 40 -# TITLE +## TITLE pressStart 170 titleCounter 800 arcadeEdition 123 titleCC 80 -# BACKGROUND +## BACKGROUND backgroundAttenuateColor.r 255 backgroundAttenuateColor.g 255 backgroundAttenuateColor.b 255 -backgroundAttenuateColor.a 0 \ No newline at end of file +backgroundAttenuateColor.a 0 + +## BALLOONS +balloon1.vel 2.6f +balloon1.grav 0.09f + +balloon2.vel 3.5f +balloon2.grav 0.10f + +balloon3.vel 4.50f +balloon3.grav 0.10f + +balloon4.vel 4.95f +balloon4.grav 0.10f \ No newline at end of file diff --git a/source/balloon.cpp b/source/balloon.cpp index b626d27..d5cc02e 100644 --- a/source/balloon.cpp +++ b/source/balloon.cpp @@ -2,8 +2,9 @@ #include "balloon.h" // Constructor -Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, Texture *texture, std::vector *animation, SDL_Renderer *renderer) +Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, Texture *texture, std::vector *animation, param_t *param) { + this->param = param; sprite = new AnimatedSprite(texture, "", animation); disable(); @@ -22,8 +23,8 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c this->velX = velx; velY = 0; maxVelY = 3.0f; - gravity = 0.09f; - defaultVelY = 2.6f; + gravity = param->balloon1.grav; + defaultVelY = param->balloon1.vel; // Puntos que da el globo al ser destruido score = BALLOON_SCORE_1; @@ -44,8 +45,8 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c this->velX = velx; velY = 0; maxVelY = 3.0f; - gravity = 0.10f; - defaultVelY = 3.5f; + gravity = param->balloon2.grav; + defaultVelY = param->balloon2.vel; // Puntos que da el globo al ser destruido score = BALLOON_SCORE_2; @@ -66,8 +67,8 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c this->velX = velx; velY = 0; maxVelY = 3.0f; - gravity = 0.10f; - defaultVelY = 4.50f; + gravity = param->balloon3.grav; + defaultVelY = param->balloon3.vel; // Puntos que da el globo al ser destruido score = BALLOON_SCORE_3; @@ -88,8 +89,8 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c this->velX = velx; velY = 0; maxVelY = 3.0f; - gravity = 0.10f; - defaultVelY = 4.95f; + gravity = param->balloon4.grav; + defaultVelY = param->balloon4.vel; // Puntos que da el globo al ser destruido score = BALLOON_SCORE_4; diff --git a/source/balloon.h b/source/balloon.h index 2e84888..54af3a9 100644 --- a/source/balloon.h +++ b/source/balloon.h @@ -85,6 +85,7 @@ private: // Objetos y punteros AnimatedSprite *sprite; // Sprite del objeto globo + param_t *param; // Puntero con todos los parametros del programa // Variables float posX; // Posición en el eje X @@ -139,7 +140,7 @@ private: public: // Constructor - Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, Texture *texture, std::vector *animation, SDL_Renderer *renderer); + Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, Texture *texture, std::vector *animation, param_t *param); // Destructor ~Balloon(); diff --git a/source/common/utils.h b/source/common/utils.h index d24c97d..2860d45 100644 --- a/source/common/utils.h +++ b/source/common/utils.h @@ -171,6 +171,13 @@ struct options_t std::vector controller; // Opciones con las asignaciones del mando para cada jugador }; +// Estructura para guardar los parametros de un globo +struct balloon_t +{ + float grav; // Aceleración en el eje Y. Modifica la velocidad + float vel; // Velocidad inicial que tienen al rebotar contra el suelo +}; + // Estructura para almacenar todos los parámetros del juego struct param_t { @@ -199,6 +206,9 @@ struct param_t // BACKGROUND color_t backgroundAttenuateColor; int backgroundAttenuateAlpha; + + // BALLOONS + balloon_t balloon1, balloon2, balloon3, balloon4; // Parametros de velocidad y gravedad de cada tipo de globo }; // Estructura para almacenar ficheros de sonido y su nombre diff --git a/source/game.cpp b/source/game.cpp index 3e0ab1f..eb32196 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -1071,7 +1071,7 @@ void Game::renderBalloons() int Game::createBalloon(float x, int y, int kind, float velx, float speed, int creationtimer) { const int index = (kind - 1) % 4; - Balloon *b = new Balloon(x, y, kind, velx, speed, creationtimer, balloonTextures[index], balloonAnimations[index], renderer); + Balloon *b = new Balloon(x, y, kind, velx, speed, creationtimer, balloonTextures[index], balloonAnimations[index], param); balloons.push_back(b); return (int)(balloons.size() - 1); } @@ -1089,7 +1089,7 @@ void Game::createPowerBall() const int x[3] = {left, center, right}; const float vx[3] = {BALLOON_VELX_POSITIVE, BALLOON_VELX_POSITIVE, BALLOON_VELX_NEGATIVE}; - Balloon *b = new Balloon(x[luck], posY, POWER_BALL, vx[luck], enemySpeed, 100, balloonTextures[4], balloonAnimations[4], renderer); + Balloon *b = new Balloon(x[luck], posY, POWER_BALL, vx[luck], enemySpeed, 100, balloonTextures[4], balloonAnimations[4], param); balloons.push_back(b); powerBallEnabled = true; diff --git a/source/load_param.cpp b/source/load_param.cpp index 6087e1f..5fdeef6 100644 --- a/source/load_param.cpp +++ b/source/load_param.cpp @@ -33,6 +33,16 @@ void initParam(param_t *param) // BACKGROUND param->backgroundAttenuateColor = {255, 255, 255}; param->backgroundAttenuateAlpha = 32; + + // BALLOONS + param->balloon1.vel = 2.60f; + param->balloon1.grav = 0.09f; + param->balloon2.vel = 3.50f; + param->balloon2.grav = 0.10f; + param->balloon3.vel = 4.50f; + param->balloon3.grav = 0.10f; + param->balloon4.vel = 4.95f; + param->balloon4.grav = 0.10f; } // Establece valores para los parametros a partir de un fichero de texto @@ -238,6 +248,47 @@ bool setOptions(param_t *param, std::string var, std::string value) param->backgroundAttenuateAlpha = std::stoi(value); } + // BALLOON + else if (var == "balloon1.vel") + { + param->balloon1.vel = std::stof(value); + } + + else if (var == "balloon1.grav") + { + param->balloon1.grav = std::stof(value); + } + + else if (var == "balloon2.vel") + { + param->balloon2.vel = std::stof(value); + } + + else if (var == "balloon2.grav") + { + param->balloon2.grav = std::stof(value); + } + + else if (var == "balloon3.vel") + { + param->balloon3.vel = std::stof(value); + } + + else if (var == "balloon3.grav") + { + param->balloon3.grav = std::stof(value); + } + + else if (var == "balloon4.vel") + { + param->balloon4.vel = std::stof(value); + } + + else if (var == "balloon4.grav") + { + param->balloon4.grav = std::stof(value); + } + // RESTO else {