From aa3c7a4b808fda3a7cca590972eff61ef8fca456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Mon, 31 Oct 2022 07:38:48 +0100 Subject: [PATCH] Cambiado el constructor de la clase Player --- source/game.cpp | 14 ++++++++------ source/game.h | 2 +- source/player.cpp | 41 ++++++++++++++++++++--------------------- source/player.h | 21 +++++++++++++++++---- 4 files changed, 46 insertions(+), 32 deletions(-) diff --git a/source/game.cpp b/source/game.cpp index 6a6df88..3d6d6a7 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -31,7 +31,8 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as itemTracker = new ItemTracker(); roomTracker = new RoomTracker(); room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug); - player = new Player(spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug); + const player_t player = {spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug}; + this->player = new Player(player); eventHandler = new SDL_Event(); text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); music = JA_LoadMusic(asset->get("game.ogg").c_str()); @@ -51,7 +52,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as blackScreen = false; blackScreenCounter = 0; - player->setInvincible(debug->getEnabled()); + this->player->setInvincible(debug->getEnabled()); board.music = !debug->getEnabled(); section.name = SECTION_PROG_GAME; @@ -373,7 +374,7 @@ void Game::checkEndGame() // Mata al jugador void Game::killPlayer() { - if (player->getInvincible()) + if (this->player->getInvincible()) { return; } @@ -382,7 +383,7 @@ void Game::killPlayer() // Destruye la habitacion y el jugador delete room; - delete player; + delete this->player; // Sonido JA_PlaySound(deathSound); @@ -391,10 +392,11 @@ void Game::killPlayer() // Crea la nueva habitación y el nuevo jugador room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug); - player = new Player(spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug); + const player_t player = {spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug}; + this->player = new Player(player); room->pause(); - player->pause(); + this->player->pause(); } // Recarga todas las texturas diff --git a/source/game.h b/source/game.h index 435383f..0e424ef 100644 --- a/source/game.h +++ b/source/game.h @@ -48,7 +48,7 @@ private: Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa section_t section; // Seccion actual dentro del juego std::string currentRoom; // Fichero de la habitación actual - player_t spawnPoint; // Lugar de la habitación donde aparece el jugador + playerSpawn_t spawnPoint; // Lugar de la habitación donde aparece el jugador JA_Sound deathSound; // Sonido a reproducir cuando muere el jugador board_t board; // Estructura con los datos del marcador bool paused; // Indica si el juego se encuentra en pausa diff --git a/source/player.cpp b/source/player.cpp index dd7d49d..3dd2bb3 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -3,20 +3,19 @@ #include // Constructor -Player::Player(player_t ini, std::string png, std::string animation, SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, Input *input, Room *room, Debug *debug) +Player::Player(player_t player) { // Obten punteros a objetos - this->resource = resource; - this->asset = asset; - this->renderer = renderer; - this->input = input; - this->room = room; - this->debug = debug; - this->options = options; + this->resource = player.resource; + this->asset = player.asset; + this->renderer = player.renderer; + this->input = player.input; + this->room = player.room; + this->debug = player.debug; + this->options = player.options; // Crea objetos - //texture = resource->getTexture(png); - sprite = new AnimatedSprite(renderer, resource->getAnimation(animation)); + sprite = new AnimatedSprite(renderer, resource->getAnimation(player.animation)); // Inicializa variables color = stringToColor(options->palette, "white"); @@ -28,24 +27,24 @@ Player::Player(player_t ini, std::string png, std::string animation, SDL_Rendere maxFallHeight = BLOCK * 4; paused = false; - jumpIni = ini.jumpIni; - state = ini.state; + jumpIni = player.spawn.jumpIni; + state = player.spawn.state; prevState = state; - x = ini.x; - y = ini.y; - vx = ini.vx; - vy = ini.vy; + x = player.spawn.x; + y = player.spawn.y; + vx = player.spawn.vx; + vy = player.spawn.vy; w = 8; h = 16; maxVY = 1.2f; - sprite->setPosX(ini.x); - sprite->setPosY(ini.y); + sprite->setPosX(player.spawn.x); + sprite->setPosY(player.spawn.y); sprite->setWidth(8); sprite->setHeight(16); - sprite->setFlip(ini.flip); + sprite->setFlip(player.spawn.flip); sprite->setCurrentAnimation("walk"); sprite->animate(); @@ -670,9 +669,9 @@ bool Player::checkKillingTiles() } // Obtiene algunos parametros del jugador -player_t Player::getSpawnParams() +playerSpawn_t Player::getSpawnParams() { - player_t params; + playerSpawn_t params; params.x = x; params.y = y; diff --git a/source/player.h b/source/player.h index 6027bae..74683b7 100644 --- a/source/player.h +++ b/source/player.h @@ -22,7 +22,7 @@ enum state_e s_falling }; -struct player_t +struct playerSpawn_t { float x; float y; @@ -33,6 +33,20 @@ struct player_t SDL_RendererFlip flip; }; +struct player_t +{ + playerSpawn_t spawn; + std::string png; + std::string animation; + SDL_Renderer *renderer; + Resource *resource; + Asset *asset; + options_t *options; + Input *input; + Room *room; + Debug *debug; +}; + class Player { public: @@ -42,7 +56,6 @@ public: Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con la ruta a todos los ficheros de recursos Room *room; // Objeto encargado de gestionar cada habitación del juego - //Texture *texture; // Textura con los graficos del enemigo AnimatedSprite *sprite; // Sprite del enemigo Debug *debug; // Objeto para gestionar la información de debug options_t *options; // Puntero a las opciones del juego @@ -130,7 +143,7 @@ public: public: // Constructor - Player(player_t ini, std::string png, std::string animation, SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, Input *input, Room *room, Debug *debug); + Player(player_t player); // Destructor ~Player(); @@ -157,7 +170,7 @@ public: SDL_Rect &getCollider(); // Obtiene algunos parametros del jugador - player_t getSpawnParams(); + playerSpawn_t getSpawnParams(); // Recarga la textura void reLoadTexture();