forked from jaildesigner-jailgames/jaildoctors_dilemma
singletoning
This commit is contained in:
@@ -4,25 +4,38 @@
|
||||
#include <stddef.h> // Para size_t
|
||||
#include <iostream> // Para basic_ostream, operator<<, cout, endl
|
||||
|
||||
// Constructor
|
||||
Asset::Asset(std::string executablePath)
|
||||
// [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado
|
||||
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("\\/"));
|
||||
longestName = 0;
|
||||
verbose = true;
|
||||
Asset::asset_ = new Asset(executable_path);
|
||||
}
|
||||
|
||||
// [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
|
||||
void Asset::add(std::string file, enum assetType type, bool required, bool absolute)
|
||||
{
|
||||
item_t temp;
|
||||
temp.file = absolute ? file : executablePath + file;
|
||||
temp.file = absolute ? file : executable_path_ + file;
|
||||
temp.type = type;
|
||||
temp.required = required;
|
||||
fileList.push_back(temp);
|
||||
|
||||
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
|
||||
@@ -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;
|
||||
}
|
||||
@@ -51,11 +64,11 @@ bool Asset::check()
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
if (verbose)
|
||||
if (verbose_)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -76,7 +89,7 @@ bool Asset::check()
|
||||
// Si hay ficheros de ese tipo, comprueba si existen
|
||||
if (any)
|
||||
{
|
||||
if (verbose)
|
||||
if (verbose_)
|
||||
{
|
||||
std::cout << "\n>> " << getTypeName(type).c_str() << " FILES" << std::endl;
|
||||
}
|
||||
@@ -92,7 +105,7 @@ bool Asset::check()
|
||||
}
|
||||
|
||||
// Resultado
|
||||
if (verbose)
|
||||
if (verbose_)
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
@@ -126,11 +139,11 @@ bool Asset::checkFile(std::string path)
|
||||
SDL_RWclose(file);
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
if (verbose_)
|
||||
{
|
||||
std::cout.setf(std::ios::left, std::ios::adjustfield);
|
||||
std::cout << "Checking file: ";
|
||||
std::cout.width(longestName + 2);
|
||||
std::cout.width(longest_name_ + 2);
|
||||
std::cout.fill('.');
|
||||
std::cout << filename + " ";
|
||||
std::cout << " [" + result + "]" << std::endl;
|
||||
@@ -189,5 +202,5 @@ std::string Asset::getTypeName(int type)
|
||||
// Establece si ha de mostrar texto por pantalla
|
||||
void Asset::setVerbose(bool value)
|
||||
{
|
||||
verbose = value;
|
||||
verbose_ = value;
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <string> // Para string
|
||||
#include <vector> // Para vector
|
||||
#include "utils.h"
|
||||
|
||||
enum assetType
|
||||
{
|
||||
@@ -21,20 +22,22 @@ enum assetType
|
||||
class Asset
|
||||
{
|
||||
private:
|
||||
// [SINGLETON] Objeto asset privado
|
||||
static Asset *asset_;
|
||||
|
||||
// Estructura para definir un item
|
||||
struct item_t
|
||||
{
|
||||
std::string file; // Ruta del fichero desde la raiz del directorio
|
||||
enum assetType type; // Indica el tipo de recurso
|
||||
bool required; // Indica si es un fichero que debe de existir
|
||||
// bool absolute; // Indica si la ruta que se ha proporcionado es una ruta absoluta
|
||||
};
|
||||
|
||||
// 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::string executablePath; // Ruta al ejecutable
|
||||
bool verbose; // Indica si ha de mostrar información por pantalla
|
||||
std::string executable_path_; // Ruta al ejecutable
|
||||
bool verbose_ = true; // Indica si ha de mostrar información por pantalla
|
||||
|
||||
// Comprueba que existe un fichero
|
||||
bool checkFile(std::string executablePath);
|
||||
@@ -42,9 +45,22 @@ private:
|
||||
// Devuelve el nombre del tipo de recurso
|
||||
std::string getTypeName(int type);
|
||||
|
||||
public:
|
||||
// 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
|
||||
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
|
||||
section->name = SECTION_TITLE;
|
||||
#endif
|
||||
Asset::init(argv[0]); // Crea el objeto que controla los ficheros de recursos
|
||||
|
||||
// Crea e inicializa las opciones del programa
|
||||
initOptions();
|
||||
@@ -69,8 +70,7 @@ Director::Director(int argc, const char *argv[])
|
||||
#endif
|
||||
|
||||
// Crea el objeto que controla los ficheros de recursos
|
||||
asset = new Asset(executablePath);
|
||||
asset->setVerbose(options->console);
|
||||
Asset::get()->setVerbose(options->console);
|
||||
|
||||
// Si falta algún fichero no inicia el programa
|
||||
if (!setFileList())
|
||||
@@ -88,13 +88,13 @@ Director::Director(int argc, const char *argv[])
|
||||
initJailAudio();
|
||||
|
||||
// Crea los objetos
|
||||
resource = new Resource(renderer, asset, options);
|
||||
input = new Input(asset->get("gamecontrollerdb.txt"));
|
||||
resource = new Resource(renderer, Asset::get(), options);
|
||||
input = new Input(Asset::get()->get("gamecontrollerdb.txt"));
|
||||
initInput();
|
||||
screen = new Screen(window, renderer, asset, options);
|
||||
screen = new Screen(window, renderer, Asset::get(), options);
|
||||
screen->setBorderColor(borderColor);
|
||||
debug = new Debug(renderer, screen, asset);
|
||||
music = JA_LoadMusic(asset->get("title.ogg").c_str());
|
||||
debug = new Debug(renderer, screen, Asset::get());
|
||||
music = JA_LoadMusic(Asset::get()->get("title.ogg").c_str());
|
||||
}
|
||||
|
||||
Director::~Director()
|
||||
@@ -105,7 +105,6 @@ Director::~Director()
|
||||
// Libera la memoria
|
||||
delete section;
|
||||
delete options;
|
||||
delete asset;
|
||||
delete input;
|
||||
delete screen;
|
||||
delete debug;
|
||||
@@ -217,7 +216,7 @@ bool Director::loadConfig()
|
||||
|
||||
// Variables para manejar el fichero
|
||||
std::string line;
|
||||
std::ifstream file(asset->get("config.txt"));
|
||||
std::ifstream file(Asset::get()->get("config.txt"));
|
||||
|
||||
// Si el fichero se puede abrir
|
||||
if (file.good())
|
||||
@@ -305,20 +304,20 @@ bool Director::saveConfig()
|
||||
bool success = true;
|
||||
|
||||
// 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 (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
|
||||
{
|
||||
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
|
||||
|
||||
// Texto
|
||||
asset->add(prefix + "/data/font/smb2.png", t_font);
|
||||
asset->add(prefix + "/data/font/smb2.txt", t_font);
|
||||
asset->add(prefix + "/data/font/debug.png", t_font);
|
||||
asset->add(prefix + "/data/font/debug.txt", t_font);
|
||||
asset->add(prefix + "/data/font/gauntlet.png", t_font);
|
||||
asset->add(prefix + "/data/font/gauntlet.txt", t_font);
|
||||
asset->add(prefix + "/data/font/subatomic.png", t_font);
|
||||
asset->add(prefix + "/data/font/subatomic.txt", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/smb2.png", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/smb2.txt", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/debug.png", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/debug.txt", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/gauntlet.png", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/gauntlet.txt", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/subatomic.png", t_font);
|
||||
Asset::get()->add(prefix + "/data/font/subatomic.txt", t_font);
|
||||
|
||||
// Shaders
|
||||
asset->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_192.glsl", t_data);
|
||||
Asset::get()->add(prefix + "/data/shaders/crtpi_240.glsl", t_data);
|
||||
|
||||
// Datos
|
||||
asset->add(prefix + "/data/input/gamecontrollerdb.txt", t_data);
|
||||
Asset::get()->add(prefix + "/data/input/gamecontrollerdb.txt", t_data);
|
||||
|
||||
// Ficheros de sistema
|
||||
asset->add(systemFolder + "/config.txt", t_data, false, true);
|
||||
asset->add(systemFolder + "/stats_buffer.csv", t_data, false, true);
|
||||
asset->add(systemFolder + "/stats.csv", t_data, false, true);
|
||||
asset->add(systemFolder + "/cheevos.bin", t_data, false, true);
|
||||
Asset::get()->add(systemFolder + "/config.txt", t_data, false, true);
|
||||
Asset::get()->add(systemFolder + "/stats_buffer.csv", t_data, false, true);
|
||||
Asset::get()->add(systemFolder + "/stats.csv", t_data, false, true);
|
||||
Asset::get()->add(systemFolder + "/cheevos.bin", t_data, false, true);
|
||||
|
||||
// Notificaciones
|
||||
asset->add(prefix + "/data/notifications/notify.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/notifications/notify.png", t_bitmap);
|
||||
|
||||
// Habitaciones
|
||||
asset->add(prefix + "/data/room/01.room", t_room);
|
||||
asset->add(prefix + "/data/room/02.room", t_room);
|
||||
asset->add(prefix + "/data/room/03.room", t_room);
|
||||
asset->add(prefix + "/data/room/04.room", t_room);
|
||||
asset->add(prefix + "/data/room/05.room", t_room);
|
||||
asset->add(prefix + "/data/room/06.room", t_room);
|
||||
asset->add(prefix + "/data/room/07.room", t_room);
|
||||
asset->add(prefix + "/data/room/08.room", t_room);
|
||||
asset->add(prefix + "/data/room/09.room", t_room);
|
||||
asset->add(prefix + "/data/room/10.room", t_room);
|
||||
asset->add(prefix + "/data/room/11.room", t_room);
|
||||
asset->add(prefix + "/data/room/12.room", t_room);
|
||||
asset->add(prefix + "/data/room/13.room", t_room);
|
||||
asset->add(prefix + "/data/room/14.room", t_room);
|
||||
asset->add(prefix + "/data/room/15.room", t_room);
|
||||
asset->add(prefix + "/data/room/16.room", t_room);
|
||||
asset->add(prefix + "/data/room/17.room", t_room);
|
||||
asset->add(prefix + "/data/room/18.room", t_room);
|
||||
asset->add(prefix + "/data/room/19.room", t_room);
|
||||
asset->add(prefix + "/data/room/20.room", t_room);
|
||||
asset->add(prefix + "/data/room/21.room", t_room);
|
||||
asset->add(prefix + "/data/room/22.room", t_room);
|
||||
asset->add(prefix + "/data/room/23.room", t_room);
|
||||
asset->add(prefix + "/data/room/24.room", t_room);
|
||||
asset->add(prefix + "/data/room/25.room", t_room);
|
||||
asset->add(prefix + "/data/room/26.room", t_room);
|
||||
asset->add(prefix + "/data/room/27.room", t_room);
|
||||
asset->add(prefix + "/data/room/28.room", t_room);
|
||||
asset->add(prefix + "/data/room/29.room", t_room);
|
||||
asset->add(prefix + "/data/room/30.room", t_room);
|
||||
asset->add(prefix + "/data/room/31.room", t_room);
|
||||
asset->add(prefix + "/data/room/32.room", t_room);
|
||||
asset->add(prefix + "/data/room/33.room", t_room);
|
||||
asset->add(prefix + "/data/room/34.room", t_room);
|
||||
asset->add(prefix + "/data/room/35.room", t_room);
|
||||
asset->add(prefix + "/data/room/36.room", t_room);
|
||||
asset->add(prefix + "/data/room/37.room", t_room);
|
||||
asset->add(prefix + "/data/room/38.room", t_room);
|
||||
asset->add(prefix + "/data/room/39.room", t_room);
|
||||
asset->add(prefix + "/data/room/40.room", t_room);
|
||||
asset->add(prefix + "/data/room/41.room", t_room);
|
||||
asset->add(prefix + "/data/room/42.room", t_room);
|
||||
asset->add(prefix + "/data/room/43.room", t_room);
|
||||
asset->add(prefix + "/data/room/44.room", t_room);
|
||||
asset->add(prefix + "/data/room/45.room", t_room);
|
||||
asset->add(prefix + "/data/room/46.room", t_room);
|
||||
asset->add(prefix + "/data/room/47.room", t_room);
|
||||
asset->add(prefix + "/data/room/48.room", t_room);
|
||||
asset->add(prefix + "/data/room/49.room", t_room);
|
||||
asset->add(prefix + "/data/room/50.room", t_room);
|
||||
asset->add(prefix + "/data/room/51.room", t_room);
|
||||
asset->add(prefix + "/data/room/52.room", t_room);
|
||||
asset->add(prefix + "/data/room/53.room", t_room);
|
||||
asset->add(prefix + "/data/room/54.room", t_room);
|
||||
asset->add(prefix + "/data/room/55.room", t_room);
|
||||
asset->add(prefix + "/data/room/56.room", t_room);
|
||||
asset->add(prefix + "/data/room/57.room", t_room);
|
||||
asset->add(prefix + "/data/room/58.room", t_room);
|
||||
asset->add(prefix + "/data/room/59.room", t_room);
|
||||
asset->add(prefix + "/data/room/60.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/01.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/02.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/03.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/04.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/05.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/06.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/07.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/08.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/09.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/10.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/11.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/12.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/13.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/14.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/15.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/16.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/17.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/18.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/19.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/20.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/21.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/22.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/23.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/24.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/25.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/26.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/27.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/28.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/29.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/30.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/31.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/32.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/33.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/34.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/35.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/36.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/37.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/38.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/39.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/40.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/41.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/42.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/43.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/44.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/45.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/46.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/47.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/48.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/49.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/50.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/51.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/52.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/53.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/54.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/55.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/56.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/57.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/58.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/59.room", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/60.room", t_room);
|
||||
|
||||
// Tilemaps
|
||||
asset->add(prefix + "/data/room/01.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/02.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/03.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/04.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/05.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/06.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/07.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/08.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/09.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/10.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/11.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/12.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/13.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/14.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/15.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/16.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/17.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/18.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/19.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/20.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/21.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/22.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/23.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/24.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/25.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/26.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/27.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/28.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/29.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/30.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/31.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/32.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/33.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/34.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/35.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/36.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/37.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/38.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/39.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/40.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/41.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/42.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/43.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/44.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/45.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/46.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/47.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/48.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/49.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/50.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/51.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/52.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/53.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/54.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/55.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/56.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/57.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/58.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/59.tmx", t_room);
|
||||
asset->add(prefix + "/data/room/60.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/01.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/02.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/03.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/04.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/05.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/06.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/07.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/08.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/09.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/10.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/11.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/12.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/13.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/14.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/15.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/16.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/17.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/18.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/19.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/20.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/21.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/22.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/23.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/24.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/25.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/26.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/27.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/28.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/29.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/30.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/31.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/32.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/33.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/34.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/35.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/36.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/37.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/38.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/39.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/40.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/41.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/42.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/43.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/44.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/45.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/46.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/47.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/48.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/49.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/50.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/51.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/52.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/53.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/54.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/55.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/56.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/57.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/58.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/59.tmx", t_room);
|
||||
Asset::get()->add(prefix + "/data/room/60.tmx", t_room);
|
||||
|
||||
// Tilesets
|
||||
asset->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.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/tilesets/standard_zxarne.png", t_bitmap);
|
||||
|
||||
// Enemigos
|
||||
asset->add(prefix + "/data/enemies/abad_bell.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/abad_bell.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/abad.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/abad.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/amstrad_cs.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/amstrad_cs.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/flying_arounder.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/flying_arounder.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/stopped_arounder.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/stopped_arounder.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/walking_arounder.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/walking_arounder.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/arounders_door.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/arounders_door.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/arounders_machine.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/arounders_machine.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/bat.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/bat.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/batman_bell.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/batman_bell.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/batman_fire.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/batman_fire.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/batman.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/batman.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/bell.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/bell.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/bin.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/bin.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/bird.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/bird.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/breakout.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/breakout.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/bry.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/bry.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/chip.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/chip.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/code.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/code.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/congo.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/congo.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/crosshair.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/crosshair.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/demon.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/demon.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/dimallas.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/dimallas.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/floppy.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/floppy.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/dong.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/dong.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/guitar.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/guitar.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/heavy.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/heavy.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/jailer_#1.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/jailer_#1.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/jailer_#2.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/jailer_#2.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/jailer_#3.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/jailer_#3.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/jailbattle_alien.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/jailbattle_alien.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/jailbattle_human.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/jailbattle_human.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/jeannine.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/jeannine.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/lamp.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/lamp.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/lord_abad.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/lord_abad.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/matatunos.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/matatunos.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/mummy.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/mummy.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/paco.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/paco.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/elsa.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/elsa.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/qvoid.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/qvoid.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/robot.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/robot.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/sam.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/sam.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/shock.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/shock.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/sigmasua.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/sigmasua.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/spark.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/spark.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/special/aerojailer.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/special/aerojailer.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/special/arounder.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/special/arounder.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/special/pepe_rosita_job.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/special/pepe_rosita_job.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/special/shooting_star.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/special/shooting_star.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/spider.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/spider.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/tree_thing.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/tree_thing.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/tuno.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/tuno.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/tv_panel.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/tv_panel.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/tv.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/tv.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/upv_student.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/upv_student.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/wave.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/wave.png", t_bitmap);
|
||||
asset->add(prefix + "/data/enemies/z80.ani", t_data);
|
||||
asset->add(prefix + "/data/enemies/z80.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/abad_bell.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/abad_bell.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/abad.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/abad.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/amstrad_cs.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/amstrad_cs.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/flying_arounder.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/flying_arounder.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/stopped_arounder.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/stopped_arounder.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/walking_arounder.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/walking_arounder.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/arounders_door.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/arounders_door.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/arounders_machine.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/arounders_machine.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/bat.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/bat.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/batman_bell.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/batman_bell.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/batman_fire.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/batman_fire.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/batman.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/batman.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/bell.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/bell.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/bin.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/bin.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/bird.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/bird.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/breakout.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/breakout.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/bry.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/bry.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/chip.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/chip.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/code.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/code.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/congo.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/congo.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/crosshair.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/crosshair.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/demon.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/demon.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/dimallas.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/dimallas.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/floppy.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/floppy.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/dong.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/dong.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/guitar.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/guitar.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/heavy.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/heavy.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailer_#1.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailer_#1.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailer_#2.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailer_#2.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailer_#3.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailer_#3.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailbattle_alien.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailbattle_alien.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailbattle_human.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/jailbattle_human.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/jeannine.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/jeannine.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/lamp.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/lamp.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/lord_abad.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/lord_abad.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/matatunos.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/matatunos.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/mummy.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/mummy.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/paco.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/paco.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/elsa.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/elsa.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/qvoid.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/qvoid.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/robot.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/robot.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/sam.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/sam.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/shock.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/shock.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/sigmasua.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/sigmasua.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/spark.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/spark.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/aerojailer.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/aerojailer.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/arounder.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/arounder.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/pepe_rosita_job.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/pepe_rosita_job.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/shooting_star.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/special/shooting_star.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/spider.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/spider.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/tree_thing.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/tree_thing.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/tuno.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/tuno.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/tv_panel.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/tv_panel.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/tv.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/tv.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/upv_student.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/upv_student.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/wave.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/wave.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/enemies/z80.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/enemies/z80.png", t_bitmap);
|
||||
|
||||
// Jugador
|
||||
asset->add(prefix + "/data/player/player.png", t_bitmap);
|
||||
asset->add(prefix + "/data/player/player.ani", t_data);
|
||||
asset->add(prefix + "/data/player/player2.png", t_bitmap);
|
||||
asset->add(prefix + "/data/player/player2.ani", t_data);
|
||||
asset->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.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/player/player.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/player/player2.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/player/player2.ani", t_data);
|
||||
Asset::get()->add(prefix + "/data/player/player_game_over.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/player/player_game_over.ani", t_data);
|
||||
|
||||
// Items
|
||||
asset->add(prefix + "/data/items/items.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/items/items.png", t_bitmap);
|
||||
|
||||
// Musicas
|
||||
asset->add(prefix + "/data/music/title.ogg", t_music);
|
||||
asset->add(prefix + "/data/music/game.ogg", t_music);
|
||||
asset->add(prefix + "/data/music/loading_sound1.ogg", t_music);
|
||||
asset->add(prefix + "/data/music/loading_sound2.ogg", t_music);
|
||||
asset->add(prefix + "/data/music/loading_sound3.ogg", t_music);
|
||||
asset->add(prefix + "/data/music/ending1.ogg", t_music);
|
||||
asset->add(prefix + "/data/music/ending2.ogg", t_music);
|
||||
asset->add(prefix + "/data/music/game_over.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/title.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/game.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/loading_sound1.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/loading_sound2.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/loading_sound3.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/ending1.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/ending2.ogg", t_music);
|
||||
Asset::get()->add(prefix + "/data/music/game_over.ogg", t_music);
|
||||
|
||||
// Efectos de sonido
|
||||
asset->add(prefix + "/data/sound/item.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/death.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump1.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump2.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump3.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump4.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump5.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump6.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump7.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump8.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump9.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump10.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump11.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump12.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump13.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump14.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump15.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump16.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump17.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump18.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump19.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump20.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump21.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump22.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump23.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/jump24.wav", t_sound);
|
||||
asset->add(prefix + "/data/sound/notify.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/item.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/death.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump1.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump2.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump3.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump4.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump5.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump6.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump7.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump8.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump9.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump10.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump11.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump12.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump13.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump14.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump15.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump16.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump17.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump18.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump19.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump20.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump21.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump22.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump23.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/jump24.wav", t_sound);
|
||||
Asset::get()->add(prefix + "/data/sound/notify.wav", t_sound);
|
||||
|
||||
// Logo
|
||||
asset->add(prefix + "/data/logo/jailgames.png", t_bitmap);
|
||||
asset->add(prefix + "/data/logo/since_1998.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/logo/jailgames.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/logo/since_1998.png", t_bitmap);
|
||||
|
||||
// Intro
|
||||
asset->add(prefix + "/data/title/loading_screen_bn.png", t_bitmap);
|
||||
asset->add(prefix + "/data/title/loading_screen_color.png", t_bitmap);
|
||||
asset->add(prefix + "/data/title/loading_screen_bn_zxarne.png", t_bitmap);
|
||||
asset->add(prefix + "/data/title/loading_screen_color_zxarne.png", t_bitmap);
|
||||
asset->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/loading_screen_bn.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/title/loading_screen_color.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/title/loading_screen_bn_zxarne.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/title/loading_screen_color_zxarne.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/title/loading_screen_color.gif", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/title/title_logo.png", t_bitmap);
|
||||
|
||||
// Ending
|
||||
asset->add(prefix + "/data/ending/ending1.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending1_zxarne.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending2.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending2_zxarne.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending3.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending3_zxarne.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending4.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending4_zxarne.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending5.png", t_bitmap);
|
||||
asset->add(prefix + "/data/ending/ending5_zxarne.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending1.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending1_zxarne.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending2.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending2_zxarne.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending3.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending3_zxarne.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending4.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending4_zxarne.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending5.png", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/ending/ending5_zxarne.png", t_bitmap);
|
||||
|
||||
// Credits
|
||||
asset->add(prefix + "/data/credits/shine.png", t_bitmap);
|
||||
asset->add(prefix + "/data/credits/shine.ani", t_bitmap);
|
||||
Asset::get()->add(prefix + "/data/credits/shine.png", 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
|
||||
@@ -1725,7 +1724,7 @@ void Director::runLogo()
|
||||
std::cout << "\n* SECTION: LOGO" << std::endl;
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1738,7 +1737,7 @@ void Director::runLoadingScreen()
|
||||
std::cout << "\n* SECTION: INTRO" << std::endl;
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1755,7 +1754,7 @@ void Director::runTitle()
|
||||
JA_PlayMusic(music);
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1768,7 +1767,7 @@ void Director::runCredits()
|
||||
std::cout << "\n* SECTION: CREDITS" << std::endl;
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1781,7 +1780,7 @@ void Director::runDemo()
|
||||
std::cout << "\n* SECTION: DEMO" << std::endl;
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1794,7 +1793,7 @@ void Director::runEnding()
|
||||
std::cout << "\n* SECTION: ENDING" << std::endl;
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1807,7 +1806,7 @@ void Director::runEnding2()
|
||||
std::cout << "\n* SECTION: ENDING2" << std::endl;
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1820,7 +1819,7 @@ void Director::runGameOver()
|
||||
std::cout << "\n* SECTION: GAME OVER" << std::endl;
|
||||
}
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
@@ -1834,7 +1833,7 @@ void Director::runGame()
|
||||
}
|
||||
JA_StopMusic();
|
||||
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();
|
||||
resource->free();
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ private:
|
||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||
Screen *screen; // Objeto encargado de dibujar en pantalla
|
||||
Resource *resource; // Objeto con los recursos
|
||||
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
|
||||
Input *input; // Objeto Input para gestionar las entradas
|
||||
Debug *debug; // Objeto para getsionar la información de debug
|
||||
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
|
||||
|
||||
// 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
|
||||
eventHandler = new SDL_Event();
|
||||
cheevos = new Cheevos(screen, options, asset->get("cheevos.bin"));
|
||||
event_handler_ = new SDL_Event();
|
||||
cheevos_ = std::make_unique<Cheevos>(screen, options, Asset::get()->get("cheevos.bin"));
|
||||
if (options->palette == p_zxspectrum)
|
||||
{
|
||||
texture = resource->getTexture("title_logo.png");
|
||||
texture_ = resource->getTexture("title_logo.png");
|
||||
}
|
||||
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);
|
||||
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
|
||||
infoText = new Text(resource->getOffset("subatomic.txt"), resource->getTexture("subatomic.png"), renderer);
|
||||
sprite_ = new Sprite(0, 0, texture_->getWidth(), texture_->getHeight(), texture_, renderer);
|
||||
text_ = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.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
|
||||
bgTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
|
||||
if (bgTexture == nullptr)
|
||||
bg_texture_ = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
|
||||
if (bg_texture_ == nullptr)
|
||||
{
|
||||
if (options->console)
|
||||
{
|
||||
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
|
||||
pInit(renderer, 256, 128);
|
||||
loading_screen = pLoadSurface(asset->get("loading_screen_color.gif").c_str());
|
||||
pLoadPal(asset->get("loading_screen_color.gif").c_str());
|
||||
pSetSource(loading_screen);
|
||||
loading_screen_ = pLoadSurface(Asset::get()->get("loading_screen_color.gif").c_str());
|
||||
pLoadPal(Asset::get()->get("loading_screen_color.gif").c_str());
|
||||
pSetSource(loading_screen_);
|
||||
|
||||
// Inicializa variables
|
||||
counter = 0;
|
||||
state = section->subsection == SUBSECTION_TITLE_WITH_LOADING_SCREEN ? show_loading_screen : show_menu;
|
||||
section->name = SECTION_TITLE;
|
||||
section->subsection = 0;
|
||||
ticks = 0;
|
||||
ticksSpeed = 15;
|
||||
marqueeSpeed = 3;
|
||||
state_ = section_->subsection == SUBSECTION_TITLE_WITH_LOADING_SCREEN ? show_loading_screen : show_menu;
|
||||
section_->name = SECTION_TITLE;
|
||||
section_->subsection = 0;
|
||||
initMarquee();
|
||||
showCheevos = false;
|
||||
|
||||
// Crea y rellena la textura para mostrar los logros
|
||||
createCheevosTexture();
|
||||
|
||||
// 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
|
||||
fillTexture();
|
||||
@@ -84,60 +76,59 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *
|
||||
// Destructor
|
||||
Title::~Title()
|
||||
{
|
||||
delete cheevos;
|
||||
delete eventHandler;
|
||||
delete sprite;
|
||||
delete cheevosSprite;
|
||||
delete cheevosTexture;
|
||||
delete text;
|
||||
delete infoText;
|
||||
pDeleteSurface(loading_screen);
|
||||
SDL_DestroyTexture(bgTexture);
|
||||
delete event_handler_;
|
||||
delete sprite_;
|
||||
delete cheevos_sprite_;
|
||||
delete cheevos_texture_;
|
||||
delete text_;
|
||||
delete info_text_;
|
||||
pDeleteSurface(loading_screen_);
|
||||
SDL_DestroyTexture(bg_texture_);
|
||||
}
|
||||
|
||||
// Inicializa la marquesina
|
||||
void Title::initMarquee()
|
||||
{
|
||||
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?";
|
||||
for (int i = 0; i < (int)longText.length(); ++i)
|
||||
letters_.clear();
|
||||
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)long_text_.length(); ++i)
|
||||
{
|
||||
letter_t l;
|
||||
l.letter = longText.substr(i, 1);
|
||||
l.letter = long_text_.substr(i, 1);
|
||||
l.x = 256;
|
||||
l.enabled = false;
|
||||
letters.push_back(l);
|
||||
letters_.push_back(l);
|
||||
}
|
||||
letters[0].enabled = true;
|
||||
letters_[0].enabled = true;
|
||||
}
|
||||
|
||||
// Comprueba el manejador de eventos
|
||||
void Title::checkEvents()
|
||||
{
|
||||
// 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
|
||||
if (eventHandler->type == SDL_QUIT)
|
||||
if (event_handler_->type == SDL_QUIT)
|
||||
{
|
||||
section->name = SECTION_QUIT;
|
||||
section_->name = SECTION_QUIT;
|
||||
break;
|
||||
}
|
||||
|
||||
// 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:
|
||||
section->name = SECTION_GAME;
|
||||
section->subsection = 0;
|
||||
section_->name = SECTION_GAME;
|
||||
section_->subsection = 0;
|
||||
break;
|
||||
|
||||
case SDL_SCANCODE_2:
|
||||
showCheevos = true;
|
||||
show_cheevos_ = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -151,70 +142,70 @@ void Title::checkEvents()
|
||||
// Comprueba las entradas
|
||||
void Title::checkInput()
|
||||
{
|
||||
if (showCheevos)
|
||||
if (show_cheevos_)
|
||||
{
|
||||
if (input->checkInput(input_down, REPEAT_TRUE))
|
||||
if (input_->checkInput(input_down, REPEAT_TRUE))
|
||||
{
|
||||
moveCheevosList(1);
|
||||
}
|
||||
else if (input->checkInput(input_up, REPEAT_TRUE))
|
||||
else if (input_->checkInput(input_up, REPEAT_TRUE))
|
||||
{
|
||||
moveCheevosList(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (input->checkInput(input_exit, REPEAT_FALSE))
|
||||
if (input_->checkInput(input_exit, REPEAT_FALSE))
|
||||
{
|
||||
if (showCheevos)
|
||||
if (show_cheevos_)
|
||||
{
|
||||
hideCheevosList();
|
||||
counter = 0;
|
||||
counter_ = 0;
|
||||
}
|
||||
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();
|
||||
resource->reLoadTextures();
|
||||
screen_->toggleBorder();
|
||||
resource_->reLoadTextures();
|
||||
}
|
||||
|
||||
else if (input->checkInput(input_toggle_videomode, REPEAT_FALSE))
|
||||
else if (input_->checkInput(input_toggle_videomode, REPEAT_FALSE))
|
||||
{
|
||||
screen->toggleVideoMode();
|
||||
resource->reLoadTextures();
|
||||
screen_->toggleVideoMode();
|
||||
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();
|
||||
resource->reLoadTextures();
|
||||
screen_->decWindowSize();
|
||||
resource_->reLoadTextures();
|
||||
}
|
||||
|
||||
else if (input->checkInput(input_window_inc_size, REPEAT_FALSE))
|
||||
else if (input_->checkInput(input_window_inc_size, REPEAT_FALSE))
|
||||
{
|
||||
screen->incWindowSize();
|
||||
resource->reLoadTextures();
|
||||
screen_->incWindowSize();
|
||||
resource_->reLoadTextures();
|
||||
}
|
||||
|
||||
else if (input->checkInput(input_toggle_palette, REPEAT_FALSE))
|
||||
else if (input_->checkInput(input_toggle_palette, REPEAT_FALSE))
|
||||
{
|
||||
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
|
||||
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;
|
||||
if (letters[i].x < -10)
|
||||
letters_[i].x -= marquee_speed_;
|
||||
if (letters_[i].x < -10)
|
||||
{
|
||||
letters[i].enabled = false;
|
||||
letters_[i].enabled = false;
|
||||
}
|
||||
}
|
||||
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].x = letters[i - 1].x + text->lenght(letters[i - 1].letter) + 1;
|
||||
letters_[i].enabled = true;
|
||||
letters_[i].x = letters_[i - 1].x + text_->lenght(letters_[i - 1].letter) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
initMarquee();
|
||||
}
|
||||
@@ -252,11 +243,11 @@ void Title::updateMarquee()
|
||||
// Dibuja la marquesina
|
||||
void Title::renderMarquee()
|
||||
{
|
||||
for (auto l : letters)
|
||||
for (auto l : letters_)
|
||||
{
|
||||
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()
|
||||
{
|
||||
const std::string version = "v.1.09";
|
||||
const int x = GAMECANVAS_WIDTH - infoText->lenght(version) - 1;
|
||||
infoText->write(x, 1, version);
|
||||
const int x = GAMECANVAS_WIDTH - info_text_->lenght(version) - 1;
|
||||
info_text_->write(x, 1, version);
|
||||
}
|
||||
|
||||
// Actualiza las variables
|
||||
void Title::update()
|
||||
{
|
||||
// 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
|
||||
ticks = SDL_GetTicks();
|
||||
ticks_ = SDL_GetTicks();
|
||||
|
||||
// Comprueba las entradas
|
||||
checkInput();
|
||||
|
||||
// Actualiza las notificaciones
|
||||
screen->updateNotifier();
|
||||
screen_->updateNotifier();
|
||||
|
||||
// Incrementa el contador
|
||||
counter++;
|
||||
counter_++;
|
||||
|
||||
switch (state)
|
||||
switch (state_)
|
||||
{
|
||||
case show_loading_screen:
|
||||
if (counter == 500)
|
||||
if (counter_ == 500)
|
||||
{
|
||||
counter = 0;
|
||||
state = fade_loading_screen;
|
||||
counter_ = 0;
|
||||
state_ = fade_loading_screen;
|
||||
}
|
||||
break;
|
||||
|
||||
case fade_loading_screen:
|
||||
if (counter % 4 == 0)
|
||||
if (counter_ % 4 == 0)
|
||||
if (pFadePal())
|
||||
{
|
||||
counter = 0;
|
||||
state = show_menu;
|
||||
counter_ = 0;
|
||||
state_ = show_menu;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -311,12 +302,12 @@ void Title::update()
|
||||
updateMarquee();
|
||||
|
||||
// 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->subsection = 0;
|
||||
section_->name = SECTION_CREDITS;
|
||||
section_->subsection = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -331,21 +322,21 @@ void Title::update()
|
||||
void Title::render()
|
||||
{
|
||||
// Prepara para empezar a dibujar en la textura de juego
|
||||
screen->start();
|
||||
screen->clean(stringToColor(options->palette, "black"));
|
||||
screen_->start();
|
||||
screen_->clean(stringToColor(options_->palette, "black"));
|
||||
|
||||
if (state == show_menu)
|
||||
if (state_ == show_menu)
|
||||
{
|
||||
// Dibuja la textura de fondo
|
||||
SDL_RenderCopy(renderer, bgTexture, nullptr, nullptr);
|
||||
SDL_RenderCopy(renderer_, bg_texture_, nullptr, nullptr);
|
||||
|
||||
// Dibuja la marquesina
|
||||
renderMarquee();
|
||||
|
||||
// Dibuja la información de logros
|
||||
if (showCheevos)
|
||||
if (show_cheevos_)
|
||||
{
|
||||
cheevosSprite->render();
|
||||
cheevos_sprite_->render();
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -353,20 +344,20 @@ void Title::render()
|
||||
// Dibuja la pantalla de carga
|
||||
pCls(4);
|
||||
pBlit(0, 0, 0, 0, 256, 128);
|
||||
pFlip(renderer);
|
||||
pFlip(renderer_);
|
||||
|
||||
// Dibuja el logo del título
|
||||
sprite->render();
|
||||
sprite_->render();
|
||||
}
|
||||
|
||||
// Vuelca el contenido del renderizador en pantalla
|
||||
screen->render();
|
||||
screen_->render();
|
||||
}
|
||||
|
||||
// Bucle para el logo del juego
|
||||
void Title::run()
|
||||
{
|
||||
while (section->name == SECTION_TITLE)
|
||||
while (section_->name == SECTION_TITLE)
|
||||
{
|
||||
update();
|
||||
checkEvents();
|
||||
@@ -378,112 +369,112 @@ void Title::run()
|
||||
void Title::reLoadTextures()
|
||||
{
|
||||
// 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
|
||||
void Title::switchPalette()
|
||||
{
|
||||
if (options->palette == p_zxspectrum)
|
||||
if (options_->palette == p_zxspectrum)
|
||||
{
|
||||
options->palette = p_zxarne;
|
||||
sprite->setTexture(resource->getTexture("loading_screen_color_zxarne.png"));
|
||||
options_->palette = p_zxarne;
|
||||
sprite_->setTexture(resource_->getTexture("loading_screen_color_zxarne.png"));
|
||||
}
|
||||
else
|
||||
{
|
||||
options->palette = p_zxspectrum;
|
||||
sprite->setTexture(resource->getTexture("loading_screen_color.png"));
|
||||
options_->palette = p_zxspectrum;
|
||||
sprite_->setTexture(resource_->getTexture("loading_screen_color.png"));
|
||||
}
|
||||
|
||||
// Cambia el color del borde
|
||||
screen->setBorderColor(stringToColor(options->palette, "bright_blue"));
|
||||
screen_->setBorderColor(stringToColor(options_->palette, "bright_blue"));
|
||||
}
|
||||
|
||||
// Desplaza la lista de logros
|
||||
void Title::moveCheevosList(int direction)
|
||||
{
|
||||
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;
|
||||
if (cheevosTextureView.y < 0)
|
||||
const int bottom = cheevos_texture_->getHeight() - cheevos_texture_view_.h;
|
||||
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
|
||||
void Title::fillTexture()
|
||||
{
|
||||
// Coloca el puntero del renderizador sobre la textura
|
||||
SDL_SetRenderTarget(renderer, bgTexture);
|
||||
SDL_SetRenderTarget(renderer_, bg_texture_);
|
||||
|
||||
// Rellena la textura de color
|
||||
const color_t c = stringToColor(options->palette, "black");
|
||||
SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0xFF);
|
||||
SDL_RenderClear(renderer);
|
||||
const color_t c = stringToColor(options_->palette, "black");
|
||||
SDL_SetRenderDrawColor(renderer_, c.r, c.g, c.b, 0xFF);
|
||||
SDL_RenderClear(renderer_);
|
||||
|
||||
// Pinta el gráfico del titulo a partir del sprite
|
||||
sprite->render();
|
||||
sprite_->render();
|
||||
|
||||
// Escribe el texto en la textura
|
||||
const color_t textColor = stringToColor(options->palette, "green");
|
||||
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, 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, 20 * textSize, "ESC.EXIT GAME", 1, textColor);
|
||||
const color_t textColor = stringToColor(options_->palette, "green");
|
||||
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, 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, 20 * textSize, "ESC.EXIT GAME", 1, textColor);
|
||||
|
||||
// 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
|
||||
void Title::createCheevosTexture()
|
||||
{
|
||||
// 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 cheevosTextureViewHeight = 110;
|
||||
const int cheevosTexturePosY = 73;
|
||||
const int cheevosPadding = 10;
|
||||
const int cheevoHeight = cheevosPadding + (infoText->getCharacterSize() * 2) + 1;
|
||||
const int cheevosTextureHeight = (cheevoHeight * cheevosList.size()) + 2 + infoText->getCharacterSize() + 8;
|
||||
cheevosTexture = new Texture(renderer);
|
||||
cheevosTexture->createBlank(renderer, cheevosTextureWidth, cheevosTextureHeight, SDL_TEXTUREACCESS_TARGET);
|
||||
cheevosTexture->setAsRenderTarget(renderer);
|
||||
cheevosTexture->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||
const int cheevoHeight = cheevosPadding + (info_text_->getCharacterSize() * 2) + 1;
|
||||
const int cheevosTextureHeight = (cheevoHeight * cheevosList.size()) + 2 + info_text_->getCharacterSize() + 8;
|
||||
cheevos_texture_ = new Texture(renderer_);
|
||||
cheevos_texture_->createBlank(renderer_, cheevosTextureWidth, cheevosTextureHeight, SDL_TEXTUREACCESS_TARGET);
|
||||
cheevos_texture_->setAsRenderTarget(renderer_);
|
||||
cheevos_texture_->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||
|
||||
// Rellena la textura con color sólido
|
||||
const color_t cheevosBGColor = stringToColor(options->palette, "black");
|
||||
SDL_SetRenderDrawColor(renderer, cheevosBGColor.r, cheevosBGColor.g, cheevosBGColor.b, 0xFF);
|
||||
SDL_RenderClear(renderer);
|
||||
const color_t cheevosBGColor = stringToColor(options_->palette, "black");
|
||||
SDL_SetRenderDrawColor(renderer_, cheevosBGColor.r, cheevosBGColor.g, cheevosBGColor.b, 0xFF);
|
||||
SDL_RenderClear(renderer_);
|
||||
|
||||
// Escribe la lista de logros en la textura
|
||||
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;
|
||||
infoText->writeDX(TXT_CENTER | TXT_COLOR, cheevosTexture->getWidth() / 2, pos, cheevosListCaption, 1, stringToColor(options->palette, "bright_green"));
|
||||
pos += infoText->getCharacterSize();
|
||||
const color_t cheevoLockedColor = stringToColor(options->palette, "white");
|
||||
const color_t cheevoUnlockedColor = 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 += info_text_->getCharacterSize();
|
||||
const color_t cheevoLockedColor = stringToColor(options_->palette, "white");
|
||||
const color_t cheevoUnlockedColor = stringToColor(options_->palette, "bright_green");
|
||||
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 lineX2 = lineX1 + ((cheevosTextureWidth / 7) * 1);
|
||||
|
||||
@@ -492,23 +483,23 @@ void Title::createCheevosTexture()
|
||||
cheevoColor = cheevo.completed ? cheevoUnlockedColor : cheevoLockedColor;
|
||||
pos += cheevosPadding;
|
||||
int half = cheevosPadding / 2;
|
||||
SDL_RenderDrawLine(renderer, lineX1, pos - half - 1, lineX2, pos - half - 1);
|
||||
infoText->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.caption, 1, cheevoColor);
|
||||
pos += infoText->getCharacterSize() + 1;
|
||||
infoText->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.description, 1, cheevoColor);
|
||||
pos += infoText->getCharacterSize();
|
||||
SDL_RenderDrawLine(renderer_, lineX1, pos - half - 1, lineX2, pos - half - 1);
|
||||
info_text_->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.caption, 1, cheevoColor);
|
||||
pos += info_text_->getCharacterSize() + 1;
|
||||
info_text_->writeDX(TXT_CENTER | TXT_COLOR, cheevosTextureWidth / 2, pos, cheevo.description, 1, cheevoColor);
|
||||
pos += info_text_->getCharacterSize();
|
||||
}
|
||||
|
||||
// Crea el sprite para el listado de logros
|
||||
cheevosSprite = new Sprite((GAMECANVAS_WIDTH - cheevosTexture->getWidth()) / 2, cheevosTexturePosY, cheevosTexture->getWidth(), cheevosTexture->getHeight(), cheevosTexture, renderer);
|
||||
cheevosTextureView = {0, 0, cheevosTexture->getWidth(), cheevosTextureViewHeight};
|
||||
cheevosSprite->setSpriteClip(cheevosTextureView);
|
||||
cheevos_sprite_ = new Sprite((GAMECANVAS_WIDTH - cheevos_texture_->getWidth()) / 2, cheevosTexturePosY, cheevos_texture_->getWidth(), cheevos_texture_->getHeight(), cheevos_texture_, renderer_);
|
||||
cheevos_texture_view_ = {0, 0, cheevos_texture_->getWidth(), cheevosTextureViewHeight};
|
||||
cheevos_sprite_->setSpriteClip(cheevos_texture_view_);
|
||||
}
|
||||
|
||||
// Oculta la lista de logros
|
||||
void Title::hideCheevosList()
|
||||
{
|
||||
showCheevos = false;
|
||||
cheevosTextureView.y = 0;
|
||||
cheevosSprite->setSpriteClip(cheevosTextureView);
|
||||
show_cheevos_ = false;
|
||||
cheevos_texture_view_.y = 0;
|
||||
cheevos_sprite_->setSpriteClip(cheevos_texture_view_);
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <SDL2/SDL_stdinc.h> // Para Uint32
|
||||
#include <string> // Para basic_string, string
|
||||
#include <vector> // Para vector
|
||||
#include <memory>
|
||||
#include "paleta.h" // Para jSurface
|
||||
class Asset;
|
||||
class Cheevos;
|
||||
@@ -36,34 +37,33 @@ private:
|
||||
};
|
||||
|
||||
// Objetos y punteros
|
||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||
Screen *screen; // Objeto encargado de dibujar en pantalla
|
||||
Resource *resource; // Objeto con los recursos
|
||||
Asset *asset; // Objeto con los ficheros de recursos
|
||||
Input *input; // Objeto pata gestionar la entrada
|
||||
SDL_Event *eventHandler; // Manejador de eventos
|
||||
Texture *texture; // Textura con los graficos
|
||||
Sprite *sprite; // Sprite para manejar la textura
|
||||
SDL_Texture *bgTexture; // Textura para dibujar el fondo de la pantalla
|
||||
Text *text; // Objeto para escribir texto en pantalla
|
||||
Text *infoText; // Objeto para escribir texto en pantalla
|
||||
options_t *options; // Puntero a las opciones del juego
|
||||
Texture *cheevosTexture; // Textura con lo lista de logros
|
||||
Sprite *cheevosSprite; // Sprite para manejar la textura con la lista de logros
|
||||
Cheevos *cheevos; // Objeto encargado de gestionar los logros del juego
|
||||
section_t *section; // Estado del bucle principal para saber si continua o se sale
|
||||
SDL_Renderer *renderer_; // El renderizador de la ventana
|
||||
Screen *screen_; // Objeto encargado de dibujar en pantalla
|
||||
Resource *resource_; // Objeto con los recursos
|
||||
Input *input_; // Objeto pata gestionar la entrada
|
||||
SDL_Event *event_handler_; // Manejador de eventos
|
||||
Texture *texture_; // Textura con los graficos
|
||||
Sprite *sprite_; // Sprite para manejar la textura
|
||||
SDL_Texture *bg_texture_; // Textura para dibujar el fondo de la pantalla
|
||||
Text *text_; // Objeto para escribir texto en pantalla
|
||||
Text *info_text_; // Objeto para escribir texto en pantalla
|
||||
options_t *options_; // Puntero a las opciones del juego
|
||||
Texture *cheevos_texture_; // Textura con la lista de logros
|
||||
Sprite *cheevos_sprite_; // Sprite para manejar la textura con la lista de logros
|
||||
std::unique_ptr<Cheevos> cheevos_; // Objeto encargado de gestionar los logros del juego
|
||||
section_t *section_; // Estado del bucle principal para saber si continua o se sale
|
||||
|
||||
// Variables
|
||||
int counter; // Contador
|
||||
std::string longText; // Texto que aparece en la parte inferior del titulo
|
||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
||||
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||
std::vector<letter_t> letters; // Vector con las letras de la marquesina
|
||||
int marqueeSpeed; // Velocidad de desplazamiento de la marquesina
|
||||
bool showCheevos; // Indica si se muestra por pantalla el listado de logros
|
||||
SDL_Rect cheevosTextureView; // Zona visible de la textura con el listado de logros
|
||||
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
|
||||
int counter_ = 0; // Contador
|
||||
std::string long_text_; // Texto que aparece en la parte inferior del titulo
|
||||
Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad 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
|
||||
int marquee_speed_ = 3; // Velocidad de desplazamiento de la marquesina
|
||||
bool show_cheevos_ = false; // Indica si se muestra por pantalla 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
|
||||
jSurface loading_screen_; // Surface con los gráficos de la pantalla de carga
|
||||
|
||||
// Actualiza las variables
|
||||
void update();
|
||||
@@ -109,7 +109,7 @@ private:
|
||||
|
||||
public:
|
||||
// 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
|
||||
~Title();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "utils.h"
|
||||
#include <filesystem> // Para path
|
||||
#include <stdlib.h> // Para free, malloc, abs
|
||||
#include <cmath> // Para round, abs
|
||||
|
||||
@@ -587,3 +588,16 @@ std::string toUpper(std::string str)
|
||||
free(upper);
|
||||
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
|
||||
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