Mensajes de consola opcionales

This commit is contained in:
2022-11-02 09:52:06 +01:00
parent 8232055d22
commit 88f419e963
14 changed files with 96 additions and 268 deletions

View File

@@ -1,7 +1,7 @@
#include "animatedsprite.h" #include "animatedsprite.h"
// Carga la animación desde un fichero // Carga la animación desde un fichero
animatedSprite_t loadAnimationFromFile(Texture *texture, std::string filePath) animatedSprite_t loadAnimationFromFile(Texture *texture, std::string filePath, bool verbose)
{ {
// Inicializa variables // Inicializa variables
animatedSprite_t as; animatedSprite_t as;
@@ -19,7 +19,10 @@ animatedSprite_t loadAnimationFromFile(Texture *texture, std::string filePath)
if (file.good()) if (file.good())
{ {
// Procesa el fichero linea a linea // Procesa el fichero linea a linea
if (verbose)
{
std::cout << "Animation loaded: " << filename << std::endl; std::cout << "Animation loaded: " << filename << std::endl;
}
while (std::getline(file, line)) while (std::getline(file, line))
{ {
// Si la linea contiene el texto [animation] se realiza el proceso de carga de una animación // Si la linea contiene el texto [animation] se realiza el proceso de carga de una animación
@@ -132,12 +135,12 @@ animatedSprite_t loadAnimationFromFile(Texture *texture, std::string filePath)
} }
// El fichero no se puede abrir // El fichero no se puede abrir
else else
{
if (verbose)
{ {
std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl; std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl;
} }
}
// Pone un valor por defecto
// setRect({0, 0, frameWidth, frameHeight});
return as; return as;
} }
@@ -149,11 +152,10 @@ AnimatedSprite::AnimatedSprite(Texture *texture, SDL_Renderer *renderer, std::st
setTexture(texture); setTexture(texture);
setRenderer(renderer); setRenderer(renderer);
animatedSprite_t as;
// Carga las animaciones // Carga las animaciones
if (file != "") if (file != "")
{ {
as = loadFromFile(file); animatedSprite_t as = loadAnimationFromFile(texture, file);
// Copia los datos de las animaciones // Copia los datos de las animaciones
for (auto animation : as.animations) for (auto animation : as.animations)
@@ -337,151 +339,6 @@ SDL_Rect AnimatedSprite::getAnimationClip(int indexA, Uint8 indexF)
return animation.at(indexA).frames.at(indexF); return animation.at(indexA).frames.at(indexF);
} }
// Carga la animación desde un fichero
animatedSprite_t AnimatedSprite::loadFromFile(std::string filePath)
{
// Inicializa variables
animatedSprite_t as;
int framesPerRow = 0;
int frameWidth = 0;
int frameHeight = 0;
int maxTiles = 0;
const std::string filename = filePath.substr(filePath.find_last_of("\\/") + 1);
std::ifstream file(filePath);
std::string line;
// El fichero se puede abrir
if (file.good())
{
// Procesa el fichero linea a linea
std::cout << "Animation loaded: " << filename << std::endl;
while (std::getline(file, line))
{
// Si la linea contiene el texto [animation] se realiza el proceso de carga de una animación
if (line == "[animation]")
{
animation_t buffer;
buffer.counter = 0;
buffer.currentFrame = 0;
buffer.completed = false;
do
{
std::getline(file, line);
// Encuentra la posición del caracter '='
int pos = line.find("=");
// Procesa las dos subcadenas
if (pos != (int)line.npos)
{
if (line.substr(0, pos) == "name")
{
buffer.name = line.substr(pos + 1, line.length());
}
else if (line.substr(0, pos) == "speed")
{
buffer.speed = std::stoi(line.substr(pos + 1, line.length()));
}
else if (line.substr(0, pos) == "loop")
{
buffer.loop = std::stoi(line.substr(pos + 1, line.length()));
}
else if (line.substr(0, pos) == "frames")
{
// Se introducen los valores separados por comas en un vector
std::stringstream ss(line.substr(pos + 1, line.length()));
std::string tmp;
SDL_Rect rect = {0, 0, frameWidth, frameHeight};
while (getline(ss, tmp, ','))
{
// Comprueba que el tile no sea mayor que el maximo indice permitido
const int numTile = std::stoi(tmp) > maxTiles ? 0 : std::stoi(tmp);
rect.x = (numTile % framesPerRow) * frameWidth;
rect.y = (numTile / framesPerRow) * frameHeight;
buffer.frames.push_back(rect);
}
}
else
{
std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl;
}
}
} while (line != "[/animation]");
// Añade la animación al vector de animaciones
as.animations.push_back(buffer);
// animation.push_back(buffer);
}
// En caso contrario se parsea el fichero para buscar las variables y los valores
else
{
// Encuentra la posición del caracter '='
int pos = line.find("=");
// Procesa las dos subcadenas
if (pos != (int)line.npos)
{
if (line.substr(0, pos) == "framesPerRow")
{
framesPerRow = std::stoi(line.substr(pos + 1, line.length()));
}
else if (line.substr(0, pos) == "frameWidth")
{
frameWidth = std::stoi(line.substr(pos + 1, line.length()));
}
else if (line.substr(0, pos) == "frameHeight")
{
frameHeight = std::stoi(line.substr(pos + 1, line.length()));
}
else
{
std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl;
}
// Normaliza valores
if (framesPerRow == 0 && frameWidth > 0)
{
framesPerRow = texture->getWidth() / frameWidth;
}
if (maxTiles == 0 && frameWidth > 0 && frameHeight > 0)
{
const int w = texture->getWidth() / frameWidth;
const int h = texture->getHeight() / frameHeight;
maxTiles = w * h;
}
}
}
}
// Cierra el fichero
file.close();
}
// El fichero no se puede abrir
else
{
std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl;
}
// Pone un valor por defecto
setRect({0, 0, frameWidth, frameHeight});
// Añade los punteros
as.texture = texture;
return as;
}
// Carga la animación desde un vector // Carga la animación desde un vector
bool AnimatedSprite::loadFromVector(std::vector<std::string> *source) bool AnimatedSprite::loadFromVector(std::vector<std::string> *source)
{ {

View File

@@ -29,7 +29,7 @@ struct animatedSprite_t
}; };
// Carga la animación desde un fichero // Carga la animación desde un fichero
animatedSprite_t loadAnimationFromFile(Texture *texture, std::string filePath); animatedSprite_t loadAnimationFromFile(Texture *texture, std::string filePath, bool verbose = false);
class AnimatedSprite : public MovingSprite class AnimatedSprite : public MovingSprite
{ {
@@ -80,9 +80,6 @@ public:
// Obtiene el indice de la animación a partir del nombre // Obtiene el indice de la animación a partir del nombre
int getIndex(std::string name); int getIndex(std::string name);
// Carga la animación desde un fichero
animatedSprite_t loadFromFile(std::string filePath);
// Carga la animación desde un vector // Carga la animación desde un vector
bool loadFromVector(std::vector<std::string> *source); bool loadFromVector(std::vector<std::string> *source);

View File

@@ -2,9 +2,9 @@
#include <iostream> #include <iostream>
// Constructor // Constructor
Asset::Asset(std::string path) Asset::Asset(std::string executablePath)
{ {
executablePath = path; this->executablePath = executablePath.substr(0, executablePath.find_last_of("\\/"));
longestName = 0; longestName = 0;
verbose = true; verbose = true;
} }

View File

@@ -40,7 +40,7 @@ private:
bool verbose; // Indica si ha de mostrar información por pantalla bool verbose; // Indica si ha de mostrar información por pantalla
// Comprueba que existe un fichero // Comprueba que existe un fichero
bool checkFile(std::string path); bool checkFile(std::string executablePath);
// Devuelve el nombre del tipo de recurso // Devuelve el nombre del tipo de recurso
std::string getTypeName(int type); std::string getTypeName(int type);

View File

@@ -19,9 +19,6 @@ Input::Input(std::string file)
gameControllerBindings.resize(17, gcb); gameControllerBindings.resize(17, gcb);
verbose = true; verbose = true;
// Comprueba si hay un mando conectado
discoverGameController();
} }
// Asigna inputs a teclas // Asigna inputs a teclas
@@ -175,7 +172,7 @@ bool Input::checkAnyInput(int device, int index)
return false; return false;
} }
// Comprueba si hay un mando conectado // Busca si hay un mando conectado
bool Input::discoverGameController() bool Input::discoverGameController()
{ {
bool found = false; bool found = false;

View File

@@ -59,9 +59,6 @@ private:
std::string dbPath; // Ruta al archivo gamecontrollerdb.txt std::string dbPath; // Ruta al archivo gamecontrollerdb.txt
bool verbose; // Indica si ha de mostrar mensajes bool verbose; // Indica si ha de mostrar mensajes
// Comprueba si hay un mando conectado
bool discoverGameController();
public: public:
// Constructor // Constructor
Input(std::string file); Input(std::string file);
@@ -78,6 +75,9 @@ public:
// Comprueba si hay almenos un input activo // Comprueba si hay almenos un input activo
bool checkAnyInput(int device, int index); bool checkAnyInput(int device, int index);
// Busca si hay un mando conectado
bool discoverGameController();
// Comprueba si hay algun mando conectado // Comprueba si hay algun mando conectado
bool gameControllerFound(); bool gameControllerFound();

View File

@@ -22,7 +22,7 @@ void Resource::loadTextures(std::vector<std::string> list)
res_texture_t t; res_texture_t t;
t.name = l; t.name = l;
t.texture = new Texture(renderer, asset->get(l)); t.texture = new Texture(renderer, asset->get(l), options->console);
textures.push_back(t); textures.push_back(t);
} }
} }
@@ -45,7 +45,7 @@ void Resource::loadAnimations(std::vector<std::string> list)
res_animation_t as; res_animation_t as;
as.name = l; as.name = l;
as.animation = new animatedSprite_t(loadAnimationFromFile(getTexture(pngFile), asset->get(l))); as.animation = new animatedSprite_t(loadAnimationFromFile(getTexture(pngFile), asset->get(l), options->console));
animations.push_back(as); animations.push_back(as);
} }
} }
@@ -57,7 +57,7 @@ void Resource::loadOffsets(std::vector<std::string> list)
{ {
res_textOffset_t to; res_textOffset_t to;
to.name = l; to.name = l;
to.textFile = new textFile_t(LoadTextFile(asset->get(l))); to.textFile = new textFile_t(LoadTextFile(asset->get(l), options->console));
offsets.push_back(to); offsets.push_back(to);
} }
} }
@@ -69,7 +69,7 @@ void Resource::loadTileMaps(std::vector<std::string> list)
{ {
res_tileMap_t tm; res_tileMap_t tm;
tm.name = l; tm.name = l;
tm.tileMap = new std::vector<int>(loadRoomTileFile(asset->get(l))); tm.tileMap = new std::vector<int>(loadRoomTileFile(asset->get(l), options->console));
tileMaps.push_back(tm); tileMaps.push_back(tm);
} }
} }
@@ -81,7 +81,7 @@ void Resource::loadRooms(std::vector<std::string> list)
{ {
res_room_t r; res_room_t r;
r.name = l; r.name = l;
r.room = new room_t(loadRoomFile(asset->get(l))); r.room = new room_t(loadRoomFile(asset->get(l), options->console));
r.room->tileMap = getTileMap(r.room->tileMapFile); r.room->tileMap = getTileMap(r.room->tileMapFile);
for (auto &e : r.room->enemies) for (auto &e : r.room->enemies)
{ {

View File

@@ -4,7 +4,7 @@
#include <fstream> #include <fstream>
// Llena una estructuta textFile_t desde un fichero // Llena una estructuta textFile_t desde un fichero
textFile_t LoadTextFile(std::string file) textFile_t LoadTextFile(std::string file, bool verbose)
{ {
textFile_t tf; textFile_t tf;
@@ -50,15 +50,21 @@ textFile_t LoadTextFile(std::string file)
}; };
// Cierra el fichero // Cierra el fichero
if (verbose)
{
std::cout << "Text loaded: " << filename.c_str() << std::endl; std::cout << "Text loaded: " << filename.c_str() << std::endl;
}
rfile.close(); rfile.close();
} }
// El fichero no se puede abrir // El fichero no se puede abrir
else else
{
if (verbose)
{ {
std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl; std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl;
} }
}
// Establece las coordenadas para cada caracter ascii de la cadena y su ancho // Establece las coordenadas para cada caracter ascii de la cadena y su ancho
for (int i = 32; i < 128; ++i) for (int i = 32; i < 128; ++i)
@@ -74,7 +80,17 @@ textFile_t LoadTextFile(std::string file)
Text::Text(std::string textFile, Texture *texture, SDL_Renderer *renderer) Text::Text(std::string textFile, Texture *texture, SDL_Renderer *renderer)
{ {
// Carga los offsets desde el fichero // Carga los offsets desde el fichero
initOffsetFromFile(textFile); textFile_t tf = LoadTextFile(textFile);
// Inicializa variables desde la estructura
boxHeight = tf.boxHeight;
boxWidth = tf.boxWidth;
for (int i = 0; i < 128; ++i)
{
offset[i].x = tf.offset[i].x;
offset[i].y = tf.offset[i].y;
offset[i].w = tf.offset[i].w;
}
// Crea los objetos // Crea los objetos
sprite = new Sprite({0, 0, boxWidth, boxHeight}, texture, renderer); sprite = new Sprite({0, 0, boxWidth, boxHeight}, texture, renderer);
@@ -198,69 +214,6 @@ int Text::lenght(std::string text, int kerning)
return shift - kerning; return shift - kerning;
} }
// Inicializa el vector de offsets desde un fichero
void Text::initOffsetFromFile(std::string file)
{
// Inicializa a cero el vector con las coordenadas
for (int i = 0; i < 128; ++i)
{
offset[i].x = 0;
offset[i].y = 0;
offset[i].w = 0;
}
// Abre el fichero para leer los valores
const std::string filename = file.substr(file.find_last_of("\\/") + 1).c_str();
std::ifstream rfile(file);
if (rfile.is_open() && rfile.good())
{
std::string buffer;
// Lee los dos primeros valores del fichero
std::getline(rfile, buffer);
std::getline(rfile, buffer);
boxWidth = std::stoi(buffer);
std::getline(rfile, buffer);
std::getline(rfile, buffer);
boxHeight = std::stoi(buffer);
// lee el resto de datos del fichero
int index = 32;
int line_read = 0;
while (std::getline(rfile, buffer))
{
// Almacena solo las lineas impares
if (line_read % 2 == 1)
{
offset[index++].w = std::stoi(buffer);
}
// Limpia el buffer
buffer.clear();
line_read++;
};
// Cierra el fichero
std::cout << "Text loaded: " << filename.c_str() << std::endl;
rfile.close();
}
// El fichero no se puede abrir
else
{
std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl;
}
// Establece las coordenadas para cada caracter ascii de la cadena y su ancho
for (int i = 32; i < 128; ++i)
{
offset[i].x = ((i - 32) % 15) * boxWidth;
offset[i].y = ((i - 32) / 15) * boxHeight;
}
}
// Devuelve el valor de la variable // Devuelve el valor de la variable
int Text::getCharacterSize() int Text::getCharacterSize()
{ {

View File

@@ -26,7 +26,7 @@ struct textFile_t
}; };
// Llena una estructuta textFile_t desde un fichero // Llena una estructuta textFile_t desde un fichero
textFile_t LoadTextFile(std::string file); textFile_t LoadTextFile(std::string file, bool verbose = false);
// Clase texto. Pinta texto en pantalla a partir de un bitmap // Clase texto. Pinta texto en pantalla a partir de un bitmap
class Text class Text
@@ -40,9 +40,6 @@ private:
int boxHeight; // Altura de la caja de cada caracter en el png int boxHeight; // Altura de la caja de cada caracter en el png
offset_t offset[128]; // Vector con las posiciones y ancho de cada letra offset_t offset[128]; // Vector con las posiciones y ancho de cada letra
// Inicializa el vector de offsets desde un fichero
void initOffsetFromFile(std::string file);
public: public:
// Constructor // Constructor
Text(std::string textFile, Texture *texture, SDL_Renderer *renderer); Text(std::string textFile, Texture *texture, SDL_Renderer *renderer);

View File

@@ -5,7 +5,7 @@
#include <iostream> #include <iostream>
// Constructor // Constructor
Texture::Texture(SDL_Renderer *renderer, std::string path) Texture::Texture(SDL_Renderer *renderer, std::string path, bool verbose)
{ {
// Copia punteros // Copia punteros
this->renderer = renderer; this->renderer = renderer;
@@ -19,7 +19,7 @@ Texture::Texture(SDL_Renderer *renderer, std::string path)
// Carga el fichero en la textura // Carga el fichero en la textura
if (path != "") if (path != "")
{ {
loadFromFile(path, renderer); loadFromFile(path, renderer, verbose);
} }
} }
@@ -31,7 +31,7 @@ Texture::~Texture()
} }
// Carga una imagen desde un fichero // Carga una imagen desde un fichero
bool Texture::loadFromFile(std::string path, SDL_Renderer *renderer) bool Texture::loadFromFile(std::string path, SDL_Renderer *renderer, bool verbose)
{ {
const std::string filename = path.substr(path.find_last_of("\\/") + 1); const std::string filename = path.substr(path.find_last_of("\\/") + 1);
int req_format = STBI_rgb_alpha; int req_format = STBI_rgb_alpha;
@@ -43,9 +43,12 @@ bool Texture::loadFromFile(std::string path, SDL_Renderer *renderer)
exit(1); exit(1);
} }
else else
{
if (verbose)
{ {
std::cout << "Image loaded: " << filename.c_str() << std::endl; std::cout << "Image loaded: " << filename.c_str() << std::endl;
} }
}
int depth, pitch; int depth, pitch;
Uint32 pixel_format; Uint32 pixel_format;
@@ -71,17 +74,23 @@ bool Texture::loadFromFile(std::string path, SDL_Renderer *renderer)
// Carga la imagen desde una ruta específica // Carga la imagen desde una ruta específica
SDL_Surface *loadedSurface = SDL_CreateRGBSurfaceWithFormatFrom((void *)data, width, height, depth, pitch, pixel_format); SDL_Surface *loadedSurface = SDL_CreateRGBSurfaceWithFormatFrom((void *)data, width, height, depth, pitch, pixel_format);
if (loadedSurface == nullptr) if (loadedSurface == nullptr)
{
if (verbose)
{ {
std::cout << "Unable to load image " << path.c_str() << std::endl; std::cout << "Unable to load image " << path.c_str() << std::endl;
} }
}
else else
{ {
// Crea la textura desde los pixels de la surface // Crea la textura desde los pixels de la surface
newTexture = SDL_CreateTextureFromSurface(renderer, loadedSurface); newTexture = SDL_CreateTextureFromSurface(renderer, loadedSurface);
if (newTexture == nullptr) if (newTexture == nullptr)
{
if (verbose)
{ {
std::cout << "Unable to create texture from " << path.c_str() << "! SDL Error: " << SDL_GetError() << std::endl; std::cout << "Unable to create texture from " << path.c_str() << "! SDL Error: " << SDL_GetError() << std::endl;
} }
}
else else
{ {
// Obtiene las dimensiones de la imagen // Obtiene las dimensiones de la imagen

View File

@@ -21,13 +21,13 @@ private:
public: public:
// Constructor // Constructor
Texture(SDL_Renderer *renderer, std::string path = ""); Texture(SDL_Renderer *renderer, std::string path = "", bool verbose = false);
// Destructor // Destructor
~Texture(); ~Texture();
// Carga una imagen desde un fichero // Carga una imagen desde un fichero
bool loadFromFile(std::string path, SDL_Renderer *renderer); bool loadFromFile(std::string path, SDL_Renderer *renderer, bool verbose = false);
// Crea una textura en blanco // Crea una textura en blanco
bool createBlank(SDL_Renderer *renderer, int width, int height, SDL_TextureAccess = SDL_TEXTUREACCESS_STREAMING); bool createBlank(SDL_Renderer *renderer, int width, int height, SDL_TextureAccess = SDL_TEXTUREACCESS_STREAMING);

View File

@@ -11,9 +11,15 @@ Director::Director(int argc, char *argv[])
section.name = SECTION_PROG_GAME; section.name = SECTION_PROG_GAME;
// Crea e inicializa las opciones del programa
iniOptions();
// Comprueba los parametros del programa
checkProgramArguments(argc, argv);
// Crea el objeto que controla los ficheros de recursos // Crea el objeto que controla los ficheros de recursos
executablePath = argv[0]; asset = new Asset(executablePath);
asset = new Asset(executablePath.substr(0, executablePath.find_last_of("\\/"))); asset->setVerbose(options->console);
// Si falta algún fichero no inicia el programa // Si falta algún fichero no inicia el programa
if (!setFileList()) if (!setFileList())
@@ -21,13 +27,6 @@ Director::Director(int argc, char *argv[])
section.name = SECTION_PROG_QUIT; section.name = SECTION_PROG_QUIT;
} }
// Crea e inicializa las opciones del programa
iniOptions();
// Comprueba los parametros del programa
checkProgramArguments(argc, argv);
asset->setVerbose(options->console);
// Inicializa variables desde el fichero de configuración // Inicializa variables desde el fichero de configuración
loadConfig(); loadConfig();
@@ -92,7 +91,11 @@ void Director::iniOptions()
// Comprueba los parametros del programa // Comprueba los parametros del programa
void Director::checkProgramArguments(int argc, char *argv[]) void Director::checkProgramArguments(int argc, char *argv[])
{ {
for (int i = 0; i < argc; ++i) // Establece la ruta del programa
executablePath = argv[0];
// Comprueba el resto de parametros
for (int i = 1; i < argc; ++i)
{ {
if (strcmp(argv[i], "--console") == 0) if (strcmp(argv[i], "--console") == 0)
{ {
@@ -661,6 +664,9 @@ void Director::initInput()
// Establece si ha de mostrar mensajes // Establece si ha de mostrar mensajes
input->setVerbose(options->console); input->setVerbose(options->console);
// Busca si hay un mando conectado
input->discoverGameController();
// Asigna inputs a teclas // Asigna inputs a teclas
input->bindKey(INPUT_UP, SDL_SCANCODE_UP); input->bindKey(INPUT_UP, SDL_SCANCODE_UP);
input->bindKey(INPUT_DOWN, SDL_SCANCODE_DOWN); input->bindKey(INPUT_DOWN, SDL_SCANCODE_DOWN);

View File

@@ -4,7 +4,7 @@
#include <sstream> #include <sstream>
// Carga las variables y texturas desde un fichero de mapa de tiles // Carga las variables y texturas desde un fichero de mapa de tiles
std::vector<int> loadRoomTileFile(std::string file_path) std::vector<int> loadRoomTileFile(std::string file_path, bool verbose)
{ {
std::vector<int> tileMapFile; std::vector<int> tileMapFile;
const std::string filename = file_path.substr(file_path.find_last_of("\\/") + 1); const std::string filename = file_path.substr(file_path.find_last_of("\\/") + 1);
@@ -37,20 +37,26 @@ std::vector<int> loadRoomTileFile(std::string file_path)
} }
// Cierra el fichero // Cierra el fichero
if (verbose)
{
std::cout << "TileMap loaded: " << filename.c_str() << std::endl; std::cout << "TileMap loaded: " << filename.c_str() << std::endl;
}
file.close(); file.close();
} }
else else
{ // El fichero no se puede abrir { // El fichero no se puede abrir
if (verbose)
{
std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl; std::cout << "Warning: Unable to open " << filename.c_str() << " file" << std::endl;
} }
}
return tileMapFile; return tileMapFile;
} }
// Carga las variables desde un fichero de mapa // Carga las variables desde un fichero de mapa
room_t loadRoomFile(std::string file_path) room_t loadRoomFile(std::string file_path, bool verbose)
{ {
room_t room; room_t room;
room.itemColor1 = "yellow"; room.itemColor1 = "yellow";
@@ -83,9 +89,12 @@ room_t loadRoomFile(std::string file_path)
// Procesa las dos subcadenas // Procesa las dos subcadenas
if (!setEnemy(&enemy, line.substr(0, pos), line.substr(pos + 1, line.length()))) if (!setEnemy(&enemy, line.substr(0, pos), line.substr(pos + 1, line.length())))
{
if (verbose)
{ {
std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl; std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl;
} }
}
} while (line != "[/enemy]"); } while (line != "[/enemy]");
// Añade el enemigo al vector de enemigos // Añade el enemigo al vector de enemigos
@@ -110,6 +119,7 @@ room_t loadRoomFile(std::string file_path)
// Procesa las dos subcadenas // Procesa las dos subcadenas
if (!setItem(&item, line.substr(0, pos), line.substr(pos + 1, line.length()))) if (!setItem(&item, line.substr(0, pos), line.substr(pos + 1, line.length())))
{ {
if (verbose)
{ {
std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl; std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl;
} }
@@ -129,6 +139,7 @@ room_t loadRoomFile(std::string file_path)
// Procesa las dos subcadenas // Procesa las dos subcadenas
if (!setVars(&room, line.substr(0, pos), line.substr(pos + 1, line.length()))) if (!setVars(&room, line.substr(0, pos), line.substr(pos + 1, line.length())))
{ {
if (verbose)
{ {
std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl; std::cout << "Warning: file " << filename.c_str() << "\n, unknown parameter \"" << line.substr(0, pos).c_str() << "\"" << std::endl;
} }
@@ -137,6 +148,7 @@ room_t loadRoomFile(std::string file_path)
} }
// Cierra el fichero // Cierra el fichero
if (verbose)
{ {
std::cout << "Room loaded: " << filename.c_str() << std::endl; std::cout << "Room loaded: " << filename.c_str() << std::endl;
} }

View File

@@ -56,10 +56,10 @@ struct room_t
}; };
// Carga las variables desde un fichero de mapa // Carga las variables desde un fichero de mapa
room_t loadRoomFile(std::string file); room_t loadRoomFile(std::string file, bool verbose = false);
// Carga las variables y texturas desde un fichero de mapa de tiles // Carga las variables y texturas desde un fichero de mapa de tiles
std::vector<int> loadRoomTileFile(std::string file_path); std::vector<int> loadRoomTileFile(std::string file_path, bool verbose = false);
// Asigna variables a partir de dos cadenas // Asigna variables a partir de dos cadenas
bool setVars(room_t *room, std::string var, std::string value); bool setVars(room_t *room, std::string var, std::string value);