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
|
||||
appName = Coffee Crisis Arcade Edition
|
||||
releaseFolder = ccae_release
|
||||
|
||||
@@ -100,18 +100,6 @@ struct input_t
|
||||
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
|
||||
struct op_screen_t
|
||||
{
|
||||
@@ -150,7 +138,6 @@ struct options_t
|
||||
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
|
||||
|
||||
online_t online; // Datos del servicio online
|
||||
op_screen_t screen; // Opciones relativas a la clase screen
|
||||
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
|
||||
createSystemFolder("jailgames");
|
||||
#ifndef DEBUG
|
||||
createSystemFolder("jailgames/coffee_crisis");
|
||||
createSystemFolder("jailgames/coffee_crisis_arcade_edition");
|
||||
#else
|
||||
createSystemFolder("jailgames/coffee_crisis_debug");
|
||||
createSystemFolder("jailgames/coffee_crisis_arcade_edition_debug");
|
||||
#endif
|
||||
|
||||
// Crea el objeto que controla los ficheros de recursos
|
||||
@@ -395,18 +395,6 @@ void Director::initOptions()
|
||||
options->language = ba_BA;
|
||||
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
|
||||
options->notifications.posV = pos_top;
|
||||
options->notifications.posH = pos_left;
|
||||
@@ -619,13 +607,6 @@ bool Director::saveConfigFile()
|
||||
file << "input0=" + std::to_string(options->input[0].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
|
||||
file << "\n## NOTIFICATION OPTIONS\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);
|
||||
}
|
||||
|
||||
// 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
|
||||
else if (var == "notifications.posH")
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define DIRECTOR_H
|
||||
|
||||
// Textos
|
||||
#define WINDOW_CAPTION "Coffee Crisis"
|
||||
#define WINDOW_CAPTION "Coffee Crisis Arcade Edition"
|
||||
|
||||
class Director
|
||||
{
|
||||
|
||||
@@ -246,6 +246,15 @@ void Game::init()
|
||||
break;
|
||||
}
|
||||
|
||||
if (difficulty == DIFFICULTY_NORMAL)
|
||||
{
|
||||
scoreboard->setColor({46, 63, 71});
|
||||
}
|
||||
else
|
||||
{
|
||||
scoreboard->setColor(difficultyColor);
|
||||
}
|
||||
|
||||
gameCompleted = false;
|
||||
gameCompletedCounter = 0;
|
||||
section->name = SECTION_PROG_GAME;
|
||||
@@ -1574,12 +1583,6 @@ void Game::updateHiScore()
|
||||
// Actualiza la máxima puntuación
|
||||
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
|
||||
scoreDataFile[0] = hiScore;
|
||||
scoreDataFile[1] = hiScore % 43;
|
||||
@@ -2644,6 +2647,9 @@ void Game::update()
|
||||
// Actualiza las variables del jugador
|
||||
updatePlayers();
|
||||
|
||||
// Actualiza el marcador
|
||||
updateScoreboard();
|
||||
|
||||
// Actualiza el fondo
|
||||
updateBackground();
|
||||
|
||||
@@ -3807,4 +3813,15 @@ void Game::setHiScore()
|
||||
loadScoreFile();
|
||||
|
||||
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<std::vector<Texture *>> playerTextures; // Vector con todas las texturas de los jugadores;
|
||||
|
||||
Texture *gameBuildingsTexture; // Textura con los edificios de fondo
|
||||
Texture *gameCloudsTexture; // Textura con las nubes de fondo
|
||||
Texture *gameGrassTexture; // Textura con la hierba del suelo
|
||||
Texture *gameSkyColorsTexture; // Textura con los diferentes colores de fondo del juego
|
||||
Texture *gameTextTexture; // Textura para los sprites con textos
|
||||
Texture *gameOverTexture; // Textura para la pantalla de game over
|
||||
Texture *gameOverEndTexture; // Textura para la pantalla de game over de acabar el juego
|
||||
Texture *gameBuildingsTexture; // Textura con los edificios de fondo
|
||||
Texture *gameCloudsTexture; // Textura con las nubes de fondo
|
||||
Texture *gameGrassTexture; // Textura con la hierba del suelo
|
||||
Texture *gameSkyColorsTexture; // Textura con los diferentes colores de fondo del juego
|
||||
Texture *gameTextTexture; // Textura para los sprites con textos
|
||||
Texture *gameOverTexture; // Textura para la pantalla de game over
|
||||
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> *> playerAnimations; // Vector con las animaciones del jugador
|
||||
std::vector<std::vector<std::string> *> balloonAnimations; // Vector con las animaciones de los globos
|
||||
|
||||
Text *text; // Fuente para los textos del juego
|
||||
Text *textBig; // Fuente de texto grande
|
||||
Text *textNokia2; // Otra fuente de texto para mensajes
|
||||
Text *textNokiaBig2; // Y la versión en grande
|
||||
Text *text; // Fuente para los textos del juego
|
||||
Text *textBig; // Fuente de texto grande
|
||||
Text *textNokia2; // Otra fuente de texto para mensajes
|
||||
Text *textNokiaBig2; // Y la versión en grande
|
||||
|
||||
Menu *gameOverMenu; // Menú de la pantalla de game over
|
||||
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
|
||||
void setHiScore();
|
||||
|
||||
// Actualiza el marcador
|
||||
void updateScoreboard();
|
||||
|
||||
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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
// Inicializa variables
|
||||
stage = 0;
|
||||
stage = 1;
|
||||
score1 = 0;
|
||||
score2 = 0;
|
||||
mult1 = 0;
|
||||
mult2 = 0;
|
||||
mult1 = 1;
|
||||
mult2 = 1;
|
||||
hiScore = 0;
|
||||
power = 0;
|
||||
hiScoreName = "";
|
||||
color = {255, 0, 0};
|
||||
color = {0, 0, 0};
|
||||
}
|
||||
|
||||
Scoreboard::~Scoreboard()
|
||||
@@ -120,9 +120,7 @@ void Scoreboard::render()
|
||||
powerMeterSprite->setPosY(offset2);
|
||||
powerMeterSprite->setSpriteClip(0, 0, 40, 7);
|
||||
powerMeterSprite->render();
|
||||
// const float percent = (stage[currentStage].currentPower * 40.0f) / stage[currentStage].powerToComplete;
|
||||
const float percent = 0.5;
|
||||
powerMeterSprite->setSpriteClip(40, 0, (int)percent, 7);
|
||||
powerMeterSprite->setSpriteClip(40, 0, int(power * 40.0f), 7);
|
||||
powerMeterSprite->render();
|
||||
|
||||
// HI-SCORE
|
||||
@@ -140,12 +138,12 @@ void Scoreboard::setScore2(int score)
|
||||
score2 = score;
|
||||
}
|
||||
|
||||
void Scoreboard::setMult1(int mult)
|
||||
void Scoreboard::setMult1(float mult)
|
||||
{
|
||||
mult1 = mult;
|
||||
}
|
||||
|
||||
void Scoreboard::setMult2(int mult)
|
||||
void Scoreboard::setMult2(float mult)
|
||||
{
|
||||
mult2 = mult;
|
||||
}
|
||||
@@ -160,7 +158,7 @@ void Scoreboard::setHiScore(int hiScore)
|
||||
this->hiScore = hiScore;
|
||||
}
|
||||
|
||||
void Scoreboard::setPower(int power)
|
||||
void Scoreboard::setPower(float power)
|
||||
{
|
||||
this->power = power;
|
||||
}
|
||||
|
||||
@@ -28,18 +28,18 @@ private:
|
||||
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
||||
|
||||
Texture *gamePowerMeterTexture; // Textura con el marcador de poder de la fase
|
||||
Sprite *powerMeterSprite; // Sprite para el medidor de poder de la fase
|
||||
Text *textScoreBoard; // Fuente para el marcador del juego
|
||||
Sprite *powerMeterSprite; // Sprite para el medidor de poder de la fase
|
||||
Text *textScoreBoard; // Fuente para el marcador del juego
|
||||
|
||||
// Variables
|
||||
struct options_t *options; // Variable con todas las variables de las opciones del programa
|
||||
int stage; // Numero de fase actual
|
||||
int score1; // Puntuación del jugador 1
|
||||
int score2; // Puntuación del jugador 2
|
||||
int mult1; // Multiplicador del jugador 1
|
||||
int mult2; // MUltiplicador del jugador 2
|
||||
float mult1; // Multiplicador del jugador 1
|
||||
float mult2; // MUltiplicador del jugador 2
|
||||
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
|
||||
color_t color; // Color del marcador
|
||||
|
||||
@@ -55,11 +55,11 @@ public:
|
||||
|
||||
void setScore1(int score);
|
||||
void setScore2(int score);
|
||||
void setMult1(int mult);
|
||||
void setMult2(int mult);
|
||||
void setMult1(float mult);
|
||||
void setMult2(float mult);
|
||||
void setStage(int stage);
|
||||
void setHiScore(int hiScore);
|
||||
void setPower(int power);
|
||||
void setPower(float power);
|
||||
void setHiScoreName(std::string name);
|
||||
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
|
||||
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->run(mode);
|
||||
delete hiScoreTable;
|
||||
|
||||
Reference in New Issue
Block a user