forked from jaildesigner-jailgames/jaildoctors_dilemma
singletoning
This commit is contained in:
@@ -4,25 +4,38 @@
|
|||||||
#include <stddef.h> // Para size_t
|
#include <stddef.h> // Para size_t
|
||||||
#include <iostream> // Para basic_ostream, operator<<, cout, endl
|
#include <iostream> // Para basic_ostream, operator<<, cout, endl
|
||||||
|
|
||||||
// Constructor
|
// [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado
|
||||||
Asset::Asset(std::string executablePath)
|
Asset *Asset::asset_ = nullptr;
|
||||||
|
|
||||||
|
// [SINGLETON] Crearemos el objeto con esta función estática
|
||||||
|
void Asset::init(const std::string &executable_path)
|
||||||
{
|
{
|
||||||
this->executablePath = executablePath.substr(0, executablePath.find_last_of("\\/"));
|
Asset::asset_ = new Asset(executable_path);
|
||||||
longestName = 0;
|
}
|
||||||
verbose = true;
|
|
||||||
|
// [SINGLETON] Destruiremos el objeto con esta función estática
|
||||||
|
void Asset::destroy()
|
||||||
|
{
|
||||||
|
delete Asset::asset_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// [SINGLETON] Con este método obtenemos el objeto y podemos trabajar con él
|
||||||
|
Asset *Asset::get()
|
||||||
|
{
|
||||||
|
return Asset::asset_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade un elemento a la lista
|
// Añade un elemento a la lista
|
||||||
void Asset::add(std::string file, enum assetType type, bool required, bool absolute)
|
void Asset::add(std::string file, enum assetType type, bool required, bool absolute)
|
||||||
{
|
{
|
||||||
item_t temp;
|
item_t temp;
|
||||||
temp.file = absolute ? file : executablePath + file;
|
temp.file = absolute ? file : executable_path_ + file;
|
||||||
temp.type = type;
|
temp.type = type;
|
||||||
temp.required = required;
|
temp.required = required;
|
||||||
fileList.push_back(temp);
|
fileList.push_back(temp);
|
||||||
|
|
||||||
const std::string filename = file.substr(file.find_last_of("\\/") + 1);
|
const std::string filename = file.substr(file.find_last_of("\\/") + 1);
|
||||||
longestName = SDL_max(longestName, filename.size());
|
longest_name_ = SDL_max(longest_name_, filename.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve el fichero de un elemento de la lista a partir de una cadena
|
// Devuelve el fichero de un elemento de la lista a partir de una cadena
|
||||||
@@ -39,7 +52,7 @@ std::string Asset::get(std::string text)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verbose)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
std::cout << "Warning: file " << text.c_str() << " not found" << std::endl;
|
std::cout << "Warning: file " << text.c_str() << " not found" << std::endl;
|
||||||
}
|
}
|
||||||
@@ -51,11 +64,11 @@ bool Asset::check()
|
|||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
if (verbose)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
std::cout << "\n** Checking files" << std::endl;
|
std::cout << "\n** Checking files" << std::endl;
|
||||||
|
|
||||||
std::cout << "Executable path is: " << executablePath << std::endl;
|
std::cout << "Executable path is: " << executable_path_ << std::endl;
|
||||||
std::cout << "Sample filepath: " << fileList.back().file << std::endl;
|
std::cout << "Sample filepath: " << fileList.back().file << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +89,7 @@ bool Asset::check()
|
|||||||
// Si hay ficheros de ese tipo, comprueba si existen
|
// Si hay ficheros de ese tipo, comprueba si existen
|
||||||
if (any)
|
if (any)
|
||||||
{
|
{
|
||||||
if (verbose)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
std::cout << "\n>> " << getTypeName(type).c_str() << " FILES" << std::endl;
|
std::cout << "\n>> " << getTypeName(type).c_str() << " FILES" << std::endl;
|
||||||
}
|
}
|
||||||
@@ -92,7 +105,7 @@ bool Asset::check()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resultado
|
// Resultado
|
||||||
if (verbose)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
@@ -126,11 +139,11 @@ bool Asset::checkFile(std::string path)
|
|||||||
SDL_RWclose(file);
|
SDL_RWclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verbose)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
std::cout.setf(std::ios::left, std::ios::adjustfield);
|
std::cout.setf(std::ios::left, std::ios::adjustfield);
|
||||||
std::cout << "Checking file: ";
|
std::cout << "Checking file: ";
|
||||||
std::cout.width(longestName + 2);
|
std::cout.width(longest_name_ + 2);
|
||||||
std::cout.fill('.');
|
std::cout.fill('.');
|
||||||
std::cout << filename + " ";
|
std::cout << filename + " ";
|
||||||
std::cout << " [" + result + "]" << std::endl;
|
std::cout << " [" + result + "]" << std::endl;
|
||||||
@@ -189,5 +202,5 @@ std::string Asset::getTypeName(int type)
|
|||||||
// Establece si ha de mostrar texto por pantalla
|
// Establece si ha de mostrar texto por pantalla
|
||||||
void Asset::setVerbose(bool value)
|
void Asset::setVerbose(bool value)
|
||||||
{
|
{
|
||||||
verbose = value;
|
verbose_ = value;
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <string> // Para string
|
#include <string> // Para string
|
||||||
#include <vector> // Para vector
|
#include <vector> // Para vector
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
enum assetType
|
enum assetType
|
||||||
{
|
{
|
||||||
@@ -21,20 +22,22 @@ enum assetType
|
|||||||
class Asset
|
class Asset
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
// [SINGLETON] Objeto asset privado
|
||||||
|
static Asset *asset_;
|
||||||
|
|
||||||
// Estructura para definir un item
|
// Estructura para definir un item
|
||||||
struct item_t
|
struct item_t
|
||||||
{
|
{
|
||||||
std::string file; // Ruta del fichero desde la raiz del directorio
|
std::string file; // Ruta del fichero desde la raiz del directorio
|
||||||
enum assetType type; // Indica el tipo de recurso
|
enum assetType type; // Indica el tipo de recurso
|
||||||
bool required; // Indica si es un fichero que debe de existir
|
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
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
int longestName; // Contiene la longitud del nombre de fichero mas largo
|
int longest_name_ = 0; // Contiene la longitud del nombre de fichero mas largo
|
||||||
std::vector<item_t> fileList; // Listado con todas las rutas a los ficheros
|
std::vector<item_t> fileList; // Listado con todas las rutas a los ficheros
|
||||||
std::string executablePath; // Ruta al ejecutable
|
std::string executable_path_; // Ruta al ejecutable
|
||||||
bool verbose; // Indica si ha de mostrar información por pantalla
|
bool verbose_ = true; // Indica si ha de mostrar información por pantalla
|
||||||
|
|
||||||
// Comprueba que existe un fichero
|
// Comprueba que existe un fichero
|
||||||
bool checkFile(std::string executablePath);
|
bool checkFile(std::string executablePath);
|
||||||
@@ -42,9 +45,22 @@ private:
|
|||||||
// Devuelve el nombre del tipo de recurso
|
// Devuelve el nombre del tipo de recurso
|
||||||
std::string getTypeName(int type);
|
std::string getTypeName(int type);
|
||||||
|
|
||||||
public:
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Asset(std::string path);
|
explicit Asset(const std::string &executable_path)
|
||||||
|
: executable_path_(getPath(executable_path)) {}
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~Asset() = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// [SINGLETON] Crearemos el objeto con esta función estática
|
||||||
|
static void init(const std::string &executable_path);
|
||||||
|
|
||||||
|
// [SINGLETON] Destruiremos el objeto con esta función estática
|
||||||
|
static void destroy();
|
||||||
|
|
||||||
|
// [SINGLETON] Con este método obtenemos el objeto y podemos trabajar con él
|
||||||
|
static Asset *get();
|
||||||
|
|
||||||
// Añade un elemento a la lista
|
// Añade un elemento a la lista
|
||||||
void add(std::string file, enum assetType type, bool required = true, bool absolute = false);
|
void add(std::string file, enum assetType type, bool required = true, bool absolute = false);
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ Director::Director(int argc, const char *argv[])
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
section->name = SECTION_TITLE;
|
section->name = SECTION_TITLE;
|
||||||
#endif
|
#endif
|
||||||
|
Asset::init(argv[0]); // Crea el objeto que controla los ficheros de recursos
|
||||||
|
|
||||||
// Crea e inicializa las opciones del programa
|
// Crea e inicializa las opciones del programa
|
||||||
initOptions();
|
initOptions();
|
||||||
@@ -69,8 +70,7 @@ Director::Director(int argc, const char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Crea el objeto que controla los ficheros de recursos
|
// Crea el objeto que controla los ficheros de recursos
|
||||||
asset = new Asset(executablePath);
|
Asset::get()->setVerbose(options->console);
|
||||||
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())
|
||||||
@@ -88,13 +88,13 @@ Director::Director(int argc, const char *argv[])
|
|||||||
initJailAudio();
|
initJailAudio();
|
||||||
|
|
||||||
// Crea los objetos
|
// Crea los objetos
|
||||||
resource = new Resource(renderer, asset, options);
|
resource = new Resource(renderer, Asset::get(), options);
|
||||||
input = new Input(asset->get("gamecontrollerdb.txt"));
|
input = new Input(Asset::get()->get("gamecontrollerdb.txt"));
|
||||||
initInput();
|
initInput();
|
||||||
screen = new Screen(window, renderer, asset, options);
|
screen = new Screen(window, renderer, Asset::get(), options);
|
||||||
screen->setBorderColor(borderColor);
|
screen->setBorderColor(borderColor);
|
||||||
debug = new Debug(renderer, screen, asset);
|
debug = new Debug(renderer, screen, Asset::get());
|
||||||
music = JA_LoadMusic(asset->get("title.ogg").c_str());
|
music = JA_LoadMusic(Asset::get()->get("title.ogg").c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
Director::~Director()
|
Director::~Director()
|
||||||
@@ -105,7 +105,6 @@ Director::~Director()
|
|||||||
// Libera la memoria
|
// Libera la memoria
|
||||||
delete section;
|
delete section;
|
||||||
delete options;
|
delete options;
|
||||||
delete asset;
|
|
||||||
delete input;
|
delete input;
|
||||||
delete screen;
|
delete screen;
|
||||||
delete debug;
|
delete debug;
|
||||||
@@ -217,7 +216,7 @@ bool Director::loadConfig()
|
|||||||
|
|
||||||
// Variables para manejar el fichero
|
// Variables para manejar el fichero
|
||||||
std::string line;
|
std::string line;
|
||||||
std::ifstream file(asset->get("config.txt"));
|
std::ifstream file(Asset::get()->get("config.txt"));
|
||||||
|
|
||||||
// Si el fichero se puede abrir
|
// Si el fichero se puede abrir
|
||||||
if (file.good())
|
if (file.good())
|
||||||
@@ -305,20 +304,20 @@ bool Director::saveConfig()
|
|||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
// Crea y abre el fichero de texto
|
// Crea y abre el fichero de texto
|
||||||
std::ofstream file(asset->get("config.txt"));
|
std::ofstream file(Asset::get()->get("config.txt"));
|
||||||
|
|
||||||
if (file.good())
|
if (file.good())
|
||||||
{
|
{
|
||||||
if (options->console)
|
if (options->console)
|
||||||
{
|
{
|
||||||
std::cout << asset->get("config.txt") << " open for writing" << std::endl;
|
std::cout << Asset::get()->get("config.txt") << " open for writing" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (options->console)
|
if (options->console)
|
||||||
{
|
{
|
||||||
std::cout << asset->get("config.txt") << " can't be opened" << std::endl;
|
std::cout << Asset::get()->get("config.txt") << " can't be opened" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1367,354 +1366,354 @@ bool Director::setFileList()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Texto
|
// Texto
|
||||||
asset->add(prefix + "/data/font/smb2.png", t_font);
|
Asset::get()->add(prefix + "/data/font/smb2.png", t_font);
|
||||||
asset->add(prefix + "/data/font/smb2.txt", t_font);
|
Asset::get()->add(prefix + "/data/font/smb2.txt", t_font);
|
||||||
asset->add(prefix + "/data/font/debug.png", t_font);
|
Asset::get()->add(prefix + "/data/font/debug.png", t_font);
|
||||||
asset->add(prefix + "/data/font/debug.txt", t_font);
|
Asset::get()->add(prefix + "/data/font/debug.txt", t_font);
|
||||||
asset->add(prefix + "/data/font/gauntlet.png", t_font);
|
Asset::get()->add(prefix + "/data/font/gauntlet.png", t_font);
|
||||||
asset->add(prefix + "/data/font/gauntlet.txt", t_font);
|
Asset::get()->add(prefix + "/data/font/gauntlet.txt", t_font);
|
||||||
asset->add(prefix + "/data/font/subatomic.png", t_font);
|
Asset::get()->add(prefix + "/data/font/subatomic.png", t_font);
|
||||||
asset->add(prefix + "/data/font/subatomic.txt", t_font);
|
Asset::get()->add(prefix + "/data/font/subatomic.txt", t_font);
|
||||||
|
|
||||||
// Shaders
|
// Shaders
|
||||||
asset->add(prefix + "/data/shaders/crtpi_192.glsl", t_data);
|
Asset::get()->add(prefix + "/data/shaders/crtpi_192.glsl", t_data);
|
||||||
asset->add(prefix + "/data/shaders/crtpi_240.glsl", t_data);
|
Asset::get()->add(prefix + "/data/shaders/crtpi_240.glsl", t_data);
|
||||||
|
|
||||||
// Datos
|
// Datos
|
||||||
asset->add(prefix + "/data/input/gamecontrollerdb.txt", t_data);
|
Asset::get()->add(prefix + "/data/input/gamecontrollerdb.txt", t_data);
|
||||||
|
|
||||||
// Ficheros de sistema
|
// Ficheros de sistema
|
||||||
asset->add(systemFolder + "/config.txt", t_data, false, true);
|
Asset::get()->add(systemFolder + "/config.txt", t_data, false, true);
|
||||||
asset->add(systemFolder + "/stats_buffer.csv", t_data, false, true);
|
Asset::get()->add(systemFolder + "/stats_buffer.csv", t_data, false, true);
|
||||||
asset->add(systemFolder + "/stats.csv", t_data, false, true);
|
Asset::get()->add(systemFolder + "/stats.csv", t_data, false, true);
|
||||||
asset->add(systemFolder + "/cheevos.bin", t_data, false, true);
|
Asset::get()->add(systemFolder + "/cheevos.bin", t_data, false, true);
|
||||||
|
|
||||||
// Notificaciones
|
// Notificaciones
|
||||||
asset->add(prefix + "/data/notifications/notify.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/notifications/notify.png", t_bitmap);
|
||||||
|
|
||||||
// Habitaciones
|
// Habitaciones
|
||||||
asset->add(prefix + "/data/room/01.room", t_room);
|
Asset::get()->add(prefix + "/data/room/01.room", t_room);
|
||||||
asset->add(prefix + "/data/room/02.room", t_room);
|
Asset::get()->add(prefix + "/data/room/02.room", t_room);
|
||||||
asset->add(prefix + "/data/room/03.room", t_room);
|
Asset::get()->add(prefix + "/data/room/03.room", t_room);
|
||||||
asset->add(prefix + "/data/room/04.room", t_room);
|
Asset::get()->add(prefix + "/data/room/04.room", t_room);
|
||||||
asset->add(prefix + "/data/room/05.room", t_room);
|
Asset::get()->add(prefix + "/data/room/05.room", t_room);
|
||||||
asset->add(prefix + "/data/room/06.room", t_room);
|
Asset::get()->add(prefix + "/data/room/06.room", t_room);
|
||||||
asset->add(prefix + "/data/room/07.room", t_room);
|
Asset::get()->add(prefix + "/data/room/07.room", t_room);
|
||||||
asset->add(prefix + "/data/room/08.room", t_room);
|
Asset::get()->add(prefix + "/data/room/08.room", t_room);
|
||||||
asset->add(prefix + "/data/room/09.room", t_room);
|
Asset::get()->add(prefix + "/data/room/09.room", t_room);
|
||||||
asset->add(prefix + "/data/room/10.room", t_room);
|
Asset::get()->add(prefix + "/data/room/10.room", t_room);
|
||||||
asset->add(prefix + "/data/room/11.room", t_room);
|
Asset::get()->add(prefix + "/data/room/11.room", t_room);
|
||||||
asset->add(prefix + "/data/room/12.room", t_room);
|
Asset::get()->add(prefix + "/data/room/12.room", t_room);
|
||||||
asset->add(prefix + "/data/room/13.room", t_room);
|
Asset::get()->add(prefix + "/data/room/13.room", t_room);
|
||||||
asset->add(prefix + "/data/room/14.room", t_room);
|
Asset::get()->add(prefix + "/data/room/14.room", t_room);
|
||||||
asset->add(prefix + "/data/room/15.room", t_room);
|
Asset::get()->add(prefix + "/data/room/15.room", t_room);
|
||||||
asset->add(prefix + "/data/room/16.room", t_room);
|
Asset::get()->add(prefix + "/data/room/16.room", t_room);
|
||||||
asset->add(prefix + "/data/room/17.room", t_room);
|
Asset::get()->add(prefix + "/data/room/17.room", t_room);
|
||||||
asset->add(prefix + "/data/room/18.room", t_room);
|
Asset::get()->add(prefix + "/data/room/18.room", t_room);
|
||||||
asset->add(prefix + "/data/room/19.room", t_room);
|
Asset::get()->add(prefix + "/data/room/19.room", t_room);
|
||||||
asset->add(prefix + "/data/room/20.room", t_room);
|
Asset::get()->add(prefix + "/data/room/20.room", t_room);
|
||||||
asset->add(prefix + "/data/room/21.room", t_room);
|
Asset::get()->add(prefix + "/data/room/21.room", t_room);
|
||||||
asset->add(prefix + "/data/room/22.room", t_room);
|
Asset::get()->add(prefix + "/data/room/22.room", t_room);
|
||||||
asset->add(prefix + "/data/room/23.room", t_room);
|
Asset::get()->add(prefix + "/data/room/23.room", t_room);
|
||||||
asset->add(prefix + "/data/room/24.room", t_room);
|
Asset::get()->add(prefix + "/data/room/24.room", t_room);
|
||||||
asset->add(prefix + "/data/room/25.room", t_room);
|
Asset::get()->add(prefix + "/data/room/25.room", t_room);
|
||||||
asset->add(prefix + "/data/room/26.room", t_room);
|
Asset::get()->add(prefix + "/data/room/26.room", t_room);
|
||||||
asset->add(prefix + "/data/room/27.room", t_room);
|
Asset::get()->add(prefix + "/data/room/27.room", t_room);
|
||||||
asset->add(prefix + "/data/room/28.room", t_room);
|
Asset::get()->add(prefix + "/data/room/28.room", t_room);
|
||||||
asset->add(prefix + "/data/room/29.room", t_room);
|
Asset::get()->add(prefix + "/data/room/29.room", t_room);
|
||||||
asset->add(prefix + "/data/room/30.room", t_room);
|
Asset::get()->add(prefix + "/data/room/30.room", t_room);
|
||||||
asset->add(prefix + "/data/room/31.room", t_room);
|
Asset::get()->add(prefix + "/data/room/31.room", t_room);
|
||||||
asset->add(prefix + "/data/room/32.room", t_room);
|
Asset::get()->add(prefix + "/data/room/32.room", t_room);
|
||||||
asset->add(prefix + "/data/room/33.room", t_room);
|
Asset::get()->add(prefix + "/data/room/33.room", t_room);
|
||||||
asset->add(prefix + "/data/room/34.room", t_room);
|
Asset::get()->add(prefix + "/data/room/34.room", t_room);
|
||||||
asset->add(prefix + "/data/room/35.room", t_room);
|
Asset::get()->add(prefix + "/data/room/35.room", t_room);
|
||||||
asset->add(prefix + "/data/room/36.room", t_room);
|
Asset::get()->add(prefix + "/data/room/36.room", t_room);
|
||||||
asset->add(prefix + "/data/room/37.room", t_room);
|
Asset::get()->add(prefix + "/data/room/37.room", t_room);
|
||||||
asset->add(prefix + "/data/room/38.room", t_room);
|
Asset::get()->add(prefix + "/data/room/38.room", t_room);
|
||||||
asset->add(prefix + "/data/room/39.room", t_room);
|
Asset::get()->add(prefix + "/data/room/39.room", t_room);
|
||||||
asset->add(prefix + "/data/room/40.room", t_room);
|
Asset::get()->add(prefix + "/data/room/40.room", t_room);
|
||||||
asset->add(prefix + "/data/room/41.room", t_room);
|
Asset::get()->add(prefix + "/data/room/41.room", t_room);
|
||||||
asset->add(prefix + "/data/room/42.room", t_room);
|
Asset::get()->add(prefix + "/data/room/42.room", t_room);
|
||||||
asset->add(prefix + "/data/room/43.room", t_room);
|
Asset::get()->add(prefix + "/data/room/43.room", t_room);
|
||||||
asset->add(prefix + "/data/room/44.room", t_room);
|
Asset::get()->add(prefix + "/data/room/44.room", t_room);
|
||||||
asset->add(prefix + "/data/room/45.room", t_room);
|
Asset::get()->add(prefix + "/data/room/45.room", t_room);
|
||||||
asset->add(prefix + "/data/room/46.room", t_room);
|
Asset::get()->add(prefix + "/data/room/46.room", t_room);
|
||||||
asset->add(prefix + "/data/room/47.room", t_room);
|
Asset::get()->add(prefix + "/data/room/47.room", t_room);
|
||||||
asset->add(prefix + "/data/room/48.room", t_room);
|
Asset::get()->add(prefix + "/data/room/48.room", t_room);
|
||||||
asset->add(prefix + "/data/room/49.room", t_room);
|
Asset::get()->add(prefix + "/data/room/49.room", t_room);
|
||||||
asset->add(prefix + "/data/room/50.room", t_room);
|
Asset::get()->add(prefix + "/data/room/50.room", t_room);
|
||||||
asset->add(prefix + "/data/room/51.room", t_room);
|
Asset::get()->add(prefix + "/data/room/51.room", t_room);
|
||||||
asset->add(prefix + "/data/room/52.room", t_room);
|
Asset::get()->add(prefix + "/data/room/52.room", t_room);
|
||||||
asset->add(prefix + "/data/room/53.room", t_room);
|
Asset::get()->add(prefix + "/data/room/53.room", t_room);
|
||||||
asset->add(prefix + "/data/room/54.room", t_room);
|
Asset::get()->add(prefix + "/data/room/54.room", t_room);
|
||||||
asset->add(prefix + "/data/room/55.room", t_room);
|
Asset::get()->add(prefix + "/data/room/55.room", t_room);
|
||||||
asset->add(prefix + "/data/room/56.room", t_room);
|
Asset::get()->add(prefix + "/data/room/56.room", t_room);
|
||||||
asset->add(prefix + "/data/room/57.room", t_room);
|
Asset::get()->add(prefix + "/data/room/57.room", t_room);
|
||||||
asset->add(prefix + "/data/room/58.room", t_room);
|
Asset::get()->add(prefix + "/data/room/58.room", t_room);
|
||||||
asset->add(prefix + "/data/room/59.room", t_room);
|
Asset::get()->add(prefix + "/data/room/59.room", t_room);
|
||||||
asset->add(prefix + "/data/room/60.room", t_room);
|
Asset::get()->add(prefix + "/data/room/60.room", t_room);
|
||||||
|
|
||||||
// Tilemaps
|
// Tilemaps
|
||||||
asset->add(prefix + "/data/room/01.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/01.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/02.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/02.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/03.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/03.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/04.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/04.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/05.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/05.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/06.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/06.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/07.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/07.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/08.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/08.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/09.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/09.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/10.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/10.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/11.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/11.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/12.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/12.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/13.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/13.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/14.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/14.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/15.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/15.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/16.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/16.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/17.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/17.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/18.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/18.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/19.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/19.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/20.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/20.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/21.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/21.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/22.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/22.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/23.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/23.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/24.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/24.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/25.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/25.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/26.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/26.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/27.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/27.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/28.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/28.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/29.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/29.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/30.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/30.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/31.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/31.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/32.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/32.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/33.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/33.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/34.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/34.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/35.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/35.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/36.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/36.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/37.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/37.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/38.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/38.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/39.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/39.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/40.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/40.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/41.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/41.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/42.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/42.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/43.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/43.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/44.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/44.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/45.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/45.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/46.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/46.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/47.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/47.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/48.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/48.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/49.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/49.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/50.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/50.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/51.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/51.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/52.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/52.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/53.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/53.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/54.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/54.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/55.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/55.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/56.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/56.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/57.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/57.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/58.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/58.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/59.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/59.tmx", t_room);
|
||||||
asset->add(prefix + "/data/room/60.tmx", t_room);
|
Asset::get()->add(prefix + "/data/room/60.tmx", t_room);
|
||||||
|
|
||||||
// Tilesets
|
// Tilesets
|
||||||
asset->add(prefix + "/data/tilesets/standard.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/tilesets/standard.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/tilesets/standard_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/tilesets/standard_zxarne.png", t_bitmap);
|
||||||
|
|
||||||
// Enemigos
|
// Enemigos
|
||||||
asset->add(prefix + "/data/enemies/abad_bell.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/abad_bell.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/abad_bell.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/abad_bell.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/abad.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/abad.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/abad.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/abad.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/amstrad_cs.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/amstrad_cs.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/amstrad_cs.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/amstrad_cs.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/flying_arounder.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/flying_arounder.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/flying_arounder.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/flying_arounder.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/stopped_arounder.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/stopped_arounder.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/stopped_arounder.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/stopped_arounder.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/walking_arounder.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/walking_arounder.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/walking_arounder.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/walking_arounder.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/arounders_door.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/arounders_door.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/arounders_door.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/arounders_door.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/arounders_machine.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/arounders_machine.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/arounders_machine.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/arounders_machine.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/bat.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/bat.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/bat.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/bat.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/batman_bell.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/batman_bell.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/batman_bell.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/batman_bell.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/batman_fire.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/batman_fire.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/batman_fire.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/batman_fire.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/batman.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/batman.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/batman.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/batman.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/bell.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/bell.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/bell.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/bell.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/bin.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/bin.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/bin.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/bin.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/bird.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/bird.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/bird.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/bird.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/breakout.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/breakout.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/breakout.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/breakout.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/bry.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/bry.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/bry.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/bry.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/chip.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/chip.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/chip.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/chip.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/code.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/code.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/code.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/code.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/congo.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/congo.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/congo.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/congo.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/crosshair.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/crosshair.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/crosshair.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/crosshair.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/demon.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/demon.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/demon.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/demon.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/dimallas.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/dimallas.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/dimallas.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/dimallas.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/floppy.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/floppy.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/floppy.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/floppy.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/dong.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/dong.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/dong.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/dong.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/guitar.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/guitar.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/guitar.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/guitar.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/heavy.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/heavy.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/heavy.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/heavy.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/jailer_#1.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/jailer_#1.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/jailer_#1.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/jailer_#1.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/jailer_#2.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/jailer_#2.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/jailer_#2.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/jailer_#2.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/jailer_#3.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/jailer_#3.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/jailer_#3.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/jailer_#3.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/jailbattle_alien.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/jailbattle_alien.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/jailbattle_alien.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/jailbattle_alien.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/jailbattle_human.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/jailbattle_human.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/jailbattle_human.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/jailbattle_human.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/jeannine.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/jeannine.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/jeannine.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/jeannine.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/lamp.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/lamp.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/lamp.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/lamp.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/lord_abad.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/lord_abad.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/lord_abad.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/lord_abad.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/matatunos.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/matatunos.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/matatunos.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/matatunos.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/mummy.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/mummy.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/mummy.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/mummy.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/paco.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/paco.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/paco.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/paco.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/elsa.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/elsa.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/elsa.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/elsa.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/qvoid.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/qvoid.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/qvoid.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/qvoid.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/robot.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/robot.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/robot.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/robot.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/sam.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/sam.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/sam.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/sam.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/shock.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/shock.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/shock.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/shock.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/sigmasua.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/sigmasua.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/sigmasua.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/sigmasua.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/spark.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/spark.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/spark.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/spark.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/special/aerojailer.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/special/aerojailer.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/special/aerojailer.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/special/aerojailer.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/special/arounder.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/special/arounder.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/special/arounder.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/special/arounder.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/special/pepe_rosita_job.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/special/pepe_rosita_job.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/special/pepe_rosita_job.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/special/pepe_rosita_job.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/special/shooting_star.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/special/shooting_star.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/special/shooting_star.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/special/shooting_star.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/spider.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/spider.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/spider.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/spider.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/tree_thing.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/tree_thing.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/tree_thing.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/tree_thing.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/tuno.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/tuno.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/tuno.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/tuno.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/tv_panel.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/tv_panel.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/tv_panel.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/tv_panel.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/tv.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/tv.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/tv.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/tv.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/upv_student.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/upv_student.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/upv_student.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/upv_student.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/wave.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/wave.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/wave.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/wave.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/enemies/z80.ani", t_data);
|
Asset::get()->add(prefix + "/data/enemies/z80.ani", t_data);
|
||||||
asset->add(prefix + "/data/enemies/z80.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/enemies/z80.png", t_bitmap);
|
||||||
|
|
||||||
// Jugador
|
// Jugador
|
||||||
asset->add(prefix + "/data/player/player.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/player/player.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/player/player.ani", t_data);
|
Asset::get()->add(prefix + "/data/player/player.ani", t_data);
|
||||||
asset->add(prefix + "/data/player/player2.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/player/player2.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/player/player2.ani", t_data);
|
Asset::get()->add(prefix + "/data/player/player2.ani", t_data);
|
||||||
asset->add(prefix + "/data/player/player_game_over.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/player/player_game_over.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/player/player_game_over.ani", t_data);
|
Asset::get()->add(prefix + "/data/player/player_game_over.ani", t_data);
|
||||||
|
|
||||||
// Items
|
// Items
|
||||||
asset->add(prefix + "/data/items/items.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/items/items.png", t_bitmap);
|
||||||
|
|
||||||
// Musicas
|
// Musicas
|
||||||
asset->add(prefix + "/data/music/title.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/title.ogg", t_music);
|
||||||
asset->add(prefix + "/data/music/game.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/game.ogg", t_music);
|
||||||
asset->add(prefix + "/data/music/loading_sound1.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/loading_sound1.ogg", t_music);
|
||||||
asset->add(prefix + "/data/music/loading_sound2.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/loading_sound2.ogg", t_music);
|
||||||
asset->add(prefix + "/data/music/loading_sound3.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/loading_sound3.ogg", t_music);
|
||||||
asset->add(prefix + "/data/music/ending1.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/ending1.ogg", t_music);
|
||||||
asset->add(prefix + "/data/music/ending2.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/ending2.ogg", t_music);
|
||||||
asset->add(prefix + "/data/music/game_over.ogg", t_music);
|
Asset::get()->add(prefix + "/data/music/game_over.ogg", t_music);
|
||||||
|
|
||||||
// Efectos de sonido
|
// Efectos de sonido
|
||||||
asset->add(prefix + "/data/sound/item.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/item.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/death.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/death.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump1.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump1.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump2.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump2.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump3.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump3.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump4.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump4.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump5.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump5.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump6.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump6.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump7.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump7.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump8.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump8.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump9.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump9.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump10.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump10.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump11.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump11.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump12.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump12.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump13.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump13.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump14.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump14.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump15.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump15.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump16.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump16.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump17.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump17.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump18.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump18.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump19.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump19.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump20.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump20.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump21.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump21.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump22.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump22.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump23.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump23.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/jump24.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/jump24.wav", t_sound);
|
||||||
asset->add(prefix + "/data/sound/notify.wav", t_sound);
|
Asset::get()->add(prefix + "/data/sound/notify.wav", t_sound);
|
||||||
|
|
||||||
// Logo
|
// Logo
|
||||||
asset->add(prefix + "/data/logo/jailgames.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/logo/jailgames.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/logo/since_1998.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/logo/since_1998.png", t_bitmap);
|
||||||
|
|
||||||
// Intro
|
// Intro
|
||||||
asset->add(prefix + "/data/title/loading_screen_bn.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/title/loading_screen_bn.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/title/loading_screen_color.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/title/loading_screen_color.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/title/loading_screen_bn_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/title/loading_screen_bn_zxarne.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/title/loading_screen_color_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/title/loading_screen_color_zxarne.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/title/loading_screen_color.gif", t_bitmap);
|
Asset::get()->add(prefix + "/data/title/loading_screen_color.gif", t_bitmap);
|
||||||
asset->add(prefix + "/data/title/title_logo.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/title/title_logo.png", t_bitmap);
|
||||||
|
|
||||||
// Ending
|
// Ending
|
||||||
asset->add(prefix + "/data/ending/ending1.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending1.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending1_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending1_zxarne.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending2.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending2.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending2_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending2_zxarne.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending3.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending3.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending3_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending3_zxarne.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending4.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending4.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending4_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending4_zxarne.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending5.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending5.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/ending/ending5_zxarne.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/ending/ending5_zxarne.png", t_bitmap);
|
||||||
|
|
||||||
// Credits
|
// Credits
|
||||||
asset->add(prefix + "/data/credits/shine.png", t_bitmap);
|
Asset::get()->add(prefix + "/data/credits/shine.png", t_bitmap);
|
||||||
asset->add(prefix + "/data/credits/shine.ani", t_bitmap);
|
Asset::get()->add(prefix + "/data/credits/shine.ani", t_bitmap);
|
||||||
|
|
||||||
return asset->check();
|
return Asset::get()->check();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ejecuta la seccion de juego con el logo
|
// Ejecuta la seccion de juego con el logo
|
||||||
@@ -1725,7 +1724,7 @@ void Director::runLogo()
|
|||||||
std::cout << "\n* SECTION: LOGO" << std::endl;
|
std::cout << "\n* SECTION: LOGO" << std::endl;
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto logo = std::make_unique<Logo>(renderer, screen, resource, asset, input, options, section);
|
auto logo = std::make_unique<Logo>(renderer, screen, resource, Asset::get(), input, options, section);
|
||||||
logo->run();
|
logo->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1738,7 +1737,7 @@ void Director::runLoadingScreen()
|
|||||||
std::cout << "\n* SECTION: INTRO" << std::endl;
|
std::cout << "\n* SECTION: INTRO" << std::endl;
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto loadingScreen = std::make_unique<LoadingScreen>(renderer, screen, resource, asset, input, options, section);
|
auto loadingScreen = std::make_unique<LoadingScreen>(renderer, screen, resource, Asset::get(), input, options, section);
|
||||||
loadingScreen->run();
|
loadingScreen->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1755,7 +1754,7 @@ void Director::runTitle()
|
|||||||
JA_PlayMusic(music);
|
JA_PlayMusic(music);
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto title = std::make_unique<Title>(renderer, screen, resource, asset, input, options, section);
|
auto title = std::make_unique<Title>(renderer, screen, resource, input, options, section);
|
||||||
title->run();
|
title->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1768,7 +1767,7 @@ void Director::runCredits()
|
|||||||
std::cout << "\n* SECTION: CREDITS" << std::endl;
|
std::cout << "\n* SECTION: CREDITS" << std::endl;
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto credits = std::make_unique<Credits>(renderer, screen, resource, asset, input, options, section);
|
auto credits = std::make_unique<Credits>(renderer, screen, resource, Asset::get(), input, options, section);
|
||||||
credits->run();
|
credits->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1781,7 +1780,7 @@ void Director::runDemo()
|
|||||||
std::cout << "\n* SECTION: DEMO" << std::endl;
|
std::cout << "\n* SECTION: DEMO" << std::endl;
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto demo = std::make_unique<Demo>(renderer, screen, resource, asset, input, options, section, debug);
|
auto demo = std::make_unique<Demo>(renderer, screen, resource, Asset::get(), input, options, section, debug);
|
||||||
demo->run();
|
demo->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1794,7 +1793,7 @@ void Director::runEnding()
|
|||||||
std::cout << "\n* SECTION: ENDING" << std::endl;
|
std::cout << "\n* SECTION: ENDING" << std::endl;
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto ending = std::make_unique<Ending>(renderer, screen, resource, asset, input, options, section);
|
auto ending = std::make_unique<Ending>(renderer, screen, resource, Asset::get(), input, options, section);
|
||||||
ending->run();
|
ending->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1807,7 +1806,7 @@ void Director::runEnding2()
|
|||||||
std::cout << "\n* SECTION: ENDING2" << std::endl;
|
std::cout << "\n* SECTION: ENDING2" << std::endl;
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto ending2 = std::make_unique<Ending2>(renderer, screen, resource, asset, input, options, section);
|
auto ending2 = std::make_unique<Ending2>(renderer, screen, resource, Asset::get(), input, options, section);
|
||||||
ending2->run();
|
ending2->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1820,7 +1819,7 @@ void Director::runGameOver()
|
|||||||
std::cout << "\n* SECTION: GAME OVER" << std::endl;
|
std::cout << "\n* SECTION: GAME OVER" << std::endl;
|
||||||
}
|
}
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto gameOver = std::make_unique<GameOver>(renderer, screen, resource, asset, input, options, section);
|
auto gameOver = std::make_unique<GameOver>(renderer, screen, resource, Asset::get(), input, options, section);
|
||||||
gameOver->run();
|
gameOver->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
@@ -1834,7 +1833,7 @@ void Director::runGame()
|
|||||||
}
|
}
|
||||||
JA_StopMusic();
|
JA_StopMusic();
|
||||||
loadResources(section);
|
loadResources(section);
|
||||||
auto game = std::make_unique<Game>(renderer, screen, resource, asset, options, input, section, debug);
|
auto game = std::make_unique<Game>(renderer, screen, resource, Asset::get(), options, input, section, debug);
|
||||||
game->run();
|
game->run();
|
||||||
resource->free();
|
resource->free();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ private:
|
|||||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
Screen *screen; // Objeto encargado de dibujar en pantalla
|
Screen *screen; // Objeto encargado de dibujar en pantalla
|
||||||
Resource *resource; // Objeto con los recursos
|
Resource *resource; // Objeto con los recursos
|
||||||
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
|
|
||||||
Input *input; // Objeto Input para gestionar las entradas
|
Input *input; // Objeto Input para gestionar las entradas
|
||||||
Debug *debug; // Objeto para getsionar la información de debug
|
Debug *debug; // Objeto para getsionar la información de debug
|
||||||
struct options_t *options; // Variable con todas las opciones del programa
|
struct options_t *options; // Variable con todas las opciones del programa
|
||||||
|
|||||||
343
source/title.cpp
343
source/title.cpp
@@ -17,65 +17,57 @@
|
|||||||
#include "utils.h" // Para color_t, stringToColor, options_t
|
#include "utils.h" // Para color_t, stringToColor, options_t
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section)
|
Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Input *input, options_t *options, section_t *section)
|
||||||
|
: renderer_(renderer),
|
||||||
|
screen_(screen),
|
||||||
|
resource_(resource),
|
||||||
|
input_(input),
|
||||||
|
options_(options),
|
||||||
|
section_(section)
|
||||||
{
|
{
|
||||||
// Copia la dirección de los objetos
|
|
||||||
this->resource = resource;
|
|
||||||
this->renderer = renderer;
|
|
||||||
this->screen = screen;
|
|
||||||
this->asset = asset;
|
|
||||||
this->input = input;
|
|
||||||
this->options = options;
|
|
||||||
this->section = section;
|
|
||||||
|
|
||||||
// Reserva memoria para los punteros
|
// Reserva memoria para los punteros
|
||||||
eventHandler = new SDL_Event();
|
event_handler_ = new SDL_Event();
|
||||||
cheevos = new Cheevos(screen, options, asset->get("cheevos.bin"));
|
cheevos_ = std::make_unique<Cheevos>(screen, options, Asset::get()->get("cheevos.bin"));
|
||||||
if (options->palette == p_zxspectrum)
|
if (options->palette == p_zxspectrum)
|
||||||
{
|
{
|
||||||
texture = resource->getTexture("title_logo.png");
|
texture_ = resource->getTexture("title_logo.png");
|
||||||
}
|
}
|
||||||
else if (options->palette == p_zxarne)
|
else if (options->palette == p_zxarne)
|
||||||
{
|
{
|
||||||
texture = resource->getTexture("title_logo.png");
|
texture_ = resource->getTexture("title_logo.png");
|
||||||
}
|
}
|
||||||
sprite = new Sprite(0, 0, texture->getWidth(), texture->getHeight(), texture, renderer);
|
sprite_ = new Sprite(0, 0, texture_->getWidth(), texture_->getHeight(), texture_, renderer);
|
||||||
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
|
text_ = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
|
||||||
infoText = new Text(resource->getOffset("subatomic.txt"), resource->getTexture("subatomic.png"), renderer);
|
info_text_ = new Text(resource->getOffset("subatomic.txt"), resource->getTexture("subatomic.png"), renderer);
|
||||||
|
|
||||||
// Crea la textura para los graficos que aparecen en el fondo de la pantalla de titulo
|
// Crea la textura para los graficos que aparecen en el fondo de la pantalla de titulo
|
||||||
bgTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
|
bg_texture_ = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
|
||||||
if (bgTexture == nullptr)
|
if (bg_texture_ == nullptr)
|
||||||
{
|
{
|
||||||
if (options->console)
|
if (options->console)
|
||||||
{
|
{
|
||||||
std::cout << "Error: bgTexture could not be created!\nSDL Error: " << SDL_GetError() << std::endl;
|
std::cout << "Error: bgTexture could not be created!\nSDL Error: " << SDL_GetError() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_SetTextureBlendMode(bgTexture, SDL_BLENDMODE_BLEND);
|
SDL_SetTextureBlendMode(bg_texture_, SDL_BLENDMODE_BLEND);
|
||||||
|
|
||||||
// Carga la surface con los gráficos de la pantalla de carga
|
// Carga la surface con los gráficos de la pantalla de carga
|
||||||
pInit(renderer, 256, 128);
|
pInit(renderer, 256, 128);
|
||||||
loading_screen = pLoadSurface(asset->get("loading_screen_color.gif").c_str());
|
loading_screen_ = pLoadSurface(Asset::get()->get("loading_screen_color.gif").c_str());
|
||||||
pLoadPal(asset->get("loading_screen_color.gif").c_str());
|
pLoadPal(Asset::get()->get("loading_screen_color.gif").c_str());
|
||||||
pSetSource(loading_screen);
|
pSetSource(loading_screen_);
|
||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
counter = 0;
|
state_ = section_->subsection == SUBSECTION_TITLE_WITH_LOADING_SCREEN ? show_loading_screen : show_menu;
|
||||||
state = section->subsection == SUBSECTION_TITLE_WITH_LOADING_SCREEN ? show_loading_screen : show_menu;
|
section_->name = SECTION_TITLE;
|
||||||
section->name = SECTION_TITLE;
|
section_->subsection = 0;
|
||||||
section->subsection = 0;
|
|
||||||
ticks = 0;
|
|
||||||
ticksSpeed = 15;
|
|
||||||
marqueeSpeed = 3;
|
|
||||||
initMarquee();
|
initMarquee();
|
||||||
showCheevos = false;
|
|
||||||
|
|
||||||
// Crea y rellena la textura para mostrar los logros
|
// Crea y rellena la textura para mostrar los logros
|
||||||
createCheevosTexture();
|
createCheevosTexture();
|
||||||
|
|
||||||
// Cambia el color del borde
|
// Cambia el color del borde
|
||||||
screen->setBorderColor(stringToColor(options->palette, "black"));
|
screen_->setBorderColor(stringToColor(options->palette, "black"));
|
||||||
|
|
||||||
// Rellena la textura de fondo con todos los gráficos
|
// Rellena la textura de fondo con todos los gráficos
|
||||||
fillTexture();
|
fillTexture();
|
||||||
@@ -84,60 +76,59 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *
|
|||||||
// Destructor
|
// Destructor
|
||||||
Title::~Title()
|
Title::~Title()
|
||||||
{
|
{
|
||||||
delete cheevos;
|
delete event_handler_;
|
||||||
delete eventHandler;
|
delete sprite_;
|
||||||
delete sprite;
|
delete cheevos_sprite_;
|
||||||
delete cheevosSprite;
|
delete cheevos_texture_;
|
||||||
delete cheevosTexture;
|
delete text_;
|
||||||
delete text;
|
delete info_text_;
|
||||||
delete infoText;
|
pDeleteSurface(loading_screen_);
|
||||||
pDeleteSurface(loading_screen);
|
SDL_DestroyTexture(bg_texture_);
|
||||||
SDL_DestroyTexture(bgTexture);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inicializa la marquesina
|
// Inicializa la marquesina
|
||||||
void Title::initMarquee()
|
void Title::initMarquee()
|
||||||
{
|
{
|
||||||
letters.clear();
|
letters_.clear();
|
||||||
longText = "HEY JAILERS!! IT'S 2022 AND WE'RE STILL ROCKING LIKE IT'S 1998!!! HAVE YOU HEARD IT? JAILGAMES ARE BACK!! YEEESSS BACK!! MORE THAN 10 TITLES ON JAILDOC'S KITCHEN!! THATS A LOOOOOOT OF JAILGAMES, BUT WHICH ONE WILL STRIKE FIRST? THERE IS ALSO A NEW DEVICE TO COME THAT WILL BLOW YOUR MIND WITH JAILGAMES ON THE GO: P.A.C.O. BUT WAIT! WHAT'S THAT BEAUTY I'M SEEING RIGHT OVER THERE?? OOOH THAT TINY MINIASCII IS PURE LOVE!! I WANT TO LICK EVERY BYTE OF IT!! OH SHIT! AND DON'T FORGET TO BRING BACK THOSE OLD AND FAT MS-DOS JAILGAMES TO GITHUB TO KEEP THEM ALIVE!! WHAT WILL BE THE NEXT JAILDOC RELEASE? WHAT WILL BE THE NEXT PROJECT TO COME ALIVE?? OH BABY WE DON'T KNOW BUT HERE YOU CAN FIND THE ANSWER, YOU JUST HAVE TO COMPLETE JAILDOCTOR'S DILEMMA ... COULD YOU?";
|
long_text_ = "HEY JAILERS!! IT'S 2022 AND WE'RE STILL ROCKING LIKE IT'S 1998!!! HAVE YOU HEARD IT? JAILGAMES ARE BACK!! YEEESSS BACK!! MORE THAN 10 TITLES ON JAILDOC'S KITCHEN!! THATS A LOOOOOOT OF JAILGAMES, BUT WHICH ONE WILL STRIKE FIRST? THERE IS ALSO A NEW DEVICE TO COME THAT WILL BLOW YOUR MIND WITH JAILGAMES ON THE GO: P.A.C.O. BUT WAIT! WHAT'S THAT BEAUTY I'M SEEING RIGHT OVER THERE?? OOOH THAT TINY MINIASCII IS PURE LOVE!! I WANT TO LICK EVERY BYTE OF IT!! OH SHIT! AND DON'T FORGET TO BRING BACK THOSE OLD AND FAT MS-DOS JAILGAMES TO GITHUB TO KEEP THEM ALIVE!! WHAT WILL BE THE NEXT JAILDOC RELEASE? WHAT WILL BE THE NEXT PROJECT TO COME ALIVE?? OH BABY WE DON'T KNOW BUT HERE YOU CAN FIND THE ANSWER, YOU JUST HAVE TO COMPLETE JAILDOCTOR'S DILEMMA ... COULD YOU?";
|
||||||
for (int i = 0; i < (int)longText.length(); ++i)
|
for (int i = 0; i < (int)long_text_.length(); ++i)
|
||||||
{
|
{
|
||||||
letter_t l;
|
letter_t l;
|
||||||
l.letter = longText.substr(i, 1);
|
l.letter = long_text_.substr(i, 1);
|
||||||
l.x = 256;
|
l.x = 256;
|
||||||
l.enabled = false;
|
l.enabled = false;
|
||||||
letters.push_back(l);
|
letters_.push_back(l);
|
||||||
}
|
}
|
||||||
letters[0].enabled = true;
|
letters_[0].enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba el manejador de eventos
|
// Comprueba el manejador de eventos
|
||||||
void Title::checkEvents()
|
void Title::checkEvents()
|
||||||
{
|
{
|
||||||
// Comprueba los eventos que hay en la cola
|
// Comprueba los eventos que hay en la cola
|
||||||
while (SDL_PollEvent(eventHandler) != 0)
|
while (SDL_PollEvent(event_handler_) != 0)
|
||||||
{
|
{
|
||||||
// Evento de salida de la aplicación
|
// Evento de salida de la aplicación
|
||||||
if (eventHandler->type == SDL_QUIT)
|
if (event_handler_->type == SDL_QUIT)
|
||||||
{
|
{
|
||||||
section->name = SECTION_QUIT;
|
section_->name = SECTION_QUIT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Solo se comprueban estas teclas si no está activo el menu de logros
|
// Solo se comprueban estas teclas si no está activo el menu de logros
|
||||||
if (eventHandler->type == SDL_KEYDOWN)
|
if (event_handler_->type == SDL_KEYDOWN)
|
||||||
{
|
{
|
||||||
if (!showCheevos)
|
if (!show_cheevos_)
|
||||||
{
|
{
|
||||||
switch (eventHandler->key.keysym.scancode)
|
switch (event_handler_->key.keysym.scancode)
|
||||||
{
|
{
|
||||||
case SDL_SCANCODE_1:
|
case SDL_SCANCODE_1:
|
||||||
section->name = SECTION_GAME;
|
section_->name = SECTION_GAME;
|
||||||
section->subsection = 0;
|
section_->subsection = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_SCANCODE_2:
|
case SDL_SCANCODE_2:
|
||||||
showCheevos = true;
|
show_cheevos_ = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -151,70 +142,70 @@ void Title::checkEvents()
|
|||||||
// Comprueba las entradas
|
// Comprueba las entradas
|
||||||
void Title::checkInput()
|
void Title::checkInput()
|
||||||
{
|
{
|
||||||
if (showCheevos)
|
if (show_cheevos_)
|
||||||
{
|
{
|
||||||
if (input->checkInput(input_down, REPEAT_TRUE))
|
if (input_->checkInput(input_down, REPEAT_TRUE))
|
||||||
{
|
{
|
||||||
moveCheevosList(1);
|
moveCheevosList(1);
|
||||||
}
|
}
|
||||||
else if (input->checkInput(input_up, REPEAT_TRUE))
|
else if (input_->checkInput(input_up, REPEAT_TRUE))
|
||||||
{
|
{
|
||||||
moveCheevosList(0);
|
moveCheevosList(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input->checkInput(input_exit, REPEAT_FALSE))
|
if (input_->checkInput(input_exit, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
if (showCheevos)
|
if (show_cheevos_)
|
||||||
{
|
{
|
||||||
hideCheevosList();
|
hideCheevosList();
|
||||||
counter = 0;
|
counter_ = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
section->name = SECTION_QUIT;
|
section_->name = SECTION_QUIT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
|
else if (input_->checkInput(input_toggle_border, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
screen->toggleBorder();
|
screen_->toggleBorder();
|
||||||
resource->reLoadTextures();
|
resource_->reLoadTextures();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input->checkInput(input_toggle_videomode, REPEAT_FALSE))
|
else if (input_->checkInput(input_toggle_videomode, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
screen->toggleVideoMode();
|
screen_->toggleVideoMode();
|
||||||
resource->reLoadTextures();
|
resource_->reLoadTextures();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input->checkInput(input_toggle_shaders, REPEAT_FALSE))
|
else if (input_->checkInput(input_toggle_shaders, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
screen->toggleShaders();
|
screen_->toggleShaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input->checkInput(input_window_dec_size, REPEAT_FALSE))
|
else if (input_->checkInput(input_window_dec_size, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
screen->decWindowSize();
|
screen_->decWindowSize();
|
||||||
resource->reLoadTextures();
|
resource_->reLoadTextures();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input->checkInput(input_window_inc_size, REPEAT_FALSE))
|
else if (input_->checkInput(input_window_inc_size, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
screen->incWindowSize();
|
screen_->incWindowSize();
|
||||||
resource->reLoadTextures();
|
resource_->reLoadTextures();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input->checkInput(input_toggle_palette, REPEAT_FALSE))
|
else if (input_->checkInput(input_toggle_palette, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
switchPalette();
|
switchPalette();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input->checkInput(input_accept, REPEAT_FALSE) || input->checkInput(input_pause, REPEAT_FALSE))
|
else if (input_->checkInput(input_accept, REPEAT_FALSE) || input_->checkInput(input_pause, REPEAT_FALSE))
|
||||||
{
|
{
|
||||||
if (state == show_loading_screen)
|
if (state_ == show_loading_screen)
|
||||||
{
|
{
|
||||||
state = fade_loading_screen;
|
state_ = fade_loading_screen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,28 +213,28 @@ void Title::checkInput()
|
|||||||
// Actualiza la marquesina
|
// Actualiza la marquesina
|
||||||
void Title::updateMarquee()
|
void Title::updateMarquee()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < (int)letters.size(); ++i)
|
for (int i = 0; i < (int)letters_.size(); ++i)
|
||||||
{
|
{
|
||||||
if (letters[i].enabled)
|
if (letters_[i].enabled)
|
||||||
{
|
{
|
||||||
letters[i].x -= marqueeSpeed;
|
letters_[i].x -= marquee_speed_;
|
||||||
if (letters[i].x < -10)
|
if (letters_[i].x < -10)
|
||||||
{
|
{
|
||||||
letters[i].enabled = false;
|
letters_[i].enabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (i > 0 && letters[i - 1].x < 256 && letters[i - 1].enabled)
|
if (i > 0 && letters_[i - 1].x < 256 && letters_[i - 1].enabled)
|
||||||
{
|
{
|
||||||
letters[i].enabled = true;
|
letters_[i].enabled = true;
|
||||||
letters[i].x = letters[i - 1].x + text->lenght(letters[i - 1].letter) + 1;
|
letters_[i].x = letters_[i - 1].x + text_->lenght(letters_[i - 1].letter) + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba si ha terminado la marquesina y la reinicia
|
// Comprueba si ha terminado la marquesina y la reinicia
|
||||||
if (letters[letters.size() - 1].x < -10)
|
if (letters_[letters_.size() - 1].x < -10)
|
||||||
{ // Inicializa la marquesina
|
{ // Inicializa la marquesina
|
||||||
initMarquee();
|
initMarquee();
|
||||||
}
|
}
|
||||||
@@ -252,11 +243,11 @@ void Title::updateMarquee()
|
|||||||
// Dibuja la marquesina
|
// Dibuja la marquesina
|
||||||
void Title::renderMarquee()
|
void Title::renderMarquee()
|
||||||
{
|
{
|
||||||
for (auto l : letters)
|
for (auto l : letters_)
|
||||||
{
|
{
|
||||||
if (l.enabled)
|
if (l.enabled)
|
||||||
{
|
{
|
||||||
text->writeColored(l.x, 184, l.letter, stringToColor(options->palette, "white"));
|
text_->writeColored(l.x, 184, l.letter, stringToColor(options_->palette, "white"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -265,44 +256,44 @@ void Title::renderMarquee()
|
|||||||
void Title::renderInfo()
|
void Title::renderInfo()
|
||||||
{
|
{
|
||||||
const std::string version = "v.1.09";
|
const std::string version = "v.1.09";
|
||||||
const int x = GAMECANVAS_WIDTH - infoText->lenght(version) - 1;
|
const int x = GAMECANVAS_WIDTH - info_text_->lenght(version) - 1;
|
||||||
infoText->write(x, 1, version);
|
info_text_->write(x, 1, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza las variables
|
// Actualiza las variables
|
||||||
void Title::update()
|
void Title::update()
|
||||||
{
|
{
|
||||||
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
|
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
|
||||||
if (SDL_GetTicks() - ticks > ticksSpeed)
|
if (SDL_GetTicks() - ticks_ > ticks_speed_)
|
||||||
{
|
{
|
||||||
// Actualiza el contador de ticks
|
// Actualiza el contador de ticks
|
||||||
ticks = SDL_GetTicks();
|
ticks_ = SDL_GetTicks();
|
||||||
|
|
||||||
// Comprueba las entradas
|
// Comprueba las entradas
|
||||||
checkInput();
|
checkInput();
|
||||||
|
|
||||||
// Actualiza las notificaciones
|
// Actualiza las notificaciones
|
||||||
screen->updateNotifier();
|
screen_->updateNotifier();
|
||||||
|
|
||||||
// Incrementa el contador
|
// Incrementa el contador
|
||||||
counter++;
|
counter_++;
|
||||||
|
|
||||||
switch (state)
|
switch (state_)
|
||||||
{
|
{
|
||||||
case show_loading_screen:
|
case show_loading_screen:
|
||||||
if (counter == 500)
|
if (counter_ == 500)
|
||||||
{
|
{
|
||||||
counter = 0;
|
counter_ = 0;
|
||||||
state = fade_loading_screen;
|
state_ = fade_loading_screen;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case fade_loading_screen:
|
case fade_loading_screen:
|
||||||
if (counter % 4 == 0)
|
if (counter_ % 4 == 0)
|
||||||
if (pFadePal())
|
if (pFadePal())
|
||||||
{
|
{
|
||||||
counter = 0;
|
counter_ = 0;
|
||||||
state = show_menu;
|
state_ = show_menu;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -311,12 +302,12 @@ void Title::update()
|
|||||||
updateMarquee();
|
updateMarquee();
|
||||||
|
|
||||||
// Si el contador alcanza cierto valor, termina la seccion
|
// Si el contador alcanza cierto valor, termina la seccion
|
||||||
if (counter == 2200)
|
if (counter_ == 2200)
|
||||||
{
|
{
|
||||||
if (!showCheevos)
|
if (!show_cheevos_)
|
||||||
{
|
{
|
||||||
section->name = SECTION_CREDITS;
|
section_->name = SECTION_CREDITS;
|
||||||
section->subsection = 0;
|
section_->subsection = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -331,21 +322,21 @@ void Title::update()
|
|||||||
void Title::render()
|
void Title::render()
|
||||||
{
|
{
|
||||||
// Prepara para empezar a dibujar en la textura de juego
|
// Prepara para empezar a dibujar en la textura de juego
|
||||||
screen->start();
|
screen_->start();
|
||||||
screen->clean(stringToColor(options->palette, "black"));
|
screen_->clean(stringToColor(options_->palette, "black"));
|
||||||
|
|
||||||
if (state == show_menu)
|
if (state_ == show_menu)
|
||||||
{
|
{
|
||||||
// Dibuja la textura de fondo
|
// Dibuja la textura de fondo
|
||||||
SDL_RenderCopy(renderer, bgTexture, nullptr, nullptr);
|
SDL_RenderCopy(renderer_, bg_texture_, nullptr, nullptr);
|
||||||
|
|
||||||
// Dibuja la marquesina
|
// Dibuja la marquesina
|
||||||
renderMarquee();
|
renderMarquee();
|
||||||
|
|
||||||
// Dibuja la información de logros
|
// Dibuja la información de logros
|
||||||
if (showCheevos)
|
if (show_cheevos_)
|
||||||
{
|
{
|
||||||
cheevosSprite->render();
|
cheevos_sprite_->render();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -353,20 +344,20 @@ void Title::render()
|
|||||||
// Dibuja la pantalla de carga
|
// Dibuja la pantalla de carga
|
||||||
pCls(4);
|
pCls(4);
|
||||||
pBlit(0, 0, 0, 0, 256, 128);
|
pBlit(0, 0, 0, 0, 256, 128);
|
||||||
pFlip(renderer);
|
pFlip(renderer_);
|
||||||
|
|
||||||
// Dibuja el logo del título
|
// Dibuja el logo del título
|
||||||
sprite->render();
|
sprite_->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vuelca el contenido del renderizador en pantalla
|
// Vuelca el contenido del renderizador en pantalla
|
||||||
screen->render();
|
screen_->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bucle para el logo del juego
|
// Bucle para el logo del juego
|
||||||
void Title::run()
|
void Title::run()
|
||||||
{
|
{
|
||||||
while (section->name == SECTION_TITLE)
|
while (section_->name == SECTION_TITLE)
|
||||||
{
|
{
|
||||||
update();
|
update();
|
||||||
checkEvents();
|
checkEvents();
|
||||||
@@ -378,112 +369,112 @@ void Title::run()
|
|||||||
void Title::reLoadTextures()
|
void Title::reLoadTextures()
|
||||||
{
|
{
|
||||||
// Carga la textura adecuada
|
// Carga la textura adecuada
|
||||||
if (options->palette == p_zxspectrum)
|
if (options_->palette == p_zxspectrum)
|
||||||
{
|
{
|
||||||
texture = resource->getTexture("loading_screen_color.png");
|
texture_ = resource_->getTexture("loading_screen_color.png");
|
||||||
}
|
}
|
||||||
else if (options->palette == p_zxarne)
|
else if (options_->palette == p_zxarne)
|
||||||
{
|
{
|
||||||
texture = resource->getTexture("loading_screen_color_zxarne.png");
|
texture_ = resource_->getTexture("loading_screen_color_zxarne.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
texture->reLoad();
|
texture_->reLoad();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cambia la paleta
|
// Cambia la paleta
|
||||||
void Title::switchPalette()
|
void Title::switchPalette()
|
||||||
{
|
{
|
||||||
if (options->palette == p_zxspectrum)
|
if (options_->palette == p_zxspectrum)
|
||||||
{
|
{
|
||||||
options->palette = p_zxarne;
|
options_->palette = p_zxarne;
|
||||||
sprite->setTexture(resource->getTexture("loading_screen_color_zxarne.png"));
|
sprite_->setTexture(resource_->getTexture("loading_screen_color_zxarne.png"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
options->palette = p_zxspectrum;
|
options_->palette = p_zxspectrum;
|
||||||
sprite->setTexture(resource->getTexture("loading_screen_color.png"));
|
sprite_->setTexture(resource_->getTexture("loading_screen_color.png"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cambia el color del borde
|
// Cambia el color del borde
|
||||||
screen->setBorderColor(stringToColor(options->palette, "bright_blue"));
|
screen_->setBorderColor(stringToColor(options_->palette, "bright_blue"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Desplaza la lista de logros
|
// Desplaza la lista de logros
|
||||||
void Title::moveCheevosList(int direction)
|
void Title::moveCheevosList(int direction)
|
||||||
{
|
{
|
||||||
const int speed = 2;
|
const int speed = 2;
|
||||||
cheevosTextureView.y = direction == 0 ? cheevosTextureView.y - speed : cheevosTextureView.y + speed;
|
cheevos_texture_view_.y = direction == 0 ? cheevos_texture_view_.y - speed : cheevos_texture_view_.y + speed;
|
||||||
|
|
||||||
const int bottom = cheevosTexture->getHeight() - cheevosTextureView.h;
|
const int bottom = cheevos_texture_->getHeight() - cheevos_texture_view_.h;
|
||||||
if (cheevosTextureView.y < 0)
|
if (cheevos_texture_view_.y < 0)
|
||||||
{
|
{
|
||||||
cheevosTextureView.y = 0;
|
cheevos_texture_view_.y = 0;
|
||||||
}
|
}
|
||||||
else if (cheevosTextureView.y > bottom)
|
else if (cheevos_texture_view_.y > bottom)
|
||||||
{
|
{
|
||||||
cheevosTextureView.y = bottom;
|
cheevos_texture_view_.y = bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
cheevosSprite->setSpriteClip(cheevosTextureView);
|
cheevos_sprite_->setSpriteClip(cheevos_texture_view_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rellena la textura de fondo con todos los gráficos
|
// Rellena la textura de fondo con todos los gráficos
|
||||||
void Title::fillTexture()
|
void Title::fillTexture()
|
||||||
{
|
{
|
||||||
// Coloca el puntero del renderizador sobre la textura
|
// Coloca el puntero del renderizador sobre la textura
|
||||||
SDL_SetRenderTarget(renderer, bgTexture);
|
SDL_SetRenderTarget(renderer_, bg_texture_);
|
||||||
|
|
||||||
// Rellena la textura de color
|
// Rellena la textura de color
|
||||||
const color_t c = stringToColor(options->palette, "black");
|
const color_t c = stringToColor(options_->palette, "black");
|
||||||
SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0xFF);
|
SDL_SetRenderDrawColor(renderer_, c.r, c.g, c.b, 0xFF);
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer_);
|
||||||
|
|
||||||
// Pinta el gráfico del titulo a partir del sprite
|
// Pinta el gráfico del titulo a partir del sprite
|
||||||
sprite->render();
|
sprite_->render();
|
||||||
|
|
||||||
// Escribe el texto en la textura
|
// Escribe el texto en la textura
|
||||||
const color_t textColor = stringToColor(options->palette, "green");
|
const color_t textColor = stringToColor(options_->palette, "green");
|
||||||
const int textSize = text->getCharacterSize();
|
const int textSize = text_->getCharacterSize();
|
||||||
text->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 11 * textSize, "1.PLAY", 1, textColor);
|
text_->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 11 * textSize, "1.PLAY", 1, textColor);
|
||||||
text->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 13 * textSize, "2.ACHIEVEMENTS", 1, textColor);
|
text_->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 13 * textSize, "2.ACHIEVEMENTS", 1, textColor);
|
||||||
text->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 15 * textSize, "3.REDEFINE KEYS", 1, textColor);
|
text_->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 15 * textSize, "3.REDEFINE KEYS", 1, textColor);
|
||||||
text->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 20 * textSize, "ESC.EXIT GAME", 1, textColor);
|
text_->writeDX(TXT_CENTER | TXT_COLOR, PLAY_AREA_CENTER_X, 20 * textSize, "ESC.EXIT GAME", 1, textColor);
|
||||||
|
|
||||||
// Devuelve el puntero del renderizador a su sitio
|
// Devuelve el puntero del renderizador a su sitio
|
||||||
SDL_SetRenderTarget(renderer, nullptr);
|
SDL_SetRenderTarget(renderer_, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Crea y rellena la textura para mostrar los logros
|
// Crea y rellena la textura para mostrar los logros
|
||||||
void Title::createCheevosTexture()
|
void Title::createCheevosTexture()
|
||||||
{
|
{
|
||||||
// Crea la textura con el listado de logros
|
// Crea la textura con el listado de logros
|
||||||
const std::vector<cheevos_t> cheevosList = cheevos->list();
|
const std::vector<cheevos_t> cheevosList = cheevos_->list();
|
||||||
const int cheevosTextureWidth = 200;
|
const int cheevosTextureWidth = 200;
|
||||||
const int cheevosTextureViewHeight = 110;
|
const int cheevosTextureViewHeight = 110;
|
||||||
const int cheevosTexturePosY = 73;
|
const int cheevosTexturePosY = 73;
|
||||||
const int cheevosPadding = 10;
|
const int cheevosPadding = 10;
|
||||||
const int cheevoHeight = cheevosPadding + (infoText->getCharacterSize() * 2) + 1;
|
const int cheevoHeight = cheevosPadding + (info_text_->getCharacterSize() * 2) + 1;
|
||||||
const int cheevosTextureHeight = (cheevoHeight * cheevosList.size()) + 2 + infoText->getCharacterSize() + 8;
|
const int cheevosTextureHeight = (cheevoHeight * cheevosList.size()) + 2 + info_text_->getCharacterSize() + 8;
|
||||||
cheevosTexture = new Texture(renderer);
|
cheevos_texture_ = new Texture(renderer_);
|
||||||
cheevosTexture->createBlank(renderer, cheevosTextureWidth, cheevosTextureHeight, SDL_TEXTUREACCESS_TARGET);
|
cheevos_texture_->createBlank(renderer_, cheevosTextureWidth, cheevosTextureHeight, SDL_TEXTUREACCESS_TARGET);
|
||||||
cheevosTexture->setAsRenderTarget(renderer);
|
cheevos_texture_->setAsRenderTarget(renderer_);
|
||||||
cheevosTexture->setBlendMode(SDL_BLENDMODE_BLEND);
|
cheevos_texture_->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||||
|
|
||||||
// Rellena la textura con color sólido
|
// Rellena la textura con color sólido
|
||||||
const color_t cheevosBGColor = stringToColor(options->palette, "black");
|
const color_t cheevosBGColor = stringToColor(options_->palette, "black");
|
||||||
SDL_SetRenderDrawColor(renderer, cheevosBGColor.r, cheevosBGColor.g, cheevosBGColor.b, 0xFF);
|
SDL_SetRenderDrawColor(renderer_, cheevosBGColor.r, cheevosBGColor.g, cheevosBGColor.b, 0xFF);
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer_);
|
||||||
|
|
||||||
// Escribe la lista de logros en la textura
|
// Escribe la lista de logros en la textura
|
||||||
const std::string cheevosOwner = "LOCAL ACHIEVEMENTS";
|
const std::string cheevosOwner = "LOCAL ACHIEVEMENTS";
|
||||||
const std::string cheevosListCaption = cheevosOwner + " (" + std::to_string(cheevos->unlocked()) + " / " + std::to_string(cheevos->count()) + ")";
|
const std::string cheevosListCaption = cheevosOwner + " (" + std::to_string(cheevos_->unlocked()) + " / " + std::to_string(cheevos_->count()) + ")";
|
||||||
int pos = 2;
|
int pos = 2;
|
||||||
infoText->writeDX(TXT_CENTER | TXT_COLOR, cheevosTexture->getWidth() / 2, pos, cheevosListCaption, 1, stringToColor(options->palette, "bright_green"));
|
info_text_->writeDX(TXT_CENTER | TXT_COLOR, cheevos_texture_->getWidth() / 2, pos, cheevosListCaption, 1, stringToColor(options_->palette, "bright_green"));
|
||||||
pos += infoText->getCharacterSize();
|
pos += info_text_->getCharacterSize();
|
||||||
const color_t cheevoLockedColor = stringToColor(options->palette, "white");
|
const color_t cheevoLockedColor = stringToColor(options_->palette, "white");
|
||||||
const color_t cheevoUnlockedColor = stringToColor(options->palette, "bright_green");
|
const color_t cheevoUnlockedColor = stringToColor(options_->palette, "bright_green");
|
||||||
color_t cheevoColor;
|
color_t cheevoColor;
|
||||||
SDL_SetRenderDrawColor(renderer, cheevoLockedColor.r, cheevoLockedColor.g, cheevoLockedColor.b, 0xFF);
|
SDL_SetRenderDrawColor(renderer_, cheevoLockedColor.r, cheevoLockedColor.g, cheevoLockedColor.b, 0xFF);
|
||||||
const int lineX1 = (cheevosTextureWidth / 7) * 3;
|
const int lineX1 = (cheevosTextureWidth / 7) * 3;
|
||||||
const int lineX2 = lineX1 + ((cheevosTextureWidth / 7) * 1);
|
const int lineX2 = lineX1 + ((cheevosTextureWidth / 7) * 1);
|
||||||
|
|
||||||
@@ -492,23 +483,23 @@ void Title::createCheevosTexture()
|
|||||||
cheevoColor = cheevo.completed ? cheevoUnlockedColor : cheevoLockedColor;
|
cheevoColor = cheevo.completed ? cheevoUnlockedColor : cheevoLockedColor;
|
||||||
pos += cheevosPadding;
|
pos += cheevosPadding;
|
||||||
int half = cheevosPadding / 2;
|
int half = cheevosPadding / 2;
|
||||||
SDL_RenderDrawLine(renderer, lineX1, pos - half - 1, lineX2, pos - half - 1);
|
SDL_RenderDrawLine(renderer_, lineX1, pos - half - 1, lineX2, pos - half - 1);
|
||||||
infoText->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.caption, 1, cheevoColor);
|
info_text_->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.caption, 1, cheevoColor);
|
||||||
pos += infoText->getCharacterSize() + 1;
|
pos += info_text_->getCharacterSize() + 1;
|
||||||
infoText->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.description, 1, cheevoColor);
|
info_text_->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.description, 1, cheevoColor);
|
||||||
pos += infoText->getCharacterSize();
|
pos += info_text_->getCharacterSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Crea el sprite para el listado de logros
|
// Crea el sprite para el listado de logros
|
||||||
cheevosSprite = new Sprite((GAMECANVAS_WIDTH - cheevosTexture->getWidth()) / 2, cheevosTexturePosY, cheevosTexture->getWidth(), cheevosTexture->getHeight(), cheevosTexture, renderer);
|
cheevos_sprite_ = new Sprite((GAMECANVAS_WIDTH - cheevos_texture_->getWidth()) / 2, cheevosTexturePosY, cheevos_texture_->getWidth(), cheevos_texture_->getHeight(), cheevos_texture_, renderer_);
|
||||||
cheevosTextureView = {0, 0, cheevosTexture->getWidth(), cheevosTextureViewHeight};
|
cheevos_texture_view_ = {0, 0, cheevos_texture_->getWidth(), cheevosTextureViewHeight};
|
||||||
cheevosSprite->setSpriteClip(cheevosTextureView);
|
cheevos_sprite_->setSpriteClip(cheevos_texture_view_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Oculta la lista de logros
|
// Oculta la lista de logros
|
||||||
void Title::hideCheevosList()
|
void Title::hideCheevosList()
|
||||||
{
|
{
|
||||||
showCheevos = false;
|
show_cheevos_ = false;
|
||||||
cheevosTextureView.y = 0;
|
cheevos_texture_view_.y = 0;
|
||||||
cheevosSprite->setSpriteClip(cheevosTextureView);
|
cheevos_sprite_->setSpriteClip(cheevos_texture_view_);
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,8 @@
|
|||||||
#include <SDL2/SDL_stdinc.h> // Para Uint32
|
#include <SDL2/SDL_stdinc.h> // Para Uint32
|
||||||
#include <string> // Para basic_string, string
|
#include <string> // Para basic_string, string
|
||||||
#include <vector> // Para vector
|
#include <vector> // Para vector
|
||||||
#include "paleta.h" // Para jSurface
|
#include <memory>
|
||||||
|
#include "paleta.h" // Para jSurface
|
||||||
class Asset;
|
class Asset;
|
||||||
class Cheevos;
|
class Cheevos;
|
||||||
class Input;
|
class Input;
|
||||||
@@ -36,34 +37,33 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Objetos y punteros
|
// Objetos y punteros
|
||||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
SDL_Renderer *renderer_; // El renderizador de la ventana
|
||||||
Screen *screen; // Objeto encargado de dibujar en pantalla
|
Screen *screen_; // Objeto encargado de dibujar en pantalla
|
||||||
Resource *resource; // Objeto con los recursos
|
Resource *resource_; // Objeto con los recursos
|
||||||
Asset *asset; // Objeto con los ficheros de recursos
|
Input *input_; // Objeto pata gestionar la entrada
|
||||||
Input *input; // Objeto pata gestionar la entrada
|
SDL_Event *event_handler_; // Manejador de eventos
|
||||||
SDL_Event *eventHandler; // Manejador de eventos
|
Texture *texture_; // Textura con los graficos
|
||||||
Texture *texture; // Textura con los graficos
|
Sprite *sprite_; // Sprite para manejar la textura
|
||||||
Sprite *sprite; // Sprite para manejar la textura
|
SDL_Texture *bg_texture_; // Textura para dibujar el fondo de la pantalla
|
||||||
SDL_Texture *bgTexture; // Textura para dibujar el fondo de la pantalla
|
Text *text_; // Objeto para escribir texto en pantalla
|
||||||
Text *text; // Objeto para escribir texto en pantalla
|
Text *info_text_; // Objeto para escribir texto en pantalla
|
||||||
Text *infoText; // Objeto para escribir texto en pantalla
|
options_t *options_; // Puntero a las opciones del juego
|
||||||
options_t *options; // Puntero a las opciones del juego
|
Texture *cheevos_texture_; // Textura con la lista de logros
|
||||||
Texture *cheevosTexture; // Textura con lo lista de logros
|
Sprite *cheevos_sprite_; // Sprite para manejar la textura con la lista de logros
|
||||||
Sprite *cheevosSprite; // Sprite para manejar la textura con la lista de logros
|
std::unique_ptr<Cheevos> cheevos_; // Objeto encargado de gestionar los logros del juego
|
||||||
Cheevos *cheevos; // Objeto encargado de gestionar los logros del juego
|
section_t *section_; // Estado del bucle principal para saber si continua o se sale
|
||||||
section_t *section; // Estado del bucle principal para saber si continua o se sale
|
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
int counter; // Contador
|
int counter_ = 0; // Contador
|
||||||
std::string longText; // Texto que aparece en la parte inferior del titulo
|
std::string long_text_; // Texto que aparece en la parte inferior del titulo
|
||||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa
|
||||||
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
Uint32 ticks_speed_ = 15; // Velocidad a la que se repiten los bucles del programa
|
||||||
std::vector<letter_t> letters; // Vector con las letras de la marquesina
|
std::vector<letter_t> letters_; // Vector con las letras de la marquesina
|
||||||
int marqueeSpeed; // Velocidad de desplazamiento de la marquesina
|
int marquee_speed_ = 3; // Velocidad de desplazamiento de la marquesina
|
||||||
bool showCheevos; // Indica si se muestra por pantalla el listado de logros
|
bool show_cheevos_ = false; // Indica si se muestra por pantalla el listado de logros
|
||||||
SDL_Rect cheevosTextureView; // Zona visible de la textura con el listado de logros
|
SDL_Rect cheevos_texture_view_; // Zona visible de la textura con el listado de logros
|
||||||
states_e state; // Estado en el que se encuentra el bucle principal
|
states_e state_; // Estado en el que se encuentra el bucle principal
|
||||||
jSurface loading_screen; // Surface con los gráficos de la pantalla de carga
|
jSurface loading_screen_; // Surface con los gráficos de la pantalla de carga
|
||||||
|
|
||||||
// Actualiza las variables
|
// Actualiza las variables
|
||||||
void update();
|
void update();
|
||||||
@@ -109,7 +109,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section);
|
Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Input *input, options_t *options, section_t *section);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Title();
|
~Title();
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include <filesystem> // Para path
|
||||||
#include <stdlib.h> // Para free, malloc, abs
|
#include <stdlib.h> // Para free, malloc, abs
|
||||||
#include <cmath> // Para round, abs
|
#include <cmath> // Para round, abs
|
||||||
|
|
||||||
@@ -587,3 +588,16 @@ std::string toUpper(std::string str)
|
|||||||
free(upper);
|
free(upper);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Obtiene el nombre de un fichero a partir de una ruta completa
|
||||||
|
std::string getFileName(const std::string &path)
|
||||||
|
{
|
||||||
|
return std::filesystem::path(path).filename().string();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Obtiene la ruta eliminando el nombre del fichero
|
||||||
|
std::string getPath(const std::string &full_path)
|
||||||
|
{
|
||||||
|
std::filesystem::path path(full_path);
|
||||||
|
return path.parent_path().string();
|
||||||
|
}
|
||||||
@@ -194,3 +194,9 @@ std::string toLower(std::string str);
|
|||||||
|
|
||||||
// Convierte una cadena a mayúsculas
|
// Convierte una cadena a mayúsculas
|
||||||
std::string toUpper(std::string str);
|
std::string toUpper(std::string str);
|
||||||
|
|
||||||
|
// Obtiene el nombre de un fichero a partir de una ruta
|
||||||
|
std::string getFileName(const std::string &path);
|
||||||
|
|
||||||
|
// Obtiene la ruta eliminando el nombre del fichero
|
||||||
|
std::string getPath(const std::string &full_path);
|
||||||
Reference in New Issue
Block a user