Añadido puntero a la estructura param en las clases necesarias
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
#include "background.h"
|
||||
|
||||
// Constructor
|
||||
Background::Background(SDL_Renderer *renderer, Screen *screen, Asset *asset)
|
||||
Background::Background(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t *param)
|
||||
{
|
||||
// Copia los punteros
|
||||
this->renderer = renderer;
|
||||
this->screen = screen;
|
||||
this->asset = asset;
|
||||
this->param = param;
|
||||
|
||||
// Inicializa variables
|
||||
gradientNumber = 0;
|
||||
|
||||
@@ -29,6 +29,7 @@ private:
|
||||
SDL_Rect dstRect; // Posición donde dibujar la parte del objeto fondo que se dibujará en pantalla
|
||||
SDL_Texture *canvas; // Textura para componer el fondo
|
||||
int base; // Linea de fondo coincidente con el area inferior de la zona de juego
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
Texture *buildingsTexture; // Textura con los edificios de fondo
|
||||
Texture *cloudsTexture; // Textura con las nubes de fondo
|
||||
@@ -49,7 +50,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Background(SDL_Renderer *renderer, Screen *screen, Asset *asset);
|
||||
Background(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t *param);
|
||||
|
||||
// Destructor
|
||||
~Background();
|
||||
|
||||
@@ -156,6 +156,14 @@ struct options_t
|
||||
op_audio_t audio; // Opciones para el audio
|
||||
};
|
||||
|
||||
struct param_t
|
||||
{
|
||||
int gameWidth; // Ancho del juego
|
||||
int gameHeight; // Alto del juego
|
||||
|
||||
SDL_Rect scoreboard; // Posición y tamaño del marcador
|
||||
};
|
||||
|
||||
// Calcula el cuadrado de la distancia entre dos puntos
|
||||
double distanceSquared(int x1, int y1, int x2, int y2);
|
||||
|
||||
|
||||
@@ -11,18 +11,18 @@
|
||||
#define HALF_BLOCK BLOCK / 2
|
||||
|
||||
// Resolución nativa del juego
|
||||
#define GAMECANVAS_WIDTH 320
|
||||
#define GAMECANVAS_HEIGHT 240
|
||||
#define WIDTH 320
|
||||
#define HEIGHT 240
|
||||
|
||||
// Marcador
|
||||
const int SCOREBOARD_WIDTH = GAMECANVAS_WIDTH;
|
||||
const int SCOREBOARD_WIDTH = WIDTH;
|
||||
const int SCOREBOARD_HEIGHT = 32;
|
||||
const int SCOREBOARD_X = 0;
|
||||
const int SCOREBOARD_Y = GAMECANVAS_HEIGHT - SCOREBOARD_HEIGHT;
|
||||
const int SCOREBOARD_Y = HEIGHT - SCOREBOARD_HEIGHT;
|
||||
|
||||
// Zona de juego
|
||||
const SDL_Rect windowArea = {0, 0, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT};
|
||||
const SDL_Rect playArea = {0, 0, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT - SCOREBOARD_HEIGHT};
|
||||
const SDL_Rect windowArea = {0, 0, WIDTH, HEIGHT};
|
||||
const SDL_Rect playArea = {0, 0, WIDTH, HEIGHT - SCOREBOARD_HEIGHT};
|
||||
const int PLAY_AREA_TOP = 0;
|
||||
const int PLAY_AREA_BOTTOM = playArea.h;
|
||||
const int PLAY_AREA_LEFT = 0;
|
||||
@@ -37,12 +37,12 @@ const int PLAY_AREA_FIRST_QUARTER_Y = PLAY_AREA_HEIGHT / 4;
|
||||
const int PLAY_AREA_THIRD_QUARTER_Y = (PLAY_AREA_HEIGHT / 4) * 3;
|
||||
|
||||
// Anclajes de pantalla
|
||||
const int GAMECANVAS_CENTER_X = GAMECANVAS_WIDTH / 2;
|
||||
const int GAMECANVAS_FIRST_QUARTER_X = GAMECANVAS_WIDTH / 4;
|
||||
const int GAMECANVAS_THIRD_QUARTER_X = (GAMECANVAS_WIDTH / 4) * 3;
|
||||
const int GAMECANVAS_CENTER_Y = GAMECANVAS_HEIGHT / 2;
|
||||
const int GAMECANVAS_FIRST_QUARTER_Y = GAMECANVAS_HEIGHT / 4;
|
||||
const int GAMECANVAS_THIRD_QUARTER_Y = (GAMECANVAS_HEIGHT / 4) * 3;
|
||||
const int GAMECANVAS_CENTER_X = WIDTH / 2;
|
||||
const int GAMECANVAS_FIRST_QUARTER_X = WIDTH / 4;
|
||||
const int GAMECANVAS_THIRD_QUARTER_X = (WIDTH / 4) * 3;
|
||||
const int GAMECANVAS_CENTER_Y = HEIGHT / 2;
|
||||
const int GAMECANVAS_FIRST_QUARTER_Y = HEIGHT / 4;
|
||||
const int GAMECANVAS_THIRD_QUARTER_Y = (HEIGHT / 4) * 3;
|
||||
|
||||
// Secciones del programa
|
||||
#define SECTION_PROG_LOGO 0
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
// Constructor
|
||||
Director::Director(int argc, char *argv[])
|
||||
{
|
||||
// Carga los parametros para configurar el juego
|
||||
loadParams();
|
||||
|
||||
// Inicializa variables
|
||||
section = new section_t();
|
||||
section->name = SECTION_PROG_TITLE;
|
||||
@@ -70,6 +73,7 @@ Director::~Director()
|
||||
delete screen;
|
||||
delete lang;
|
||||
delete options;
|
||||
delete param;
|
||||
delete section;
|
||||
|
||||
SDL_DestroyRenderer(renderer);
|
||||
@@ -186,9 +190,6 @@ bool Director::initSDL()
|
||||
else
|
||||
{
|
||||
// Crea un renderizador para la ventana. El vsync se activa en funcion de las opciones
|
||||
// Crea un renderizador para la ventana. El vsync se activa en funcion de las opciones
|
||||
// Uint32 flags = SDL_RENDERER_SOFTWARE;
|
||||
// Uint32 flags = SDL_RENDERER_ACCELERATED;
|
||||
Uint32 flags = 0;
|
||||
if (options->video.vSync)
|
||||
{
|
||||
@@ -357,6 +358,17 @@ bool Director::setFileList()
|
||||
return asset->check();
|
||||
}
|
||||
|
||||
// Carga los parametros para configurar el juego
|
||||
void Director::loadParams()
|
||||
{
|
||||
param = new param_t;
|
||||
|
||||
param->gameWidth = 320;
|
||||
param->gameHeight = 240;
|
||||
|
||||
param->scoreboard = {0, 240-32, 320, 32};
|
||||
}
|
||||
|
||||
// Inicializa las opciones del programa
|
||||
void Director::initOptions()
|
||||
{
|
||||
@@ -378,8 +390,8 @@ void Director::initOptions()
|
||||
options->input.push_back(inp);
|
||||
|
||||
// Opciones de video
|
||||
options->video.gameWidth = GAMECANVAS_WIDTH;
|
||||
options->video.gameHeight = GAMECANVAS_HEIGHT;
|
||||
options->video.gameWidth = param->gameWidth;
|
||||
options->video.gameHeight = param->gameHeight;
|
||||
options->video.mode = 0;
|
||||
options->video.window.size = 3;
|
||||
options->video.window.width = options->video.window.size * options->video.gameWidth;
|
||||
@@ -625,21 +637,21 @@ bool Director::saveConfigFile()
|
||||
|
||||
void Director::runLogo()
|
||||
{
|
||||
logo = new Logo(renderer, screen, asset, input, section);
|
||||
logo = new Logo(renderer, screen, asset, input, param, section);
|
||||
logo->run();
|
||||
delete logo;
|
||||
}
|
||||
|
||||
void Director::runIntro()
|
||||
{
|
||||
intro = new Intro(renderer, screen, asset, input, lang, section);
|
||||
intro = new Intro(renderer, screen, asset, input, lang, param, section);
|
||||
intro->run();
|
||||
delete intro;
|
||||
}
|
||||
|
||||
void Director::runTitle()
|
||||
{
|
||||
title = new Title(renderer, screen, input, asset, options, lang, section);
|
||||
title = new Title(renderer, screen, input, asset, options, lang, param, section);
|
||||
title->run();
|
||||
delete title;
|
||||
}
|
||||
@@ -647,7 +659,7 @@ void Director::runTitle()
|
||||
void Director::runGame()
|
||||
{
|
||||
const int numPlayers = section->subsection == SUBSECTION_GAME_PLAY_1P ? 1 : 2;
|
||||
game = new Game(numPlayers, 0, renderer, screen, asset, lang, input, false, options, section);
|
||||
game = new Game(numPlayers, 0, renderer, screen, asset, lang, input, false, param, options, section);
|
||||
game->run();
|
||||
delete game;
|
||||
}
|
||||
@@ -768,7 +780,7 @@ bool Director::setOptions(options_t *options, std::string var, std::string value
|
||||
options->audio.sound.enabled = stringToBool(value);
|
||||
}
|
||||
|
||||
else if (var == "sound.volume")
|
||||
else if (var == "sound.volume")
|
||||
{
|
||||
options->audio.sound.volume = std::stoi(value);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,8 @@ private:
|
||||
section_t *section; // Sección y subsección actual del programa;
|
||||
|
||||
// Variables
|
||||
struct options_t *options; // Variable con todas las opciones del programa
|
||||
options_t *options; // Variable con todas las opciones del programa
|
||||
param_t *param; // Variable con todos los parametros del programa
|
||||
std::string executablePath; // Path del ejecutable
|
||||
std::string systemFolder; // Carpeta del sistema donde guardar datos
|
||||
|
||||
@@ -59,6 +60,9 @@ private:
|
||||
// Inicializa el objeto input
|
||||
void initInput();
|
||||
|
||||
// Carga los parametros para configurar el juego
|
||||
void loadParams();
|
||||
|
||||
// Inicializa las opciones del programa
|
||||
void initOptions();
|
||||
|
||||
|
||||
@@ -3,15 +3,11 @@
|
||||
#include <iostream>
|
||||
|
||||
// Constructor
|
||||
Fade::Fade(SDL_Renderer *renderer)
|
||||
Fade::Fade(SDL_Renderer *renderer, param_t *param)
|
||||
{
|
||||
mRenderer = renderer;
|
||||
|
||||
mBackbuffer = SDL_CreateTexture(mRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
|
||||
if (mBackbuffer == nullptr)
|
||||
{
|
||||
std::cout << "Error: textTexture could not be created!\nSDL Error: " << SDL_GetError() << std::endl;
|
||||
}
|
||||
mBackbuffer = SDL_CreateTexture(mRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);
|
||||
}
|
||||
|
||||
// Destructor
|
||||
@@ -41,7 +37,7 @@ void Fade::render()
|
||||
switch (mFadeType)
|
||||
{
|
||||
case FADE_FULLSCREEN:
|
||||
mRect1 = {0, 0, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT};
|
||||
mRect1 = {0, 0, param->gameWidth, param->gameHeight};
|
||||
|
||||
for (int i = 0; i < 256; i += 4)
|
||||
{
|
||||
@@ -69,21 +65,21 @@ void Fade::render()
|
||||
break;
|
||||
|
||||
case FADE_CENTER:
|
||||
mRect1 = {0, 0, GAMECANVAS_WIDTH, 0};
|
||||
mRect2 = {0, 0, GAMECANVAS_WIDTH, 0};
|
||||
mRect1 = {0, 0, param->gameWidth, 0};
|
||||
mRect2 = {0, 0, param->gameWidth, 0};
|
||||
|
||||
SDL_SetRenderDrawColor(mRenderer, mR, mG, mB, 64);
|
||||
|
||||
for (int i = 0; i < mCounter; i++)
|
||||
{
|
||||
mRect1.h = mRect2.h = i * 4;
|
||||
mRect2.y = GAMECANVAS_HEIGHT - (i * 4);
|
||||
mRect2.y = param->gameHeight - (i * 4);
|
||||
|
||||
SDL_RenderFillRect(mRenderer, &mRect1);
|
||||
SDL_RenderFillRect(mRenderer, &mRect2);
|
||||
}
|
||||
|
||||
if ((mCounter * 4) > GAMECANVAS_HEIGHT)
|
||||
if ((mCounter * 4) > param->gameHeight)
|
||||
mFinished = true;
|
||||
break;
|
||||
|
||||
@@ -101,8 +97,8 @@ void Fade::render()
|
||||
// Dibujamos sobre el backbuffer
|
||||
SDL_SetRenderTarget(mRenderer, mBackbuffer);
|
||||
|
||||
mRect1.x = rand() % (GAMECANVAS_WIDTH - mRect1.w);
|
||||
mRect1.y = rand() % (GAMECANVAS_HEIGHT - mRect1.h);
|
||||
mRect1.x = rand() % (param->gameWidth - mRect1.w);
|
||||
mRect1.y = rand() % (param->gameHeight - mRect1.h);
|
||||
SDL_RenderFillRect(mRenderer, &mRect1);
|
||||
|
||||
// Volvemos a usar el renderizador de forma normal
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include "common/texture.h"
|
||||
#include "common/utils.h"
|
||||
|
||||
#ifndef FADE_H
|
||||
#define FADE_H
|
||||
@@ -15,19 +16,23 @@
|
||||
class Fade
|
||||
{
|
||||
private:
|
||||
// Objetos y punteros
|
||||
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
||||
SDL_Texture *mBackbuffer; // Textura para usar como backbuffer
|
||||
Uint8 mFadeType; // Tipo de fade a realizar
|
||||
Uint16 mCounter; // Contador interno
|
||||
bool mEnabled; // Indica si el fade está activo
|
||||
bool mFinished; // Indica si ha terminado la transición
|
||||
Uint8 mR, mG, mB; // Colores para el fade
|
||||
SDL_Rect mRect1; // Rectangulo usado para crear los efectos de transición
|
||||
SDL_Rect mRect2; // Rectangulo usado para crear los efectos de transición
|
||||
|
||||
// Variables
|
||||
Uint8 mFadeType; // Tipo de fade a realizar
|
||||
Uint16 mCounter; // Contador interno
|
||||
bool mEnabled; // Indica si el fade está activo
|
||||
bool mFinished; // Indica si ha terminado la transición
|
||||
Uint8 mR, mG, mB; // Colores para el fade
|
||||
SDL_Rect mRect1; // Rectangulo usado para crear los efectos de transición
|
||||
SDL_Rect mRect2; // Rectangulo usado para crear los efectos de transición
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Fade(SDL_Renderer *renderer);
|
||||
Fade(SDL_Renderer *renderer, param_t *param);
|
||||
|
||||
// Destructor
|
||||
~Fade();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "game.h"
|
||||
|
||||
// Constructor
|
||||
Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, options_t *options, section_t *section)
|
||||
Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, param_t *param, options_t *options, section_t *section)
|
||||
{
|
||||
// Copia los punteros
|
||||
this->renderer = renderer;
|
||||
@@ -9,6 +9,7 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
|
||||
this->asset = asset;
|
||||
this->lang = lang;
|
||||
this->input = input;
|
||||
this->param = param;
|
||||
this->options = options;
|
||||
this->section = section;
|
||||
|
||||
@@ -25,10 +26,10 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
|
||||
difficulty = options->difficulty;
|
||||
|
||||
// Crea los objetos
|
||||
fade = new Fade(renderer);
|
||||
fade = new Fade(renderer, param);
|
||||
eventHandler = new SDL_Event();
|
||||
scoreboard = new Scoreboard(renderer, screen, asset, lang, options);
|
||||
background = new Background(renderer, screen, asset);
|
||||
background = new Background(renderer, screen, asset, param);
|
||||
|
||||
// Carga los recursos
|
||||
loadMedia();
|
||||
|
||||
@@ -211,7 +211,8 @@ private:
|
||||
Uint8 difficulty; // Dificultad del juego
|
||||
float difficultyScoreMultiplier; // Multiplicador de puntos en función de la dificultad
|
||||
color_t difficultyColor; // Color asociado a la dificultad
|
||||
struct options_t *options; // Variable con todas las variables de las opciones del programa
|
||||
options_t *options; // Variable con todas las opciones del programa
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
Uint8 onePlayerControl; // Variable para almacenar el valor de las opciones
|
||||
enemyFormation_t enemyFormation[NUMBER_OF_ENEMY_FORMATIONS]; // Vector con todas las formaciones enemigas
|
||||
enemyPool_t enemyPool[10]; // Variable con los diferentes conjuntos de formaciones enemigas
|
||||
@@ -487,7 +488,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, options_t *options, section_t *section);
|
||||
Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, Input *input, bool demo, param_t *param, options_t *options, section_t *section);
|
||||
|
||||
// Destructor
|
||||
~Game();
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
#include "game_logo.h"
|
||||
|
||||
// Constructor
|
||||
GameLogo::GameLogo(SDL_Renderer *renderer, Screen *screen, Asset *asset, int x, int y)
|
||||
GameLogo::GameLogo(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t *param, int x, int y)
|
||||
{
|
||||
// Copia los punteros
|
||||
this->renderer = renderer;
|
||||
this->screen = screen;
|
||||
this->asset = asset;
|
||||
this->param = param;
|
||||
this->x = x;
|
||||
this->y = y;
|
||||
|
||||
@@ -203,7 +204,7 @@ void GameLogo::reLoad()
|
||||
int GameLogo::getInitialVerticalDesp()
|
||||
{
|
||||
int despUp = y;
|
||||
int despDown = GAMECANVAS_HEIGHT - y;
|
||||
int despDown = param->gameHeight - y;
|
||||
|
||||
return std::max(despUp, despDown);
|
||||
}
|
||||
@@ -29,10 +29,12 @@ private:
|
||||
SmartSprite *coffeeBitmap; // Sprite con la palabra COFFEE para la pantalla de titulo
|
||||
SmartSprite *crisisBitmap; // Sprite con la palabra CRISIS para la pantalla de titulo
|
||||
|
||||
// Variables
|
||||
int x; // Posición donde ddibujar a la clase
|
||||
int y; // Posición donde ddibujar a la clase
|
||||
JA_Sound_t *crashSound; // Sonido con el impacto del título
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
// Variables
|
||||
int x; // Posición donde dibujar el logo
|
||||
int y; // Posición donde dibujar el logo
|
||||
|
||||
enum status_e
|
||||
{
|
||||
@@ -50,7 +52,7 @@ private:
|
||||
int lenght; // Cantidad de desplazamientos a realizar
|
||||
int remaining; // Cantidad de desplazamientos pendientes a realizar
|
||||
int origin; // Valor inicial de la pantalla para dejarla igual tras el desplazamiento
|
||||
} shake; // Estructura para generar el efecto de agitación
|
||||
} shake; // Estructura para generar el efecto de agitación
|
||||
|
||||
// Inicializa las variables
|
||||
void init();
|
||||
@@ -60,7 +62,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
GameLogo(SDL_Renderer *renderer, Screen *screen, Asset *asset, int x, int y);
|
||||
GameLogo(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t *param, int x, int y);
|
||||
|
||||
// Destructor
|
||||
~GameLogo();
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
const Uint8 SELF = 0;
|
||||
|
||||
// Constructor
|
||||
HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, options_t *options, section_t *section)
|
||||
HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, options_t *options, section_t *section)
|
||||
{
|
||||
// Copia los punteros
|
||||
this->renderer = renderer;
|
||||
@@ -14,6 +14,7 @@ HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
||||
this->lang = lang;
|
||||
this->section = section;
|
||||
this->options = options;
|
||||
this->param = param;
|
||||
|
||||
// Reserva memoria para los punteros
|
||||
eventHandler = new SDL_Event();
|
||||
@@ -21,14 +22,7 @@ HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
||||
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
|
||||
|
||||
// Crea un backbuffer para el renderizador
|
||||
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
|
||||
if (backbuffer == nullptr)
|
||||
{
|
||||
if (options->console)
|
||||
{
|
||||
std::cout << "Error: textTexture could not be created!\nSDL Error: " << SDL_GetError() << std::endl;
|
||||
}
|
||||
}
|
||||
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);
|
||||
|
||||
// Inicializa variables
|
||||
section->name = SELF;
|
||||
@@ -90,7 +84,7 @@ void HiScoreTable::update()
|
||||
void HiScoreTable::render()
|
||||
{
|
||||
// Pinta en pantalla
|
||||
SDL_Rect window = {0, 0, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT};
|
||||
SDL_Rect window = {0, 0, param->gameWidth, param->gameHeight};
|
||||
|
||||
const color_t orangeColor = {0xFF, 0x7A, 0x00};
|
||||
// hay 27 letras - 7 de puntos quedan 20 caracteres 20 - nameLenght 0 numDots
|
||||
@@ -122,10 +116,9 @@ void HiScoreTable::render()
|
||||
text->writeDX(TXT_CENTER | TXT_SHADOW, GAMECANVAS_CENTER_X, (i * spaceBetweenLines) + spaceBetweenHeader, line, 1, orangeColor, 1, shdwTxtColor);
|
||||
}
|
||||
|
||||
|
||||
if ((mode == mhst_manual) && (counter % 50 > 14))
|
||||
{
|
||||
text->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, GAMECANVAS_CENTER_X, GAMECANVAS_HEIGHT - 12, lang->getText(22), 1, orangeColor, 1, shdwTxtColor);
|
||||
text->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, GAMECANVAS_CENTER_X, param->gameHeight - 12, lang->getText(22), 1, orangeColor, 1, shdwTxtColor);
|
||||
}
|
||||
|
||||
// Cambia el destino de renderizado
|
||||
@@ -140,7 +133,7 @@ void HiScoreTable::render()
|
||||
// Establece la ventana del backbuffer
|
||||
if (mode == mhst_auto)
|
||||
{
|
||||
window.y = std::max(8, GAMECANVAS_HEIGHT - counter + 100);
|
||||
window.y = std::max(8, param->gameHeight - counter + 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -42,6 +42,7 @@ private:
|
||||
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||
bool manualQuit; // Indica si se quiere salir del modo manual
|
||||
mode_hiScoreTable_e mode; // Modo en el que se van a ejecutar las instrucciones
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
// Actualiza las variables
|
||||
void update();
|
||||
@@ -60,7 +61,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, options_t *options, section_t *section);
|
||||
HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, options_t *options, section_t *section);
|
||||
|
||||
// Destructor
|
||||
~HiScoreTable();
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
const Uint8 SELF = 0;
|
||||
|
||||
// Constructor
|
||||
Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, section_t *section)
|
||||
Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, section_t *section)
|
||||
{
|
||||
// Copia los punteros
|
||||
this->renderer = renderer;
|
||||
@@ -12,6 +12,7 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
||||
this->asset = asset;
|
||||
this->input = input;
|
||||
this->lang = lang;
|
||||
this->param = param;
|
||||
this->section = section;
|
||||
|
||||
// Reserva memoria para los punteros
|
||||
@@ -39,7 +40,7 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
||||
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
|
||||
|
||||
// Crea un backbuffer para el renderizador
|
||||
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
|
||||
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);
|
||||
if (backbuffer == nullptr)
|
||||
{
|
||||
std::cout << "Error: textTexture could not be created!\nSDL Error: " << SDL_GetError() << std::endl;
|
||||
@@ -110,7 +111,7 @@ void Instructions::update()
|
||||
void Instructions::render()
|
||||
{
|
||||
// Pinta en pantalla
|
||||
SDL_Rect window = {0, 0, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT};
|
||||
SDL_Rect window = {0, 0, param->gameWidth, param->gameHeight};
|
||||
SDL_Rect srcRect = {0, 0, 16, 16};
|
||||
|
||||
const color_t orangeColor = {0xFF, 0x7A, 0x00};
|
||||
@@ -142,7 +143,7 @@ void Instructions::render()
|
||||
|
||||
if ((mode == m_manual) && (counter % 50 > 14))
|
||||
{
|
||||
text->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, GAMECANVAS_CENTER_X, GAMECANVAS_HEIGHT - 12, lang->getText(22), 1, orangeColor, 1, shdwTxtColor);
|
||||
text->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, GAMECANVAS_CENTER_X, param->gameHeight - 12, lang->getText(22), 1, orangeColor, 1, shdwTxtColor);
|
||||
}
|
||||
|
||||
// Disquito
|
||||
@@ -192,7 +193,7 @@ void Instructions::render()
|
||||
// Establece la ventana del backbuffer
|
||||
if (mode == m_auto)
|
||||
{
|
||||
window.y = std::max(8, GAMECANVAS_HEIGHT - counter + 100);
|
||||
window.y = std::max(8, param->gameHeight - counter + 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -36,6 +36,7 @@ private:
|
||||
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
||||
Text *text; // Objeto para escribir texto
|
||||
section_t *section; // Estado del bucle principal para saber si continua o se sale
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
// Variables
|
||||
Uint16 counter; // Contador
|
||||
@@ -59,7 +60,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, section_t *section);
|
||||
Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, section_t *section);
|
||||
|
||||
// Destructor
|
||||
~Instructions();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "intro.h"
|
||||
|
||||
// Constructor
|
||||
Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, section_t *section)
|
||||
Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, section_t *section)
|
||||
{
|
||||
// Copia los punteros
|
||||
this->renderer = renderer;
|
||||
@@ -9,6 +9,7 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input,
|
||||
this->lang = lang;
|
||||
this->asset = asset;
|
||||
this->input = input;
|
||||
this->param = param;
|
||||
this->section = section;
|
||||
|
||||
// Reserva memoria para los objetos
|
||||
@@ -47,7 +48,7 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input,
|
||||
bitmaps[0]->setAccelY(0.0f);
|
||||
bitmaps[0]->setSpriteClip(0, 0, 128, 96);
|
||||
|
||||
bitmaps[1]->setPosX(GAMECANVAS_WIDTH);
|
||||
bitmaps[1]->setPosX(param->gameWidth);
|
||||
bitmaps[1]->setPosY(GAMECANVAS_FIRST_QUARTER_Y - 24);
|
||||
bitmaps[1]->setVelX(-1.0f);
|
||||
bitmaps[1]->setVelY(0.0f);
|
||||
@@ -65,7 +66,7 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input,
|
||||
bitmaps[2]->setEnabledCounter(250);
|
||||
|
||||
bitmaps[3]->setPosX(GAMECANVAS_CENTER_X - 64);
|
||||
bitmaps[3]->setPosY(GAMECANVAS_HEIGHT);
|
||||
bitmaps[3]->setPosY(param->gameHeight);
|
||||
bitmaps[3]->setVelX(0.0f);
|
||||
bitmaps[3]->setVelY(-0.7f);
|
||||
bitmaps[3]->setAccelX(0.0f);
|
||||
@@ -80,7 +81,7 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input,
|
||||
bitmaps[4]->setAccelY(0.3f);
|
||||
bitmaps[4]->setSpriteClip(0, 192, 128, 96);
|
||||
|
||||
bitmaps[5]->setPosX(GAMECANVAS_WIDTH);
|
||||
bitmaps[5]->setPosX(param->gameWidth);
|
||||
bitmaps[5]->setPosY(GAMECANVAS_FIRST_QUARTER_Y - 24);
|
||||
bitmaps[5]->setVelX(-0.7f);
|
||||
bitmaps[5]->setVelY(0.0f);
|
||||
@@ -94,7 +95,7 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input,
|
||||
{
|
||||
Writer *w = new Writer(text);
|
||||
w->setPosX(BLOCK * 0);
|
||||
w->setPosY(GAMECANVAS_HEIGHT - (BLOCK * 6));
|
||||
w->setPosY(param->gameHeight - (BLOCK * 6));
|
||||
w->setKerning(-1);
|
||||
w->setEnabled(false);
|
||||
w->setEnabledCounter(180);
|
||||
|
||||
@@ -31,6 +31,7 @@ private:
|
||||
std::vector<Writer *> texts; // Textos de la intro
|
||||
Text *text; // Textos de la intro
|
||||
section_t *section; // Estado del bucle principal para saber si continua o se sale
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
// Variables
|
||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
||||
@@ -58,7 +59,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, section_t *section);
|
||||
Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, section_t *section);
|
||||
|
||||
// Destructor
|
||||
~Intro();
|
||||
|
||||
@@ -2,20 +2,21 @@
|
||||
#include <iostream>
|
||||
|
||||
// Constructor
|
||||
Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, section_t *section)
|
||||
Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, param_t *param, section_t *section)
|
||||
{
|
||||
// Copia la dirección de los objetos
|
||||
this->renderer = renderer;
|
||||
this->screen = screen;
|
||||
this->asset = asset;
|
||||
this->input = input;
|
||||
this->param = param;
|
||||
this->section = section;
|
||||
|
||||
// Reserva memoria para los punteros
|
||||
eventHandler = new SDL_Event();
|
||||
jailTexture = new Texture(renderer, asset->get("logo_jailgames.png"));
|
||||
sinceTexture = new Texture(renderer, asset->get("logo_since_1998.png"));
|
||||
sinceSprite = new Sprite((GAMECANVAS_WIDTH - sinceTexture->getWidth()) / 2, 83 + jailTexture->getHeight() + 5, sinceTexture->getWidth(), sinceTexture->getHeight(), sinceTexture, renderer);
|
||||
sinceSprite = new Sprite((param->gameWidth - sinceTexture->getWidth()) / 2, 83 + jailTexture->getHeight() + 5, sinceTexture->getWidth(), sinceTexture->getHeight(), sinceTexture, renderer);
|
||||
sinceSprite->setSpriteClip(0, 0, sinceTexture->getWidth(), sinceTexture->getHeight());
|
||||
sinceTexture->setColor(0, 0, 0);
|
||||
|
||||
@@ -37,7 +38,7 @@ Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, s
|
||||
{
|
||||
Sprite *temp = new Sprite(0, i, jailTexture->getWidth(), 1, jailTexture, renderer);
|
||||
temp->setSpriteClip(0, i, jailTexture->getWidth(), 1);
|
||||
const int posX = (i % 2 == 0) ? GAMECANVAS_WIDTH + (i * 3) : -jailTexture->getWidth() - (i * 3);
|
||||
const int posX = (i % 2 == 0) ? param->gameWidth + (i * 3) : -jailTexture->getWidth() - (i * 3);
|
||||
temp->setPosX(posX);
|
||||
temp->setPosY(dest.y + i);
|
||||
jailSprite.push_back(temp);
|
||||
|
||||
@@ -27,6 +27,7 @@ private:
|
||||
std::vector<Sprite *> jailSprite; // Vector con los sprites de cada linea que forman el bitmap JAILGAMES
|
||||
Sprite *sinceSprite; // Sprite para manejar la sinceTexture
|
||||
section_t *section; // Estado del bucle principal para saber si continua o se sale
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
// Variables
|
||||
std::vector<color_t> color; // Vector con los colores para el fade
|
||||
@@ -59,7 +60,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, section_t *section);
|
||||
Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, param_t *param, section_t *section);
|
||||
|
||||
// Destructor
|
||||
~Logo();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "title.h"
|
||||
|
||||
// Constructor
|
||||
Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset, options_t *options, Lang *lang, section_t *section)
|
||||
Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset, options_t *options, Lang *lang, param_t *param, section_t *section)
|
||||
{
|
||||
// Copia las direcciones de los punteros y objetos
|
||||
this->renderer = renderer;
|
||||
@@ -10,11 +10,12 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
|
||||
this->asset = asset;
|
||||
this->options = options;
|
||||
this->lang = lang;
|
||||
this->param = param;
|
||||
this->section = section;
|
||||
|
||||
// Reserva memoria y crea los objetos
|
||||
eventHandler = new SDL_Event();
|
||||
fade = new Fade(renderer);
|
||||
fade = new Fade(renderer, param);
|
||||
|
||||
text1 = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
|
||||
text2 = new Text(asset->get("8bithud.png"), asset->get("8bithud.txt"), renderer);
|
||||
@@ -22,7 +23,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
|
||||
miniLogoTexture = new Texture(renderer, asset->get("logo_jailgames_mini.png"));
|
||||
miniLogoSprite = new Sprite(GAMECANVAS_CENTER_X - miniLogoTexture->getWidth() / 2, 0, miniLogoTexture->getWidth(), miniLogoTexture->getHeight(), miniLogoTexture, renderer);
|
||||
|
||||
backgroundObj = new Background(renderer, screen, asset);
|
||||
backgroundObj = new Background(renderer, screen, asset, param);
|
||||
backgroundObj->setSrcDest(windowArea);
|
||||
backgroundObj->setDstDest(windowArea);
|
||||
backgroundObj->setCloudsSpeed(-0.5f);
|
||||
@@ -31,7 +32,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
|
||||
|
||||
tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight});
|
||||
|
||||
gameLogo = new GameLogo(renderer, screen, asset, GAMECANVAS_CENTER_X, GAMECANVAS_FIRST_QUARTER_Y + 20);
|
||||
gameLogo = new GameLogo(renderer, screen, asset, param, GAMECANVAS_CENTER_X, GAMECANVAS_FIRST_QUARTER_Y + 20);
|
||||
gameLogo->enable();
|
||||
|
||||
// Musicas
|
||||
@@ -355,7 +356,7 @@ void Title::run()
|
||||
// Ejecuta la parte donde se muestran las instrucciones
|
||||
void Title::runInstructions(mode_e mode)
|
||||
{
|
||||
instructions = new Instructions(renderer, screen, asset, input, lang, section);
|
||||
instructions = new Instructions(renderer, screen, asset, input, lang, param, section);
|
||||
instructions->run(mode);
|
||||
delete instructions;
|
||||
}
|
||||
@@ -363,7 +364,7 @@ void Title::runInstructions(mode_e mode)
|
||||
// Ejecuta la parte donde se muestra la tabla de puntuaciones
|
||||
void Title::runHiScoreTable(mode_hiScoreTable_e mode)
|
||||
{
|
||||
hiScoreTable = new HiScoreTable(renderer, screen, asset, input, lang, options, section);
|
||||
hiScoreTable = new HiScoreTable(renderer, screen, asset, input, lang, param, options, section);
|
||||
hiScoreTable->run(mode);
|
||||
delete hiScoreTable;
|
||||
}
|
||||
@@ -371,7 +372,7 @@ void Title::runHiScoreTable(mode_hiScoreTable_e mode)
|
||||
// Ejecuta el juego en modo demo
|
||||
void Title::runDemoGame()
|
||||
{
|
||||
demoGame = new Game(1, 0, renderer, screen, asset, lang, input, true, options, section);
|
||||
demoGame = new Game(1, 0, renderer, screen, asset, lang, input, true, param, options, section);
|
||||
demoGame->run();
|
||||
delete demoGame;
|
||||
}
|
||||
|
||||
@@ -58,15 +58,17 @@ private:
|
||||
Text *text2; // Objeto de texto para poder escribir textos en pantalla
|
||||
Fade *fade; // Objeto para realizar fundidos en pantalla
|
||||
|
||||
JA_Music_t *titleMusic; // Musica para el titulo
|
||||
|
||||
// Variable
|
||||
JA_Music_t *titleMusic; // Musica para el titulo
|
||||
int counter; // Temporizador para la pantalla de titulo
|
||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
||||
bool demo; // Indica si el modo demo estará activo
|
||||
section_t nextSection; // Indica cual es la siguiente sección a cargar cuando termine el contador del titulo
|
||||
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||
Uint8 postFade; // Opción a realizar cuando termina el fundido
|
||||
struct options_t *options; // Variable con todas las variables de las opciones del programa
|
||||
options_t *options; // Variable con todas las variables de las opciones del programa
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
options_t optionsPrevious; // Variable de respaldo para las opciones
|
||||
std::vector<input_t> availableInputDevices; // Vector con todos los metodos de control disponibles
|
||||
std::vector<int> deviceIndex; // Indice para el jugador [i] del vector de dispositivos de entrada disponibles
|
||||
@@ -109,7 +111,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset, options_t *options, Lang *lang, section_t *section);
|
||||
Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset, options_t *options, Lang *lang, param_t *param, section_t *section);
|
||||
|
||||
// Destructor
|
||||
~Title();
|
||||
|
||||
Reference in New Issue
Block a user