Acabada la clase scoreboard.. mas o menos
This commit is contained in:
2
Makefile
2
Makefile
@@ -1,4 +1,4 @@
|
|||||||
executable = coffee_crisis_ae
|
executable = coffee_crisis_arcade_edition
|
||||||
source = source/*.cpp source/common/*.cpp
|
source = source/*.cpp source/common/*.cpp
|
||||||
appName = Coffee Crisis Arcade Edition
|
appName = Coffee Crisis Arcade Edition
|
||||||
releaseFolder = ccae_release
|
releaseFolder = ccae_release
|
||||||
|
|||||||
@@ -100,18 +100,6 @@ struct input_t
|
|||||||
Uint8 deviceType; // Tipo de dispositivo (teclado o mando)
|
Uint8 deviceType; // Tipo de dispositivo (teclado o mando)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Estructura para el servicio online
|
|
||||||
struct online_t
|
|
||||||
{
|
|
||||||
bool enabled; // Indica si se quiere usar el modo online o no
|
|
||||||
bool sessionEnabled; // Indica ya se ha hecho login
|
|
||||||
std::string server; // Servidor para los servicios online
|
|
||||||
int port; // Puerto del servidor
|
|
||||||
std::string gameID; // Identificador del juego para los servicios online
|
|
||||||
std::string jailerID; // Identificador del jugador para los servicios online
|
|
||||||
int score; // Puntuación almacenada online
|
|
||||||
};
|
|
||||||
|
|
||||||
// Estructura con opciones de la pantalla
|
// Estructura con opciones de la pantalla
|
||||||
struct op_screen_t
|
struct op_screen_t
|
||||||
{
|
{
|
||||||
@@ -150,7 +138,6 @@ struct options_t
|
|||||||
palette_e palette; // Paleta de colores a usar en el juego
|
palette_e palette; // Paleta de colores a usar en el juego
|
||||||
bool console; // Indica si ha de mostrar información por la consola de texto
|
bool console; // Indica si ha de mostrar información por la consola de texto
|
||||||
|
|
||||||
online_t online; // Datos del servicio online
|
|
||||||
op_screen_t screen; // Opciones relativas a la clase screen
|
op_screen_t screen; // Opciones relativas a la clase screen
|
||||||
op_notification_t notifications; // Opciones relativas a las notificaciones;
|
op_notification_t notifications; // Opciones relativas a las notificaciones;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ Director::Director(int argc, char *argv[])
|
|||||||
// Crea la carpeta del sistema donde guardar datos
|
// Crea la carpeta del sistema donde guardar datos
|
||||||
createSystemFolder("jailgames");
|
createSystemFolder("jailgames");
|
||||||
#ifndef DEBUG
|
#ifndef DEBUG
|
||||||
createSystemFolder("jailgames/coffee_crisis");
|
createSystemFolder("jailgames/coffee_crisis_arcade_edition");
|
||||||
#else
|
#else
|
||||||
createSystemFolder("jailgames/coffee_crisis_debug");
|
createSystemFolder("jailgames/coffee_crisis_arcade_edition_debug");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Crea el objeto que controla los ficheros de recursos
|
// Crea el objeto que controla los ficheros de recursos
|
||||||
@@ -395,18 +395,6 @@ void Director::initOptions()
|
|||||||
options->language = ba_BA;
|
options->language = ba_BA;
|
||||||
options->console = false;
|
options->console = false;
|
||||||
|
|
||||||
// Opciones online
|
|
||||||
options->online.enabled = false;
|
|
||||||
options->online.server = "jaildoctor.duckdns.org";
|
|
||||||
options->online.port = 9911;
|
|
||||||
#ifdef DEBUG
|
|
||||||
options->online.gameID = "coffee_crisis_test2";
|
|
||||||
#else
|
|
||||||
options->online.gameID = "coffee_crisis";
|
|
||||||
#endif
|
|
||||||
options->online.jailerID = "";
|
|
||||||
options->online.score = 0;
|
|
||||||
|
|
||||||
// Opciones de las notificaciones
|
// Opciones de las notificaciones
|
||||||
options->notifications.posV = pos_top;
|
options->notifications.posV = pos_top;
|
||||||
options->notifications.posH = pos_left;
|
options->notifications.posH = pos_left;
|
||||||
@@ -619,13 +607,6 @@ bool Director::saveConfigFile()
|
|||||||
file << "input0=" + std::to_string(options->input[0].deviceType) + "\n";
|
file << "input0=" + std::to_string(options->input[0].deviceType) + "\n";
|
||||||
file << "input1=" + std::to_string(options->input[1].deviceType) + "\n";
|
file << "input1=" + std::to_string(options->input[1].deviceType) + "\n";
|
||||||
|
|
||||||
// Opciones sobre la conexión online
|
|
||||||
file << "\n## ONLINE OPTIONS\n";
|
|
||||||
file << "enabled=" + boolToString(options->online.enabled) + "\n";
|
|
||||||
file << "server=" + options->online.server + "\n";
|
|
||||||
file << "port=" + std::to_string(options->online.port) + "\n";
|
|
||||||
file << "jailerID=" + options->online.jailerID + "\n";
|
|
||||||
|
|
||||||
// Opciones de las notificaciones
|
// Opciones de las notificaciones
|
||||||
file << "\n## NOTIFICATION OPTIONS\n";
|
file << "\n## NOTIFICATION OPTIONS\n";
|
||||||
file << "## notifications.posV = pos_top | pos_bottom\n";
|
file << "## notifications.posV = pos_top | pos_bottom\n";
|
||||||
@@ -810,31 +791,6 @@ bool Director::setOptions(options_t *options, std::string var, std::string value
|
|||||||
options->input[1].deviceType = std::stoi(value);
|
options->input[1].deviceType = std::stoi(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opciones onlince
|
|
||||||
else if (var == "enabled")
|
|
||||||
{
|
|
||||||
options->online.enabled = stringToBool(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (var == "server")
|
|
||||||
{
|
|
||||||
options->online.server = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (var == "port")
|
|
||||||
{
|
|
||||||
if (value == "")
|
|
||||||
{
|
|
||||||
value = "0";
|
|
||||||
}
|
|
||||||
options->online.port = std::stoi(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (var == "jailerID")
|
|
||||||
{
|
|
||||||
options->online.jailerID = toLower(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Opciones de notificaciones
|
// Opciones de notificaciones
|
||||||
else if (var == "notifications.posH")
|
else if (var == "notifications.posH")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
#define DIRECTOR_H
|
#define DIRECTOR_H
|
||||||
|
|
||||||
// Textos
|
// Textos
|
||||||
#define WINDOW_CAPTION "Coffee Crisis"
|
#define WINDOW_CAPTION "Coffee Crisis Arcade Edition"
|
||||||
|
|
||||||
class Director
|
class Director
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -246,6 +246,15 @@ void Game::init()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (difficulty == DIFFICULTY_NORMAL)
|
||||||
|
{
|
||||||
|
scoreboard->setColor({46, 63, 71});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scoreboard->setColor(difficultyColor);
|
||||||
|
}
|
||||||
|
|
||||||
gameCompleted = false;
|
gameCompleted = false;
|
||||||
gameCompletedCounter = 0;
|
gameCompletedCounter = 0;
|
||||||
section->name = SECTION_PROG_GAME;
|
section->name = SECTION_PROG_GAME;
|
||||||
@@ -1574,12 +1583,6 @@ void Game::updateHiScore()
|
|||||||
// Actualiza la máxima puntuación
|
// Actualiza la máxima puntuación
|
||||||
hiScore = player->getScore();
|
hiScore = player->getScore();
|
||||||
|
|
||||||
// Cambia el nombre del jugador con la máxima puntuación
|
|
||||||
if (options->online.enabled)
|
|
||||||
{
|
|
||||||
hiScoreName = options->online.jailerID.substr(0, 12) + " - ";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Almacena la máxima puntuación en el fichero junto con un checksum
|
// Almacena la máxima puntuación en el fichero junto con un checksum
|
||||||
scoreDataFile[0] = hiScore;
|
scoreDataFile[0] = hiScore;
|
||||||
scoreDataFile[1] = hiScore % 43;
|
scoreDataFile[1] = hiScore % 43;
|
||||||
@@ -2644,6 +2647,9 @@ void Game::update()
|
|||||||
// Actualiza las variables del jugador
|
// Actualiza las variables del jugador
|
||||||
updatePlayers();
|
updatePlayers();
|
||||||
|
|
||||||
|
// Actualiza el marcador
|
||||||
|
updateScoreboard();
|
||||||
|
|
||||||
// Actualiza el fondo
|
// Actualiza el fondo
|
||||||
updateBackground();
|
updateBackground();
|
||||||
|
|
||||||
@@ -3807,4 +3813,15 @@ void Game::setHiScore()
|
|||||||
loadScoreFile();
|
loadScoreFile();
|
||||||
|
|
||||||
hiScoreName = "";
|
hiScoreName = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actualiza el marcador
|
||||||
|
void Game::updateScoreboard()
|
||||||
|
{
|
||||||
|
scoreboard->setScore1(players[0]->getScore());
|
||||||
|
scoreboard->setMult1(players[0]->getScoreMultiplier());
|
||||||
|
scoreboard->setStage(stage[currentStage].number);
|
||||||
|
scoreboard->setPower((float)stage[currentStage].currentPower / (float)stage[currentStage].powerToComplete);
|
||||||
|
scoreboard->setHiScore(hiScore);
|
||||||
|
scoreboard->setHiScoreName(hiScoreName);
|
||||||
}
|
}
|
||||||
@@ -137,22 +137,22 @@ private:
|
|||||||
std::vector<Texture *> player2Textures; // Vector con las texturas del jugador
|
std::vector<Texture *> player2Textures; // Vector con las texturas del jugador
|
||||||
std::vector<std::vector<Texture *>> playerTextures; // Vector con todas las texturas de los jugadores;
|
std::vector<std::vector<Texture *>> playerTextures; // Vector con todas las texturas de los jugadores;
|
||||||
|
|
||||||
Texture *gameBuildingsTexture; // Textura con los edificios de fondo
|
Texture *gameBuildingsTexture; // Textura con los edificios de fondo
|
||||||
Texture *gameCloudsTexture; // Textura con las nubes de fondo
|
Texture *gameCloudsTexture; // Textura con las nubes de fondo
|
||||||
Texture *gameGrassTexture; // Textura con la hierba del suelo
|
Texture *gameGrassTexture; // Textura con la hierba del suelo
|
||||||
Texture *gameSkyColorsTexture; // Textura con los diferentes colores de fondo del juego
|
Texture *gameSkyColorsTexture; // Textura con los diferentes colores de fondo del juego
|
||||||
Texture *gameTextTexture; // Textura para los sprites con textos
|
Texture *gameTextTexture; // Textura para los sprites con textos
|
||||||
Texture *gameOverTexture; // Textura para la pantalla de game over
|
Texture *gameOverTexture; // Textura para la pantalla de game over
|
||||||
Texture *gameOverEndTexture; // Textura para la pantalla de game over de acabar el juego
|
Texture *gameOverEndTexture; // Textura para la pantalla de game over de acabar el juego
|
||||||
|
|
||||||
std::vector<std::vector<std::string> *> itemAnimations; // Vector con las animaciones de los items
|
std::vector<std::vector<std::string> *> itemAnimations; // Vector con las animaciones de los items
|
||||||
std::vector<std::vector<std::string> *> playerAnimations; // Vector con las animaciones del jugador
|
std::vector<std::vector<std::string> *> playerAnimations; // Vector con las animaciones del jugador
|
||||||
std::vector<std::vector<std::string> *> balloonAnimations; // Vector con las animaciones de los globos
|
std::vector<std::vector<std::string> *> balloonAnimations; // Vector con las animaciones de los globos
|
||||||
|
|
||||||
Text *text; // Fuente para los textos del juego
|
Text *text; // Fuente para los textos del juego
|
||||||
Text *textBig; // Fuente de texto grande
|
Text *textBig; // Fuente de texto grande
|
||||||
Text *textNokia2; // Otra fuente de texto para mensajes
|
Text *textNokia2; // Otra fuente de texto para mensajes
|
||||||
Text *textNokiaBig2; // Y la versión en grande
|
Text *textNokiaBig2; // Y la versión en grande
|
||||||
|
|
||||||
Menu *gameOverMenu; // Menú de la pantalla de game over
|
Menu *gameOverMenu; // Menú de la pantalla de game over
|
||||||
Menu *pauseMenu; // Menú de la pantalla de pausa
|
Menu *pauseMenu; // Menú de la pantalla de pausa
|
||||||
@@ -505,6 +505,9 @@ private:
|
|||||||
// 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
|
||||||
void setHiScore();
|
void setHiScore();
|
||||||
|
|
||||||
|
// Actualiza el marcador
|
||||||
|
void updateScoreboard();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// 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, options_t *options, section_t *section);
|
||||||
|
|||||||
@@ -16,15 +16,15 @@ Scoreboard::Scoreboard(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lan
|
|||||||
textScoreBoard = new Text(asset->get("8bithud.png"), asset->get("8bithud.txt"), renderer);
|
textScoreBoard = new Text(asset->get("8bithud.png"), asset->get("8bithud.txt"), renderer);
|
||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
stage = 0;
|
stage = 1;
|
||||||
score1 = 0;
|
score1 = 0;
|
||||||
score2 = 0;
|
score2 = 0;
|
||||||
mult1 = 0;
|
mult1 = 1;
|
||||||
mult2 = 0;
|
mult2 = 1;
|
||||||
hiScore = 0;
|
hiScore = 0;
|
||||||
power = 0;
|
power = 0;
|
||||||
hiScoreName = "";
|
hiScoreName = "";
|
||||||
color = {255, 0, 0};
|
color = {0, 0, 0};
|
||||||
}
|
}
|
||||||
|
|
||||||
Scoreboard::~Scoreboard()
|
Scoreboard::~Scoreboard()
|
||||||
@@ -120,9 +120,7 @@ void Scoreboard::render()
|
|||||||
powerMeterSprite->setPosY(offset2);
|
powerMeterSprite->setPosY(offset2);
|
||||||
powerMeterSprite->setSpriteClip(0, 0, 40, 7);
|
powerMeterSprite->setSpriteClip(0, 0, 40, 7);
|
||||||
powerMeterSprite->render();
|
powerMeterSprite->render();
|
||||||
// const float percent = (stage[currentStage].currentPower * 40.0f) / stage[currentStage].powerToComplete;
|
powerMeterSprite->setSpriteClip(40, 0, int(power * 40.0f), 7);
|
||||||
const float percent = 0.5;
|
|
||||||
powerMeterSprite->setSpriteClip(40, 0, (int)percent, 7);
|
|
||||||
powerMeterSprite->render();
|
powerMeterSprite->render();
|
||||||
|
|
||||||
// HI-SCORE
|
// HI-SCORE
|
||||||
@@ -140,12 +138,12 @@ void Scoreboard::setScore2(int score)
|
|||||||
score2 = score;
|
score2 = score;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scoreboard::setMult1(int mult)
|
void Scoreboard::setMult1(float mult)
|
||||||
{
|
{
|
||||||
mult1 = mult;
|
mult1 = mult;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scoreboard::setMult2(int mult)
|
void Scoreboard::setMult2(float mult)
|
||||||
{
|
{
|
||||||
mult2 = mult;
|
mult2 = mult;
|
||||||
}
|
}
|
||||||
@@ -160,7 +158,7 @@ void Scoreboard::setHiScore(int hiScore)
|
|||||||
this->hiScore = hiScore;
|
this->hiScore = hiScore;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scoreboard::setPower(int power)
|
void Scoreboard::setPower(float power)
|
||||||
{
|
{
|
||||||
this->power = power;
|
this->power = power;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,18 +28,18 @@ private:
|
|||||||
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
||||||
|
|
||||||
Texture *gamePowerMeterTexture; // Textura con el marcador de poder de la fase
|
Texture *gamePowerMeterTexture; // Textura con el marcador de poder de la fase
|
||||||
Sprite *powerMeterSprite; // Sprite para el medidor de poder de la fase
|
Sprite *powerMeterSprite; // Sprite para el medidor de poder de la fase
|
||||||
Text *textScoreBoard; // Fuente para el marcador del juego
|
Text *textScoreBoard; // Fuente para el marcador del juego
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
struct options_t *options; // Variable con todas las variables de las opciones del programa
|
struct options_t *options; // Variable con todas las variables de las opciones del programa
|
||||||
int stage; // Numero de fase actual
|
int stage; // Numero de fase actual
|
||||||
int score1; // Puntuación del jugador 1
|
int score1; // Puntuación del jugador 1
|
||||||
int score2; // Puntuación del jugador 2
|
int score2; // Puntuación del jugador 2
|
||||||
int mult1; // Multiplicador del jugador 1
|
float mult1; // Multiplicador del jugador 1
|
||||||
int mult2; // MUltiplicador del jugador 2
|
float mult2; // MUltiplicador del jugador 2
|
||||||
int hiScore; // Mäxima puntuación
|
int hiScore; // Mäxima puntuación
|
||||||
int power; // Poder actual de la fase
|
float power; // Poder actual de la fase
|
||||||
std::string hiScoreName; // Nombre del jugador con la máxima puntuación
|
std::string hiScoreName; // Nombre del jugador con la máxima puntuación
|
||||||
color_t color; // Color del marcador
|
color_t color; // Color del marcador
|
||||||
|
|
||||||
@@ -55,11 +55,11 @@ public:
|
|||||||
|
|
||||||
void setScore1(int score);
|
void setScore1(int score);
|
||||||
void setScore2(int score);
|
void setScore2(int score);
|
||||||
void setMult1(int mult);
|
void setMult1(float mult);
|
||||||
void setMult2(int mult);
|
void setMult2(float mult);
|
||||||
void setStage(int stage);
|
void setStage(int stage);
|
||||||
void setHiScore(int hiScore);
|
void setHiScore(int hiScore);
|
||||||
void setPower(int power);
|
void setPower(float power);
|
||||||
void setHiScoreName(std::string name);
|
void setHiScoreName(std::string name);
|
||||||
void setColor(color_t color);
|
void setColor(color_t color);
|
||||||
|
|
||||||
|
|||||||
@@ -575,14 +575,6 @@ void Title::runInstructions(mode_e mode)
|
|||||||
// Ejecuta la parte donde se muestra la tabla de puntuaciones
|
// Ejecuta la parte donde se muestra la tabla de puntuaciones
|
||||||
void Title::runHiScoreTable(mode_hiScoreTable_e mode)
|
void Title::runHiScoreTable(mode_hiScoreTable_e mode)
|
||||||
{
|
{
|
||||||
if (!options->online.enabled)
|
|
||||||
{
|
|
||||||
section->name = SECTION_PROG_TITLE;
|
|
||||||
section->subsection = SUBSECTION_TITLE_1;
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
hiScoreTable = new HiScoreTable(renderer, screen, asset, input, lang, options, section);
|
hiScoreTable = new HiScoreTable(renderer, screen, asset, input, lang, options, section);
|
||||||
hiScoreTable->run(mode);
|
hiScoreTable->run(mode);
|
||||||
delete hiScoreTable;
|
delete hiScoreTable;
|
||||||
|
|||||||
Reference in New Issue
Block a user