10 Commits
v2.1 ... v2.1a

11 changed files with 113 additions and 56 deletions

6
.gitignore vendored
View File

@@ -1,6 +1,6 @@
.vscode
*.DS_Store
bin
data/config.txt
data/config.bin
data/score.bin
data/config/config.txt
data/config/config.bin
data/config/score.bin

View File

@@ -3,10 +3,11 @@ executable = coffee_crisis
windows:
@echo off
if not exist bin\ (mkdir bin)
g++ -std=c++11 -Wall -O2 source/*.cpp -lmingw32 -lSDL2main -lSDL2 -o bin/$(executable).exe
g++ -std=c++11 -Wall -O2 source/*.cpp -lmingw32 -lSDL2main -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -o bin/$(executable).exe
strip -s -R .comment -R .gnu.version bin/$(executable).exe --strip-unneeded
macos:
mkdir -p bin
g++ source/*.cpp -std=c++11 -Wall -O2 -lSDL2 -o bin/$(executable)_macos
g++ source/*.cpp -std=c++11 -Wall -O2 -lSDL2 -ffunction-sections -fdata-sections -o bin/$(executable)_macos
linux:
mkdir -p bin
g++ source/*.cpp -std=c++11 -Wall -Os -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -o bin/$(executable)_linux

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -273,6 +273,8 @@ void Game::init()
powerBallEnabled = false;
powerBallCounter = 0;
coffeeMachineEnabled = false;
pauseCounter = 0;
leavingPauseMenu = false;
if (demo.enabled)
{
@@ -3073,11 +3075,6 @@ void Game::checkGameInput()
if (input->checkInput(INPUT_CANCEL, REPEAT_FALSE, options->input[i].deviceType, options->input[i].id))
{
section.subsection = GAME_SECTION_PAUSE;
if (JA_GetMusicState() == JA_MUSIC_PLAYING)
{
JA_PauseMusic();
}
}
if (demo.counter < TOTAL_DEMO_DATA)
@@ -3289,7 +3286,32 @@ void Game::updatePausedGame()
// Actualiza el contador de ticks
ticks = SDL_GetTicks();
// Actualiza la lógica del menu de pausa
if (leavingPauseMenu)
{
if (pauseCounter > 0)
{ // El contador está descendiendo
const bool a = pauseCounter == 90;
const bool b = pauseCounter == 60;
const bool c = pauseCounter == 30;
if (a || b || c)
{
JA_PlaySound(clockSound);
}
pauseCounter--;
}
else
{ // Ha finalizado el contador
section.name = PROG_SECTION_GAME;
section.subsection = numPlayers == 1 ? GAME_SECTION_PLAY_1P : GAME_SECTION_PLAY_2P;
if (JA_GetMusicState() == JA_MUSIC_PAUSED)
{
JA_ResumeMusic();
}
}
}
else
{ // Actualiza la lógica del menu de pausa
pauseMenu->update();
// Comprueba las entradas para el menu
@@ -3299,13 +3321,7 @@ void Game::updatePausedGame()
switch (pauseMenu->getItemSelected())
{
case 1:
section.name = PROG_SECTION_GAME;
section.subsection = numPlayers == 1 ? GAME_SECTION_PLAY_1P : GAME_SECTION_PLAY_2P;
if (JA_GetMusicState() == JA_MUSIC_PAUSED)
{
JA_ResumeMusic();
}
leavingPauseMenu = true;
break;
case 2:
@@ -3327,6 +3343,7 @@ void Game::updatePausedGame()
}
}
}
}
// Dibuja el menu de pausa del juego
void Game::renderPausedGame()
@@ -3361,7 +3378,14 @@ void Game::renderPausedGame()
renderFlashEffect();
}
if (leavingPauseMenu)
{
textNokiaBig2->writeCentered(SCREEN_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, std::to_string((pauseCounter / 30) + 1));
}
else
{
pauseMenu->render();
}
fade->render();
// Vuelca el contenido del renderizador en pantalla
@@ -3371,8 +3395,18 @@ void Game::renderPausedGame()
// Bucle para el menu de pausa del juego
void Game::runPausedGame()
{
// Pone en pausa la música
if (JA_GetMusicState() == JA_MUSIC_PLAYING)
{
JA_PauseMusic();
}
// Reinicia el menu
pauseMenu->reset();
leavingPauseMenu = false;
// Inicializa variables
pauseCounter = 90;
while ((section.subsection == GAME_SECTION_PAUSE) && (section.name == PROG_SECTION_GAME))
{
@@ -3715,6 +3749,15 @@ void Game::checkEventHandler()
section.name = PROG_SECTION_QUIT;
break;
}
else if (eventHandler->type == SDL_WINDOWEVENT)
{
if (eventHandler->window.event == SDL_WINDOWEVENT_FOCUS_LOST)
{
section.subsection = GAME_SECTION_PAUSE;
}
}
else if (eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0)
{
switch (eventHandler->key.keysym.scancode)

View File

@@ -196,7 +196,6 @@ private:
int numPlayers; // Numero de jugadores
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
Uint8 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
Uint32 hiScore; // Puntuación máxima
bool hiScoreAchieved; // Indica si se ha superado la puntuación máxima
section_t section; // Seccion actual dentro del juego
@@ -236,6 +235,8 @@ private:
demo_t demo; // Variable con todas las variables relacionadas con el modo demo
int totalPowerToCompleteGame; // La suma del poder necesario para completar todas las fases
int cloudsSpeed; // Velocidad a la que se desplazan las nubes
int pauseCounter; // Contador para salir del menu de pausa y volver al juego
bool leavingPauseMenu; // Indica si esta saliendo del menu de pausa para volver al juego
// Actualiza el juego
void update();

View File

@@ -236,7 +236,7 @@ void Instructions::checkEventHandler()
}
// Bucle para la pantalla de instrucciones
void Instructions::run(mode_e mode)
section_t Instructions::run(mode_e mode)
{
this->mode = mode;
@@ -245,4 +245,6 @@ void Instructions::run(mode_e mode)
update();
render();
}
return section;
}

View File

@@ -59,7 +59,7 @@ public:
~Instructions();
// Bucle principal
void run(mode_e mode);
section_t run(mode_e mode);
};
#endif

View File

@@ -301,8 +301,11 @@ void Title::update()
if (demo)
{
runDemoGame();
if (section.name != PROG_SECTION_QUIT)
{
runInstructions(m_auto);
}
}
else
section.name = PROG_SECTION_LOGO;
break;
@@ -483,7 +486,10 @@ void Title::update()
if (demo)
{
runDemoGame();
if (section.name != PROG_SECTION_QUIT)
{
runInstructions(m_auto);
}
init();
demo = false;
counter = TITLE_COUNTER;
@@ -939,19 +945,23 @@ section_t Title::run()
}
// Ejecuta la parte donde se muestran las instrucciones
void Title::runInstructions(mode_e mode)
section_t Title::runInstructions(mode_e mode)
{
instructions = new Instructions(renderer, screen, asset, lang);
instructions->run(mode);
section = instructions->run(mode);
delete instructions;
return section;
}
// Ejecuta el juego en modo demo
void Title::runDemoGame()
section_t Title::runDemoGame()
{
demoGame = new Game(1, 0, renderer, screen, asset, lang, input, true, options);
demoGame->run();
section = demoGame->run();
delete demoGame;
return section;
}
// Modifica las opciones para los controles de los jugadores

View File

@@ -21,7 +21,7 @@
#define TITLE_H
// Textos
#define TEXT_COPYRIGHT "@2020,2022 JailDesigner (v2.1)"
#define TEXT_COPYRIGHT "@2020,2022 JailDesigner (v2.1a)"
// Contadores
#define TITLE_COUNTER 800
@@ -117,10 +117,10 @@ private:
void applyOptions();
// Ejecuta la parte donde se muestran las instrucciones
void runInstructions(mode_e mode);
section_t runInstructions(mode_e mode);
// Ejecuta el juego en modo demo
void runDemoGame();
section_t runDemoGame();
// Modifica las opciones para los controles de los jugadores
bool updatePlayerInputs(int numPlayer);