Cambiado el constructor de la clase Player

This commit is contained in:
2022-10-31 07:38:48 +01:00
parent cb6050183b
commit aa3c7a4b80
4 changed files with 46 additions and 32 deletions

View File

@@ -31,7 +31,8 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
itemTracker = new ItemTracker(); itemTracker = new ItemTracker();
roomTracker = new RoomTracker(); roomTracker = new RoomTracker();
room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug); 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(); eventHandler = new SDL_Event();
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
music = JA_LoadMusic(asset->get("game.ogg").c_str()); 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; blackScreen = false;
blackScreenCounter = 0; blackScreenCounter = 0;
player->setInvincible(debug->getEnabled()); this->player->setInvincible(debug->getEnabled());
board.music = !debug->getEnabled(); board.music = !debug->getEnabled();
section.name = SECTION_PROG_GAME; section.name = SECTION_PROG_GAME;
@@ -373,7 +374,7 @@ void Game::checkEndGame()
// Mata al jugador // Mata al jugador
void Game::killPlayer() void Game::killPlayer()
{ {
if (player->getInvincible()) if (this->player->getInvincible())
{ {
return; return;
} }
@@ -382,7 +383,7 @@ void Game::killPlayer()
// Destruye la habitacion y el jugador // Destruye la habitacion y el jugador
delete room; delete room;
delete player; delete this->player;
// Sonido // Sonido
JA_PlaySound(deathSound); JA_PlaySound(deathSound);
@@ -391,10 +392,11 @@ void Game::killPlayer()
// Crea la nueva habitación y el nuevo jugador // Crea la nueva habitación y el nuevo jugador
room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug); 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(); room->pause();
player->pause(); this->player->pause();
} }
// Recarga todas las texturas // Recarga todas las texturas

View File

@@ -48,7 +48,7 @@ private:
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
section_t section; // Seccion actual dentro del juego section_t section; // Seccion actual dentro del juego
std::string currentRoom; // Fichero de la habitación actual 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 JA_Sound deathSound; // Sonido a reproducir cuando muere el jugador
board_t board; // Estructura con los datos del marcador board_t board; // Estructura con los datos del marcador
bool paused; // Indica si el juego se encuentra en pausa bool paused; // Indica si el juego se encuentra en pausa

View File

@@ -3,20 +3,19 @@
#include <sstream> #include <sstream>
// Constructor // 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 // Obten punteros a objetos
this->resource = resource; this->resource = player.resource;
this->asset = asset; this->asset = player.asset;
this->renderer = renderer; this->renderer = player.renderer;
this->input = input; this->input = player.input;
this->room = room; this->room = player.room;
this->debug = debug; this->debug = player.debug;
this->options = options; this->options = player.options;
// Crea objetos // Crea objetos
//texture = resource->getTexture(png); sprite = new AnimatedSprite(renderer, resource->getAnimation(player.animation));
sprite = new AnimatedSprite(renderer, resource->getAnimation(animation));
// Inicializa variables // Inicializa variables
color = stringToColor(options->palette, "white"); 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; maxFallHeight = BLOCK * 4;
paused = false; paused = false;
jumpIni = ini.jumpIni; jumpIni = player.spawn.jumpIni;
state = ini.state; state = player.spawn.state;
prevState = state; prevState = state;
x = ini.x; x = player.spawn.x;
y = ini.y; y = player.spawn.y;
vx = ini.vx; vx = player.spawn.vx;
vy = ini.vy; vy = player.spawn.vy;
w = 8; w = 8;
h = 16; h = 16;
maxVY = 1.2f; maxVY = 1.2f;
sprite->setPosX(ini.x); sprite->setPosX(player.spawn.x);
sprite->setPosY(ini.y); sprite->setPosY(player.spawn.y);
sprite->setWidth(8); sprite->setWidth(8);
sprite->setHeight(16); sprite->setHeight(16);
sprite->setFlip(ini.flip); sprite->setFlip(player.spawn.flip);
sprite->setCurrentAnimation("walk"); sprite->setCurrentAnimation("walk");
sprite->animate(); sprite->animate();
@@ -670,9 +669,9 @@ bool Player::checkKillingTiles()
} }
// Obtiene algunos parametros del jugador // Obtiene algunos parametros del jugador
player_t Player::getSpawnParams() playerSpawn_t Player::getSpawnParams()
{ {
player_t params; playerSpawn_t params;
params.x = x; params.x = x;
params.y = y; params.y = y;

View File

@@ -22,7 +22,7 @@ enum state_e
s_falling s_falling
}; };
struct player_t struct playerSpawn_t
{ {
float x; float x;
float y; float y;
@@ -33,6 +33,20 @@ struct player_t
SDL_RendererFlip flip; 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 class Player
{ {
public: public:
@@ -42,7 +56,6 @@ public:
Resource *resource; // Objeto con los recursos Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Room *room; // Objeto encargado de gestionar cada habitación del juego Room *room; // Objeto encargado de gestionar cada habitación del juego
//Texture *texture; // Textura con los graficos del enemigo
AnimatedSprite *sprite; // Sprite del enemigo AnimatedSprite *sprite; // Sprite del enemigo
Debug *debug; // Objeto para gestionar la información de debug Debug *debug; // Objeto para gestionar la información de debug
options_t *options; // Puntero a las opciones del juego options_t *options; // Puntero a las opciones del juego
@@ -130,7 +143,7 @@ public:
public: public:
// Constructor // 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 // Destructor
~Player(); ~Player();
@@ -157,7 +170,7 @@ public:
SDL_Rect &getCollider(); SDL_Rect &getCollider();
// Obtiene algunos parametros del jugador // Obtiene algunos parametros del jugador
player_t getSpawnParams(); playerSpawn_t getSpawnParams();
// Recarga la textura // Recarga la textura
void reLoadTexture(); void reLoadTexture();