From 3cca4373d3187537d26b3acae959b733f08cede3 Mon Sep 17 00:00:00 2001 From: Sergio Valor Martinez Date: Wed, 7 Dec 2022 08:08:04 +0100 Subject: [PATCH] Actualizado asset.cpp --- data/sound/notify.wav | Bin 0 -> 64730 bytes source/common/asset.cpp | 70 ++++++++++++++++++++++++++++------------ source/common/asset.h | 22 +++++++------ source/director.cpp | 4 +-- 4 files changed, 64 insertions(+), 32 deletions(-) create mode 100644 data/sound/notify.wav diff --git a/data/sound/notify.wav b/data/sound/notify.wav new file mode 100644 index 0000000000000000000000000000000000000000..ddb57c0364de4af4b82c36799ba92fbb46ab14b5 GIT binary patch literal 64730 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 literal 0 HcmV?d00001 diff --git a/source/common/asset.cpp b/source/common/asset.cpp index 807d195..1202129 100644 --- a/source/common/asset.cpp +++ b/source/common/asset.cpp @@ -1,22 +1,19 @@ #include "asset.h" +#include // Constructor Asset::Asset(std::string executablePath) { this->executablePath = executablePath.substr(0, executablePath.find_last_of("\\/")); longestName = 0; -} - -// Destructor -Asset::~Asset() -{ + verbose = true; } // Añade un elemento a la lista -void Asset::add(std::string file, enum assetType type, bool required) +void Asset::add(std::string file, enum assetType type, bool required, bool absolute) { item_t temp; - temp.file = executablePath + file; + temp.file = absolute ? file : executablePath + file; temp.type = type; temp.required = required; fileList.push_back(temp); @@ -30,13 +27,19 @@ std::string Asset::get(std::string text) { for (auto f : fileList) { - if (f.file.find(text) != std::string::npos) + const size_t lastIndex = f.file.find_last_of("/") + 1; + const std::string file = f.file.substr(lastIndex, std::string::npos); + + if (file == text) { return f.file; } } - printf("Warning: file %s not found\n", text.c_str()); + if (verbose) + { + std::cout << "Warning: file " << text.c_str() << " not found" << std::endl; + } return ""; } @@ -45,7 +48,13 @@ bool Asset::check() { bool success = true; - printf("\n** Checking files.\n"); + if (verbose) + { + std::cout << "\n** Checking files" << std::endl; + + std::cout << "Executable path is: " << executablePath << std::endl; + std::cout << "Sample filepath: " << fileList.back().file << std::endl; + } // Comprueba la lista de ficheros clasificandolos por tipo for (int type = 0; type < t_maxAssetType; ++type) @@ -64,7 +73,10 @@ bool Asset::check() // Si hay ficheros de ese tipo, comprueba si existen if (any) { - printf("\n>> %s FILES\n", getTypeName(type).c_str()); + if (verbose) + { + std::cout << "\n>> " << getTypeName(type).c_str() << " FILES" << std::endl; + } for (auto f : fileList) { @@ -77,13 +89,18 @@ bool Asset::check() } // Resultado - if (success) + if (verbose) { - printf("\n** All files OK.\n\n"); - } - else - { - printf("\n** A file is missing. Exiting.\n\n"); + if (success) + { + std::cout << "\n** All files OK.\n" + << std::endl; + } + else + { + std::cout << "\n** A file is missing. Exiting.\n" + << std::endl; + } } return success; @@ -97,7 +114,7 @@ bool Asset::checkFile(std::string path) // Comprueba si existe el fichero const std::string filename = path.substr(path.find_last_of("\\/") + 1); - SDL_RWops *file = SDL_RWFromFile(path.c_str(), "r+b"); + SDL_RWops *file = SDL_RWFromFile(path.c_str(), "rb"); if (file != nullptr) { @@ -106,8 +123,15 @@ bool Asset::checkFile(std::string path) SDL_RWclose(file); } - const std::string s = "Checking file %-" + std::to_string(longestName) + "s [" + result + "]\n"; - printf(s.c_str(), filename.c_str()); + if (verbose) + { + std::cout.setf(std::ios::left, std::ios::adjustfield); + std::cout << "Checking file: "; + std::cout.width(longestName + 2); + std::cout.fill('.'); + std::cout << filename + " "; + std::cout << " [" + result + "]" << std::endl; + } return success; } @@ -157,4 +181,10 @@ std::string Asset::getTypeName(int type) return "ERROR"; break; } +} + +// Establece si ha de mostrar texto por pantalla +void Asset::setVerbose(bool value) +{ + verbose = value; } \ No newline at end of file diff --git a/source/common/asset.h b/source/common/asset.h index accd386..2eb5bca 100644 --- a/source/common/asset.h +++ b/source/common/asset.h @@ -31,34 +31,36 @@ private: std::string file; // Ruta del fichero desde la raiz del directorio enum assetType type; // Indica el tipo de recurso bool required; // Indica si es un fichero que debe de existir + //bool absolute; // Indica si la ruta que se ha proporcionado es una ruta absoluta }; - int longestName; // Contiene la longitud del nombre de fichero mas largo - - std::vector fileList; - std::string executablePath; + // Variables + int longestName; // Contiene la longitud del nombre de fichero mas largo + std::vector fileList; // Listado con todas las rutas a los ficheros + std::string executablePath; // Ruta al ejecutable + bool verbose; // Indica si ha de mostrar información por pantalla // Comprueba que existe un fichero - bool checkFile(std::string path); + bool checkFile(std::string executablePath); // Devuelve el nombre del tipo de recurso std::string getTypeName(int type); public: // Constructor - Asset(std::string executablePath); - - // Destructor - ~Asset(); + Asset(std::string path); // Añade un elemento a la lista - void add(std::string file, enum assetType type, bool required = true); + void add(std::string file, enum assetType type, bool required = true, bool absolute = false); // Devuelve un elemento de la lista a partir de una cadena std::string get(std::string text); // Comprueba que existen todos los elementos bool check(); + + // Establece si ha de mostrar texto por pantalla + void setVerbose(bool value); }; #endif diff --git a/source/director.cpp b/source/director.cpp index 8bb575e..c5280a0 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -37,7 +37,7 @@ Director::Director(std::string path) lang = new Lang(asset); lang->setLang(options->language); - input = new Input(asset->get("controllerdb.txt")); + input = new Input(asset->get("gamecontrollerdb.txt")); initInput(); screen = new Screen(window, renderer, asset, options); @@ -183,7 +183,6 @@ bool Director::setFileList() // Ficheros de configuración asset->add(prefix + "/data/config/score.bin", t_data, false); asset->add(prefix + "/data/config/demo.bin", t_data); - asset->add(prefix + "/data/config/config.bin", t_data, false); asset->add(prefix + "/data/config/config.txt", t_data, false); asset->add(prefix + "/data/config/jailer_id.txt", t_data, false); asset->add(prefix + "/data/config/gamecontrollerdb.txt", t_data); @@ -211,6 +210,7 @@ bool Director::setFileList() asset->add(prefix + "/data/sound/title.wav", t_sound); asset->add(prefix + "/data/sound/clock.wav", t_sound); asset->add(prefix + "/data/sound/powerball.wav", t_sound); + asset->add(prefix + "/data/sound/notify.wav", t_sound); // Texturas asset->add(prefix + "/data/gfx/balloon1.png", t_bitmap);