commit de moure a un Linux a gastar eines de home

This commit is contained in:
2025-02-25 19:37:08 +01:00
parent c9da5135b2
commit 32c31a8cb6
28 changed files with 145 additions and 647 deletions

View File

@@ -7,7 +7,7 @@
#include <iostream> // Para cout
#include <sstream> // Para basic_stringstream
#include "asset.h" // Para Asset
#include "const.h" // Para BLOCK, PLAY_AREA_HEIGHT, PLAY_AREA_W...
#include "defines.h" // Para BLOCK, PLAY_AREA_HEIGHT, PLAY_AREA_W...
#include "debug.h" // Para Debug
#include "item_tracker.h" // Para ItemTracker
#include "jail_audio.h" // Para JA_DeleteSound, JA_LoadSound, JA_Pla...
@@ -91,11 +91,10 @@ room_t loadRoomFile(std::string file_path, bool verbose)
// Si la linea contiene el texto [enemy] se realiza el proceso de carga de un enemigo
if (line == "[enemy]")
{
enemy_t enemy;
EnemyData enemy;
enemy.flip = false;
enemy.mirror = false;
enemy.frame = -1;
enemy.palette = Palette::ZXSPECTRUM;
do
{
@@ -268,12 +267,17 @@ bool setVars(room_t *room, std::string var, std::string value)
}
// Asigna variables a una estructura enemy_t
bool setEnemy(enemy_t *enemy, std::string var, std::string value)
bool setEnemy(EnemyData *enemy, std::string var, std::string value)
{
// Indicador de éxito en la asignación
bool success = true;
if (var == "animation")
if (var == "tileSetFile")
{
enemy->texture_path = value;
}
else if (var == "animation")
{
enemy->animation_path = value;
}
@@ -440,11 +444,9 @@ Room::Room(std::shared_ptr<room_t> room, std::shared_ptr<ItemTracker> itemTracke
counter = 0;
// Crea los enemigos
for (auto &enemy : room->enemies)
for (auto &enemy_data : room->enemies)
{
enemy.renderer = renderer;
enemy.palette = options.video.palette;
enemies.push_back(new Enemy(enemy));
enemies.emplace_back(std::make_shared<Enemy>(enemy_data));
}
// Crea los items
@@ -457,7 +459,7 @@ Room::Room(std::shared_ptr<room_t> room, std::shared_ptr<ItemTracker> itemTracke
item.renderer = renderer;
item.color1 = stringToColor(options.video.palette, itemColor1);
item.color2 = stringToColor(options.video.palette, itemColor2);
items.push_back(new Item(item));
items.emplace_back(std::make_shared<Item>(item));
}
}
@@ -504,23 +506,7 @@ Room::Room(std::shared_ptr<room_t> room, std::shared_ptr<ItemTracker> itemTracke
Room::~Room()
{
// Reclama la memoria utilizada por los objetos
JA_DeleteSound(itemSound);
SDL_DestroyTexture(mapTexture);
for (auto enemy : enemies)
{
delete enemy;
}
for (auto item : items)
{
delete item;
}
for (auto a : aTile)
{
delete a.sprite;
}
}
// Devuelve el nombre de la habitación
@@ -835,7 +821,6 @@ bool Room::itemCollision(SDL_Rect &rect)
if (checkCollision(rect, items[i]->getCollider()))
{
itemTracker->addItem(name, items[i]->getPos());
delete items[i];
items.erase(items.begin() + i);
JA_PlaySound(itemSound);
*itemsPicked = *itemsPicked + 1;
@@ -1316,7 +1301,7 @@ void Room::setAnimatedTiles()
const int yc = (tileMap[i] / tileSetWidth) * tileSize;
aTile_t at;
at.sprite = new Sprite(x, y, 8, 8, texture, renderer);
at.sprite = std::make_shared<Sprite>(texture, x, y, 8, 8);
at.sprite->setClip(xc, yc, 8, 8);
at.xcOrig = xc;
aTile.push_back(at);
@@ -1535,7 +1520,6 @@ void Room::openTheJail()
if (name == "THE JAIL")
{
// Elimina el último enemigo (Bry debe ser el ultimo enemigo definido en el fichero)
delete enemies.back();
enemies.pop_back();
// Abre las puertas