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();
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

View File

@@ -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

View File

@@ -3,20 +3,19 @@
#include <sstream>
// 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;

View File

@@ -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();