forked from jaildesigner-jailgames/jaildoctors_dilemma
canvi de pc enmig de la enfangà
This commit is contained in:
@@ -32,7 +32,8 @@ Game::Game()
|
||||
asset_(Asset::get()),
|
||||
input_(Input::get()),
|
||||
resource_(Resource::get()),
|
||||
debug_(Debug::get())
|
||||
debug_(Debug::get()),
|
||||
cheevos_(Cheevos::get())
|
||||
{
|
||||
// Inicia algunas variables
|
||||
board_.iniClock = SDL_GetTicks();
|
||||
@@ -50,19 +51,18 @@ Game::Game()
|
||||
#endif
|
||||
|
||||
// Crea los objetos
|
||||
cheevos_ = Cheevos::get();
|
||||
scoreboard_ = new Scoreboard(&board_);
|
||||
item_tracker_ = new ItemTracker();
|
||||
room_tracker_ = new RoomTracker();
|
||||
room_ = new Room(resource_->getRoom(current_room_), item_tracker_, &board_.items, false);
|
||||
scoreboard_ = std::make_shared<Scoreboard>(&board_);
|
||||
item_tracker_ = std::make_shared<ItemTracker>();
|
||||
room_tracker_ = std::make_shared<RoomTracker>();
|
||||
room_ = std::make_shared<Room>(resource_->getRoom(current_room_), item_tracker_, &board_.items, false);
|
||||
const std::string playerPNG = options.cheats.alternate_skin == Cheat::CheatState::ENABLED ? "player2.png" : "player.png";
|
||||
const std::string playerANI = options.cheats.alternate_skin == Cheat::CheatState::ENABLED ? "player2.ani" : "player.ani";
|
||||
const player_t player = {spawn_point_, playerPNG, playerANI, room_};
|
||||
player_ = new Player(player);
|
||||
text_ = new Text(resource_->getOffset("smb2.txt"), resource_->getTexture("smb2.png"), renderer_);
|
||||
music_ = JA_LoadMusic(asset_->get("game.ogg").c_str());
|
||||
player_ = std::make_shared<Player>(player);
|
||||
text_ = resource_->getText("smb2.txt");
|
||||
music_ = resource_->getMusic("game.ogg");
|
||||
death_sound_ = JA_LoadSound(asset_->get("death.wav").c_str());
|
||||
stats_ = new Stats(asset_->get("stats.csv"), asset_->get("stats_buffer.csv"));
|
||||
stats_ = std::make_shared<Stats>(asset_->get("stats.csv"), asset_->get("stats_buffer.csv"));
|
||||
|
||||
// Crea la textura para poner el nombre de la habitación
|
||||
room_name_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, text_->getCharacterSize() * 2);
|
||||
@@ -111,18 +111,7 @@ Game::Game()
|
||||
Game::~Game()
|
||||
{
|
||||
// Libera la memoria de los objetos
|
||||
delete scoreboard_;
|
||||
delete item_tracker_;
|
||||
delete room_tracker_;
|
||||
delete room_;
|
||||
delete player_;
|
||||
delete text_;
|
||||
delete stats_;
|
||||
|
||||
SDL_DestroyTexture(room_name_texture_);
|
||||
|
||||
JA_DeleteMusic(music_);
|
||||
JA_DeleteSound(death_sound_);
|
||||
}
|
||||
|
||||
// Comprueba los eventos de la cola
|
||||
@@ -146,7 +135,7 @@ void Game::checkEvents()
|
||||
break;
|
||||
|
||||
case SDL_SCANCODE_R:
|
||||
resource_->reLoad();
|
||||
resource_->reload();
|
||||
break;
|
||||
|
||||
case SDL_SCANCODE_W:
|
||||
@@ -292,9 +281,9 @@ void Game::render()
|
||||
// Pasa la información de debug
|
||||
void Game::updateDebugInfo()
|
||||
{
|
||||
debug_->add("X = " + std::to_string(static_cast<int>(player_->x)) + ", Y = " + std::to_string(static_cast<int>(player_->y)));
|
||||
debug_->add("VX = " + std::to_string(player_->vx).substr(0, 4) + ", VY = " + std::to_string(player_->vy).substr(0, 4));
|
||||
debug_->add("STATE = " + std::to_string(player_->state));
|
||||
debug_->add("X = " + std::to_string(static_cast<int>(player_->x_)) + ", Y = " + std::to_string(static_cast<int>(player_->y_)));
|
||||
debug_->add("VX = " + std::to_string(player_->vx_).substr(0, 4) + ", VY = " + std::to_string(player_->vy_).substr(0, 4));
|
||||
debug_->add("STATE = " + std::to_string(player_->state_));
|
||||
}
|
||||
|
||||
// Pone la información de debug en pantalla
|
||||
@@ -346,12 +335,8 @@ bool Game::changeRoom(std::string file)
|
||||
// Verifica que exista el fichero que se va a cargar
|
||||
if (asset_->get(file) != "")
|
||||
{
|
||||
// Elimina la habitación actual
|
||||
delete room_;
|
||||
room_ = nullptr;
|
||||
|
||||
// Crea un objeto habitación nuevo a partir del fichero
|
||||
room_ = new Room(resource_->getRoom(file), item_tracker_, &board_.items, board_.jail_is_open);
|
||||
room_ = std::make_shared<Room>(resource_->getRoom(file), item_tracker_, &board_.items, board_.jail_is_open);
|
||||
|
||||
// Pone el nombre de la habitación en la textura
|
||||
fillRoomNameTexture();
|
||||
@@ -448,10 +433,6 @@ void Game::killPlayer()
|
||||
// Invalida el logro de pasarse el juego sin morir
|
||||
cheevos_->invalidate(11);
|
||||
|
||||
// Destruye la habitacion y el jugador
|
||||
delete room_;
|
||||
delete this->player_;
|
||||
|
||||
// Sonido
|
||||
JA_PlaySound(death_sound_);
|
||||
|
||||
@@ -459,11 +440,11 @@ void Game::killPlayer()
|
||||
setBlackScreen();
|
||||
|
||||
// Crea la nueva habitación y el nuevo jugador
|
||||
room_ = new Room(resource_->getRoom(current_room_), item_tracker_, &board_.items, board_.jail_is_open);
|
||||
room_ = std::make_shared<Room>(resource_->getRoom(current_room_), item_tracker_, &board_.items, board_.jail_is_open);
|
||||
const std::string playerPNG = options.cheats.alternate_skin == Cheat::CheatState::ENABLED ? "player2.png" : "player.png";
|
||||
const std::string playerANI = options.cheats.alternate_skin == Cheat::CheatState::ENABLED ? "player2.ani" : "player.ani";
|
||||
const player_t player = {spawn_point_, playerPNG, playerANI, room_};
|
||||
player_ = new Player(player);
|
||||
player_ = std::make_shared<Player>(player);
|
||||
|
||||
// Pone los objetos en pausa mientras esta la habitación en negro
|
||||
room_->pause();
|
||||
@@ -558,10 +539,9 @@ bool Game::checkEndGame()
|
||||
int Game::getTotalItems()
|
||||
{
|
||||
int items = 0;
|
||||
std::vector<res_room_t> *rooms = new std::vector<res_room_t>;
|
||||
rooms = resource_->getAllRooms();
|
||||
auto rooms = resource_->getRooms();
|
||||
|
||||
for (auto room : *rooms)
|
||||
for (auto room : rooms)
|
||||
{
|
||||
items += room.room->items.size();
|
||||
}
|
||||
@@ -632,10 +612,9 @@ void Game::checkRestoringJail()
|
||||
// Inicializa el diccionario de las estadísticas
|
||||
void Game::initStats()
|
||||
{
|
||||
std::vector<res_room_t> *rooms = new std::vector<res_room_t>;
|
||||
rooms = resource_->getAllRooms();
|
||||
auto rooms = resource_->getRooms();
|
||||
|
||||
for (auto room : *rooms)
|
||||
for (auto room : rooms)
|
||||
{
|
||||
stats_->addDictionary(room.room->number, room.room->name);
|
||||
}
|
||||
@@ -655,7 +634,7 @@ void Game::fillRoomNameTexture()
|
||||
SDL_RenderClear(renderer_);
|
||||
|
||||
// Escribe el texto en la textura
|
||||
text_->writeDX(TXT_CENTER | TXT_COLOR, GAMECANVAS_CENTER_X, text_->getCharacterSize() / 2, room_->getName(), 1, room_->getBGColor());
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR, GAMECANVAS_CENTER_X, text_->getCharacterSize() / 2, room_->getName(), 1, room_->getBGColor());
|
||||
|
||||
// Deja el renderizador por defecto
|
||||
SDL_SetRenderTarget(renderer_, nullptr);
|
||||
|
||||
Reference in New Issue
Block a user