barallantme en els putos vectors
This commit is contained in:
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
BIN
data/config/demo2.bin
Normal file
BIN
data/config/demo2.bin
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -6,6 +6,8 @@
|
|||||||
#ifndef CONST_H
|
#ifndef CONST_H
|
||||||
#define CONST_H
|
#define CONST_H
|
||||||
|
|
||||||
|
#define RECORDING
|
||||||
|
|
||||||
// Tamaño de bloque
|
// Tamaño de bloque
|
||||||
#define BLOCK 8
|
#define BLOCK 8
|
||||||
#define HALF_BLOCK BLOCK / 2
|
#define HALF_BLOCK BLOCK / 2
|
||||||
|
|||||||
@@ -16,7 +16,12 @@ Director::Director(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
section = new section_t();
|
section = new section_t();
|
||||||
|
#ifdef RECORDING
|
||||||
|
section->name = SECTION_PROG_GAME;
|
||||||
|
section->subsection = SUBSECTION_GAME_PLAY_1P;
|
||||||
|
#else
|
||||||
section->name = SECTION_PROG_LOGO;
|
section->name = SECTION_PROG_LOGO;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Comprueba los parametros del programa
|
// Comprueba los parametros del programa
|
||||||
checkProgramArguments(argc, argv);
|
checkProgramArguments(argc, argv);
|
||||||
@@ -279,7 +284,8 @@ bool Director::setFileList()
|
|||||||
asset->add(systemFolder + "/config.txt", t_data, false, true);
|
asset->add(systemFolder + "/config.txt", t_data, false, true);
|
||||||
asset->add(systemFolder + "/score.bin", t_data, false, true);
|
asset->add(systemFolder + "/score.bin", t_data, false, true);
|
||||||
asset->add(prefix + "/data/config/param.txt", t_data);
|
asset->add(prefix + "/data/config/param.txt", t_data);
|
||||||
asset->add(prefix + "/data/config/demo.bin", t_data);
|
asset->add(prefix + "/data/config/demo1.bin", t_data);
|
||||||
|
asset->add(prefix + "/data/config/demo2.bin", t_data);
|
||||||
asset->add(prefix + "/data/config/gamecontrollerdb.txt", t_data);
|
asset->add(prefix + "/data/config/gamecontrollerdb.txt", t_data);
|
||||||
|
|
||||||
// Notificaciones
|
// Notificaciones
|
||||||
@@ -419,7 +425,11 @@ void Director::initOptions()
|
|||||||
// Pone unos valores por defecto para las opciones
|
// Pone unos valores por defecto para las opciones
|
||||||
|
|
||||||
// Opciones varias
|
// Opciones varias
|
||||||
|
#ifdef VERBOSE
|
||||||
|
options->console = true;
|
||||||
|
#else
|
||||||
options->console = false;
|
options->console = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Opciones de video
|
// Opciones de video
|
||||||
options->video.mode = 0;
|
options->video.mode = 0;
|
||||||
@@ -818,7 +828,8 @@ void Director::runInstructions()
|
|||||||
// Ejecuta el juego en modo demo
|
// Ejecuta el juego en modo demo
|
||||||
void Director::runDemoGame()
|
void Director::runDemoGame()
|
||||||
{
|
{
|
||||||
demoGame = new Game(1, 0, renderer, screen, asset, lang, input, true, param, options, section, nullptr);
|
const int playerID = (rand() % 2) + 1;
|
||||||
|
demoGame = new Game(playerID, 0, renderer, screen, asset, lang, input, true, param, options, section, nullptr);
|
||||||
demoGame->run();
|
demoGame->run();
|
||||||
delete demoGame;
|
delete demoGame;
|
||||||
}
|
}
|
||||||
|
|||||||
188
source/game.cpp
188
source/game.cpp
@@ -31,8 +31,25 @@ Game::Game(int playerID, int currentStage, SDL_Renderer *renderer, Screen *scree
|
|||||||
// Carga los recursos
|
// Carga los recursos
|
||||||
loadMedia();
|
loadMedia();
|
||||||
|
|
||||||
// Carga ficheros
|
// Inicializa los vectores con los datos para la demo
|
||||||
loadDemoFile();
|
if (demo)
|
||||||
|
{
|
||||||
|
std::vector<demoKeys_t> tmp;
|
||||||
|
this->demo.dataFile.clear();
|
||||||
|
this->demo.dataFile.push_back(tmp);
|
||||||
|
this->demo.dataFile.push_back(tmp);
|
||||||
|
|
||||||
|
// Aleatoriza la asignación del fichero
|
||||||
|
const int index1 = rand() % 2;
|
||||||
|
const int index2 = (index1 + 1) % 2;
|
||||||
|
loadDemoFile(asset->get("demo1.bin"), &this->demo.dataFile.at(index1));
|
||||||
|
loadDemoFile(asset->get("demo2.bin"), &this->demo.dataFile.at(index2));
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef RECORDING
|
||||||
|
// Prepara el vector para recoger los datos
|
||||||
|
//this->demo.dataFile[0].clear();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Establece la máxima puntuación desde fichero o desde las puntuaciones online
|
// Establece la máxima puntuación desde fichero o desde las puntuaciones online
|
||||||
setHiScore();
|
setHiScore();
|
||||||
@@ -171,14 +188,14 @@ void Game::init(int playerID)
|
|||||||
};
|
};
|
||||||
players.clear();
|
players.clear();
|
||||||
|
|
||||||
// Crea los jugadores
|
// Crea los dos jugadores
|
||||||
Player *player1 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((0 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[0], playerAnimations);
|
Player *player1 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((0 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[0], playerAnimations);
|
||||||
players.push_back(player1);
|
players.push_back(player1);
|
||||||
|
|
||||||
Player *player2 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((1 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[1], playerAnimations);
|
Player *player2 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((1 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, renderer, playerTextures[1], playerAnimations);
|
||||||
players.push_back(player2);
|
players.push_back(player2);
|
||||||
|
|
||||||
// playerID es player 1 o player 2
|
// Habilita el jugador seleccionado. playerID es player 1 o player 2
|
||||||
players[playerID - 1]->enable(true);
|
players[playerID - 1]->enable(true);
|
||||||
|
|
||||||
// Variables relacionadas con la dificultad
|
// Variables relacionadas con la dificultad
|
||||||
@@ -243,6 +260,7 @@ void Game::init(int playerID)
|
|||||||
powerBallCounter = 0;
|
powerBallCounter = 0;
|
||||||
coffeeMachineEnabled = false;
|
coffeeMachineEnabled = false;
|
||||||
|
|
||||||
|
// Inicializa las variables para el modo demo
|
||||||
if (demo.enabled)
|
if (demo.enabled)
|
||||||
{
|
{
|
||||||
// Selecciona una pantalla al azar
|
// Selecciona una pantalla al azar
|
||||||
@@ -258,6 +276,13 @@ void Game::init(int playerID)
|
|||||||
currentStage = 6;
|
currentStage = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Activa o no al otro jugador
|
||||||
|
// if (rand() % 3 == 0)
|
||||||
|
{
|
||||||
|
const int otherPlayer = playerID == 1 ? 2 : 1;
|
||||||
|
players[otherPlayer - 1]->enable(true);
|
||||||
|
}
|
||||||
|
|
||||||
// Añade 0, 1 o 2 cafes al jugador
|
// Añade 0, 1 o 2 cafes al jugador
|
||||||
for (int i = 0; i < rand() % 3; ++i)
|
for (int i = 0; i < rand() % 3; ++i)
|
||||||
{
|
{
|
||||||
@@ -286,7 +311,7 @@ void Game::init(int playerID)
|
|||||||
totalPowerToCompleteGame += stage[i].powerToComplete;
|
totalPowerToCompleteGame += stage[i].powerToComplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modo demo
|
// Modo grabar demo
|
||||||
#ifdef RECORDING
|
#ifdef RECORDING
|
||||||
demo.recording = true;
|
demo.recording = true;
|
||||||
#else
|
#else
|
||||||
@@ -603,13 +628,12 @@ bool Game::loadScoreFile()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Carga el fichero de datos para la demo
|
// Carga el fichero de datos para la demo
|
||||||
bool Game::loadDemoFile()
|
bool Game::loadDemoFile(std::string f, std::vector<demoKeys_t> *dataFile)
|
||||||
{
|
{
|
||||||
// Indicador de éxito en la carga
|
// Indicador de éxito en la carga
|
||||||
bool success = true;
|
bool success = true;
|
||||||
const std::string p = asset->get("demo.bin");
|
const std::string filename = f.substr(f.find_last_of("\\/") + 1);
|
||||||
const std::string filename = p.substr(p.find_last_of("\\/") + 1);
|
SDL_RWops *file = SDL_RWFromFile(f.c_str(), "r+b");
|
||||||
SDL_RWops *file = SDL_RWFromFile(p.c_str(), "r+b");
|
|
||||||
|
|
||||||
// El fichero no existe
|
// El fichero no existe
|
||||||
if (file == nullptr)
|
if (file == nullptr)
|
||||||
@@ -620,7 +644,9 @@ bool Game::loadDemoFile()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Creamos el fichero para escritura
|
// Creamos el fichero para escritura
|
||||||
file = SDL_RWFromFile(p.c_str(), "w+b");
|
file = SDL_RWFromFile(f.c_str(), "w+b");
|
||||||
|
|
||||||
|
// Si no existe el fichero
|
||||||
if (file != nullptr)
|
if (file != nullptr)
|
||||||
{
|
{
|
||||||
if (options->console)
|
if (options->console)
|
||||||
@@ -628,24 +654,26 @@ bool Game::loadDemoFile()
|
|||||||
std::cout << "New file (" << filename.c_str() << ") created!" << std::endl;
|
std::cout << "New file (" << filename.c_str() << ") created!" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inicializamos los datos
|
// Inicializas los datos y los guarda en el fichero
|
||||||
|
dataFile->clear();
|
||||||
for (int i = 0; i < TOTAL_DEMO_DATA; ++i)
|
for (int i = 0; i < TOTAL_DEMO_DATA; ++i)
|
||||||
{
|
{
|
||||||
demo.keys.left = 0;
|
demoKeys_t tmp;
|
||||||
demo.keys.right = 0;
|
tmp.left = 0;
|
||||||
demo.keys.noInput = 0;
|
tmp.right = 0;
|
||||||
demo.keys.fire = 0;
|
tmp.noInput = 0;
|
||||||
demo.keys.fireLeft = 0;
|
tmp.fire = 0;
|
||||||
demo.keys.fireRight = 0;
|
tmp.fireLeft = 0;
|
||||||
demo.dataFile[i] = demo.keys;
|
tmp.fireRight = 0;
|
||||||
SDL_RWwrite(file, &demo.dataFile[i], sizeof(demoKeys_t), 1);
|
dataFile->push_back(tmp);
|
||||||
|
SDL_RWwrite(file, &tmp, sizeof(demoKeys_t), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cerramos el fichero
|
// Cerramos el fichero
|
||||||
SDL_RWclose(file);
|
SDL_RWclose(file);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // Si no puede crear el fichero
|
||||||
if (options->console)
|
if (options->console)
|
||||||
{
|
{
|
||||||
std::cout << "Error: Unable to create file " << filename.c_str() << std::endl;
|
std::cout << "Error: Unable to create file " << filename.c_str() << std::endl;
|
||||||
@@ -656,13 +684,22 @@ bool Game::loadDemoFile()
|
|||||||
// El fichero existe
|
// El fichero existe
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Cargamos los datos
|
// Mensaje de proceder a la carga de los datos
|
||||||
if (options->console)
|
if (options->console)
|
||||||
{
|
{
|
||||||
std::cout << "Reading file " << filename.c_str() << std::endl;
|
std::cout << "Reading file " << filename.c_str() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inicializa el destino
|
||||||
|
dataFile->clear();
|
||||||
|
|
||||||
|
// Lee todos los datos del fichero y los deja en el destino
|
||||||
for (int i = 0; i < TOTAL_DEMO_DATA; ++i)
|
for (int i = 0; i < TOTAL_DEMO_DATA; ++i)
|
||||||
SDL_RWread(file, &demo.dataFile[i], sizeof(demoKeys_t), 1);
|
{
|
||||||
|
demoKeys_t tmp;
|
||||||
|
SDL_RWread(file, &tmp, sizeof(demoKeys_t), 1);
|
||||||
|
dataFile->push_back(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
// Cierra el fichero
|
// Cierra el fichero
|
||||||
SDL_RWclose(file);
|
SDL_RWclose(file);
|
||||||
@@ -709,17 +746,16 @@ bool Game::saveScoreFile()
|
|||||||
bool Game::saveDemoFile()
|
bool Game::saveDemoFile()
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
const std::string p = asset->get("demo.bin");
|
const std::string p = asset->get("demo1.bin");
|
||||||
const std::string filename = p.substr(p.find_last_of("\\/") + 1);
|
const std::string filename = p.substr(p.find_last_of("\\/") + 1);
|
||||||
if (demo.recording)
|
|
||||||
{
|
|
||||||
SDL_RWops *file = SDL_RWFromFile(p.c_str(), "w+b");
|
SDL_RWops *file = SDL_RWFromFile(p.c_str(), "w+b");
|
||||||
if (file != nullptr)
|
if (file != nullptr)
|
||||||
{
|
{
|
||||||
// Guardamos los datos
|
// Guardamos los datos
|
||||||
for (int i = 0; i < TOTAL_DEMO_DATA; ++i)
|
for (int i = 0; i < TOTAL_DEMO_DATA; ++i)
|
||||||
{
|
{
|
||||||
SDL_RWwrite(file, &demo.dataFile[i], sizeof(demoKeys_t), 1);
|
SDL_RWwrite(file, &demo.dataFile[0][i], sizeof(demoKeys_t), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options->console)
|
if (options->console)
|
||||||
@@ -737,7 +773,7 @@ bool Game::saveDemoFile()
|
|||||||
std::cout << "Error: Unable to save " << filename.c_str() << " file! " << SDL_GetError() << std::endl;
|
std::cout << "Error: Unable to save " << filename.c_str() << " file! " << SDL_GetError() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1551,7 +1587,7 @@ void Game::updatePlayers()
|
|||||||
{
|
{
|
||||||
killPlayer(player);
|
killPlayer(player);
|
||||||
|
|
||||||
if (demo.enabled && !player->isAlive())
|
if (demo.enabled && allPlayersAreDead())
|
||||||
{
|
{
|
||||||
fade->setType(FADE_RANDOM_SQUARE);
|
fade->setType(FADE_RANDOM_SQUARE);
|
||||||
fade->activate();
|
fade->activate();
|
||||||
@@ -1631,13 +1667,7 @@ void Game::updateStage()
|
|||||||
void Game::updateDeath()
|
void Game::updateDeath()
|
||||||
{
|
{
|
||||||
// Comprueba si todos los jugadores estan muertos
|
// Comprueba si todos los jugadores estan muertos
|
||||||
bool allPlayersAreDead = true;
|
if (allPlayersAreDead())
|
||||||
for (auto player : players)
|
|
||||||
{
|
|
||||||
allPlayersAreDead &= (!player->isAlive() || !player->isEnabled());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allPlayersAreDead)
|
|
||||||
{
|
{
|
||||||
if (deathCounter > 0)
|
if (deathCounter > 0)
|
||||||
{
|
{
|
||||||
@@ -2533,24 +2563,22 @@ void Game::update()
|
|||||||
// Actualiza el contador de juego
|
// Actualiza el contador de juego
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
// Incrementa el contador de la demo
|
|
||||||
if (demo.enabled)
|
if (demo.enabled)
|
||||||
{
|
{
|
||||||
|
// Incrementa el contador de la demo
|
||||||
if (demo.counter < TOTAL_DEMO_DATA)
|
if (demo.counter < TOTAL_DEMO_DATA)
|
||||||
{
|
{
|
||||||
demo.counter++;
|
demo.counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activa el fundido antes de acabar con los datos de la demo
|
||||||
if (demo.counter == TOTAL_DEMO_DATA - 200)
|
if (demo.counter == TOTAL_DEMO_DATA - 200)
|
||||||
{
|
{
|
||||||
fade->setType(FADE_RANDOM_SQUARE);
|
fade->setType(FADE_RANDOM_SQUARE);
|
||||||
fade->activate();
|
fade->activate();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
section->name = SECTION_PROG_HI_SCORE_TABLE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Si ha terminado el fundido, cambia de sección
|
||||||
if (fade->hasEnded())
|
if (fade->hasEnded())
|
||||||
{
|
{
|
||||||
section->name = SECTION_PROG_HI_SCORE_TABLE;
|
section->name = SECTION_PROG_HI_SCORE_TABLE;
|
||||||
@@ -2559,16 +2587,21 @@ void Game::update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RECORDING
|
#ifdef RECORDING
|
||||||
|
// Solo mira y guarda el input en cada update
|
||||||
checkInput();
|
checkInput();
|
||||||
|
|
||||||
if (demo.recording)
|
// Incrementa el contador de la demo
|
||||||
|
if (demo.counter < TOTAL_DEMO_DATA)
|
||||||
{
|
{
|
||||||
if (demo.counter >= TOTAL_DEMO_DATA)
|
demo.counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si se ha llenado el vector con datos, sale del programa
|
||||||
|
else
|
||||||
{
|
{
|
||||||
section->name = SECTION_PROG_QUIT;
|
section->name = SECTION_PROG_QUIT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Comprueba si la música ha de estar sonando
|
// Comprueba si la música ha de estar sonando
|
||||||
@@ -2760,51 +2793,55 @@ void Game::checkInput()
|
|||||||
// Modo Demo activo
|
// Modo Demo activo
|
||||||
if (demo.enabled)
|
if (demo.enabled)
|
||||||
{
|
{
|
||||||
const int index = 0;
|
for (auto player : players)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
if (player->isAlive() && player->isEnabled())
|
||||||
|
{
|
||||||
// Comprueba direcciones
|
// Comprueba direcciones
|
||||||
if (demo.dataFile[demo.counter].left == 1)
|
if (demo.dataFile[i][demo.counter].left == 1)
|
||||||
{
|
{
|
||||||
players[index]->setInput(input_left);
|
player->setInput(input_left);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (demo.dataFile[demo.counter].right == 1)
|
else if (demo.dataFile[i][demo.counter].right == 1)
|
||||||
{
|
{
|
||||||
players[index]->setInput(input_right);
|
player->setInput(input_right);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (demo.dataFile[demo.counter].noInput == 1)
|
else if (demo.dataFile[i][demo.counter].noInput == 1)
|
||||||
{
|
{
|
||||||
players[index]->setInput(input_null);
|
player->setInput(input_null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba botones
|
// Comprueba botones
|
||||||
if (demo.dataFile[demo.counter].fire == 1)
|
if (demo.dataFile[i][demo.counter].fire == 1)
|
||||||
{
|
{
|
||||||
if (players[index]->canFire())
|
if (player->canFire())
|
||||||
{
|
{
|
||||||
players[index]->setInput(input_fire_center);
|
player->setInput(input_fire_center);
|
||||||
createBullet(players[index]->getPosX() + (players[index]->getWidth() / 2) - 4, players[index]->getPosY() + (players[index]->getHeight() / 2), BULLET_UP, players[index]->isPowerUp(), index);
|
createBullet(player->getPosX() + (player->getWidth() / 2) - 4, player->getPosY() + (player->getHeight() / 2), BULLET_UP, player->isPowerUp(), i);
|
||||||
players[index]->setFireCooldown(10);
|
player->setFireCooldown(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (demo.dataFile[demo.counter].fireLeft == 1)
|
else if (demo.dataFile[i][demo.counter].fireLeft == 1)
|
||||||
{
|
{
|
||||||
if (players[index]->canFire())
|
if (player->canFire())
|
||||||
{
|
{
|
||||||
players[index]->setInput(input_fire_left);
|
player->setInput(input_fire_left);
|
||||||
createBullet(players[index]->getPosX() + (players[index]->getWidth() / 2) - 4, players[index]->getPosY() + (players[index]->getHeight() / 2), BULLET_LEFT, players[index]->isPowerUp(), index);
|
createBullet(player->getPosX() + (player->getWidth() / 2) - 4, player->getPosY() + (player->getHeight() / 2), BULLET_LEFT, player->isPowerUp(), i);
|
||||||
players[index]->setFireCooldown(10);
|
player->setFireCooldown(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (demo.dataFile[demo.counter].fireRight == 1)
|
else if (demo.dataFile[i][demo.counter].fireRight == 1)
|
||||||
{
|
{
|
||||||
if (players[index]->canFire())
|
if (player->canFire())
|
||||||
{
|
{
|
||||||
players[index]->setInput(input_fire_right);
|
player->setInput(input_fire_right);
|
||||||
createBullet(players[index]->getPosX() + (players[index]->getWidth() / 2) - 4, players[index]->getPosY() + (players[index]->getHeight() / 2), BULLET_RIGHT, players[index]->isPowerUp(), index);
|
createBullet(player->getPosX() + (player->getWidth() / 2) - 4, player->getPosY() + (player->getHeight() / 2), BULLET_RIGHT, player->isPowerUp(), i);
|
||||||
players[index]->setFireCooldown(10);
|
player->setFireCooldown(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2815,6 +2852,10 @@ void Game::checkInput()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Modo Demo no activo
|
// Modo Demo no activo
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2914,7 +2955,7 @@ void Game::checkInput()
|
|||||||
{
|
{
|
||||||
if (demo.counter < TOTAL_DEMO_DATA)
|
if (demo.counter < TOTAL_DEMO_DATA)
|
||||||
{
|
{
|
||||||
demo.dataFile[demo.counter] = demo.keys;
|
demo.dataFile[0][demo.counter] = demo.keys;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -3220,7 +3261,7 @@ bool Game::allPlayersAreDead()
|
|||||||
bool success = true;
|
bool success = true;
|
||||||
for (auto player : players)
|
for (auto player : players)
|
||||||
{
|
{
|
||||||
success &= (!player->isAlive());
|
success &= (!player->isAlive() || !player->isEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
@@ -3355,10 +3396,15 @@ void Game::setHiScore()
|
|||||||
// Actualiza el marcador
|
// Actualiza el marcador
|
||||||
void Game::updateScoreboard()
|
void Game::updateScoreboard()
|
||||||
{
|
{
|
||||||
|
// Jugador 1
|
||||||
scoreboard->setScore1(players[0]->getScore());
|
scoreboard->setScore1(players[0]->getScore());
|
||||||
scoreboard->setMult1(players[0]->getScoreMultiplier());
|
scoreboard->setMult1(players[0]->getScoreMultiplier());
|
||||||
scoreboard->setScore2(players[0]->getScore());
|
|
||||||
scoreboard->setMult2(players[0]->getScoreMultiplier());
|
// Jugador 2
|
||||||
|
scoreboard->setScore2(players[1]->getScore());
|
||||||
|
scoreboard->setMult2(players[1]->getScoreMultiplier());
|
||||||
|
|
||||||
|
// Resto de marcador
|
||||||
scoreboard->setStage(stage[currentStage].number);
|
scoreboard->setStage(stage[currentStage].number);
|
||||||
scoreboard->setPower((float)stage[currentStage].currentPower / (float)stage[currentStage].powerToComplete);
|
scoreboard->setPower((float)stage[currentStage].currentPower / (float)stage[currentStage].powerToComplete);
|
||||||
scoreboard->setHiScore(hiScore);
|
scoreboard->setHiScore(hiScore);
|
||||||
|
|||||||
@@ -102,9 +102,9 @@ private:
|
|||||||
{
|
{
|
||||||
bool enabled; // Indica si está activo el modo demo
|
bool enabled; // Indica si está activo el modo demo
|
||||||
bool recording; // Indica si está activado el modo para grabar la demo
|
bool recording; // Indica si está activado el modo para grabar la demo
|
||||||
Uint16 counter; // Contador para el modo demo
|
int counter; // Contador para el modo demo
|
||||||
demoKeys_t keys; // Variable con las pulsaciones de teclas del modo demo
|
demoKeys_t keys; // Variable con las pulsaciones de teclas del modo demo
|
||||||
demoKeys_t dataFile[TOTAL_DEMO_DATA]; // Datos del fichero con los movimientos para la demo
|
demoKeys_t dataFile[2][TOTAL_DEMO_DATA]; // Vector con diferentes sets de datos con los movimientos para la demo
|
||||||
};
|
};
|
||||||
|
|
||||||
// Objetos y punteros
|
// Objetos y punteros
|
||||||
@@ -232,7 +232,7 @@ private:
|
|||||||
bool loadScoreFile();
|
bool loadScoreFile();
|
||||||
|
|
||||||
// Carga el fichero de datos para la demo
|
// Carga el fichero de datos para la demo
|
||||||
bool loadDemoFile();
|
bool loadDemoFile(std::string fileName, std::vector<demoKeys_t> *dataFile);
|
||||||
|
|
||||||
// Guarda el fichero de puntos
|
// Guarda el fichero de puntos
|
||||||
bool saveScoreFile();
|
bool saveScoreFile();
|
||||||
|
|||||||
@@ -95,52 +95,62 @@ void Scoreboard::render()
|
|||||||
SDL_RenderCopy(renderer, background, nullptr, &rect);
|
SDL_RenderCopy(renderer, background, nullptr, &rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setScore1(int score)
|
void Scoreboard::setScore1(int score)
|
||||||
{
|
{
|
||||||
score1 = score;
|
score1 = score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setScore2(int score)
|
void Scoreboard::setScore2(int score)
|
||||||
{
|
{
|
||||||
score2 = score;
|
score2 = score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setMult1(float mult)
|
void Scoreboard::setMult1(float mult)
|
||||||
{
|
{
|
||||||
mult1 = mult;
|
mult1 = mult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setMult2(float mult)
|
void Scoreboard::setMult2(float mult)
|
||||||
{
|
{
|
||||||
mult2 = mult;
|
mult2 = mult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setStage(int stage)
|
void Scoreboard::setStage(int stage)
|
||||||
{
|
{
|
||||||
this->stage = stage;
|
this->stage = stage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setHiScore(int hiScore)
|
void Scoreboard::setHiScore(int hiScore)
|
||||||
{
|
{
|
||||||
this->hiScore = hiScore;
|
this->hiScore = hiScore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setPower(float power)
|
void Scoreboard::setPower(float power)
|
||||||
{
|
{
|
||||||
this->power = power;
|
this->power = power;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setHiScoreName(std::string name)
|
void Scoreboard::setHiScoreName(std::string name)
|
||||||
{
|
{
|
||||||
hiScoreName = name;
|
hiScoreName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setColor(color_t color)
|
void Scoreboard::setColor(color_t color)
|
||||||
{
|
{
|
||||||
this->color = color;
|
this->color = color;
|
||||||
fillBackgroundTexture();
|
fillBackgroundTexture();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void Scoreboard::setPos(SDL_Rect rect)
|
void Scoreboard::setPos(SDL_Rect rect)
|
||||||
{
|
{
|
||||||
this->rect = rect;
|
this->rect = rect;
|
||||||
|
|||||||
@@ -74,15 +74,34 @@ public:
|
|||||||
// Pinta el marcador
|
// Pinta el marcador
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setScore1(int score);
|
void setScore1(int score);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setScore2(int score);
|
void setScore2(int score);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setMult1(float mult);
|
void setMult1(float mult);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setMult2(float mult);
|
void setMult2(float mult);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setStage(int stage);
|
void setStage(int stage);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setHiScore(int hiScore);
|
void setHiScore(int hiScore);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setPower(float power);
|
void setPower(float power);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setHiScoreName(std::string name);
|
void setHiScoreName(std::string name);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setColor(color_t color);
|
void setColor(color_t color);
|
||||||
|
|
||||||
|
// Establece el valor de la variable
|
||||||
void setPos(SDL_Rect rect);
|
void setPos(SDL_Rect rect);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user