Testeados todos los logros. Los logros no funcionan con los trucos activados
This commit is contained in:
@@ -9,6 +9,9 @@ Cheevos::Cheevos(Screen *screen, options_t *options)
|
|||||||
|
|
||||||
// Inicializa los logros
|
// Inicializa los logros
|
||||||
init();
|
init();
|
||||||
|
|
||||||
|
// inicializa variables
|
||||||
|
enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
@@ -115,11 +118,18 @@ void Cheevos::unlock(int id)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cheevos[index].completed)
|
if (cheevos[index].completed)
|
||||||
{
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!enabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
cheevos[index].completed = true;
|
cheevos[index].completed = true;
|
||||||
screen->showNotification("ACHIEVEMENT UNLOCKED!", cheevos[index].caption, cheevos[index].icon);
|
screen->showNotification("ACHIEVEMENT UNLOCKED!", cheevos[index].caption, cheevos[index].icon);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invalida un logro
|
// Invalida un logro
|
||||||
@@ -132,3 +142,9 @@ void Cheevos::invalidate(int id)
|
|||||||
}
|
}
|
||||||
cheevos[index].valid = false;
|
cheevos[index].valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Habilita o deshabilita los logros
|
||||||
|
void Cheevos::enable(bool value)
|
||||||
|
{
|
||||||
|
enabled = value;
|
||||||
|
}
|
||||||
@@ -27,6 +27,7 @@ private:
|
|||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
std::vector<cheevos_t> cheevos; // Listado de logros
|
std::vector<cheevos_t> cheevos; // Listado de logros
|
||||||
|
bool enabled; // Indica si los logros se pueden obtener
|
||||||
|
|
||||||
// Inicializa los logros
|
// Inicializa los logros
|
||||||
void init();
|
void init();
|
||||||
@@ -46,6 +47,9 @@ public:
|
|||||||
|
|
||||||
// Invalida un logro
|
// Invalida un logro
|
||||||
void invalidate(int id);
|
void invalidate(int id);
|
||||||
|
|
||||||
|
// Habilita o deshabilita los logros
|
||||||
|
void enable(bool value);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
|
|||||||
totalItems = getTotalItems();
|
totalItems = getTotalItems();
|
||||||
initStats();
|
initStats();
|
||||||
stats->addVisit(room->getName());
|
stats->addVisit(room->getName());
|
||||||
|
const bool cheats = options->cheat.infiniteLives || options->cheat.invincible || options->cheat.jailEnabled;
|
||||||
|
cheevos->enable(!cheats); // Deshabilita los logros si hay trucos activados
|
||||||
|
|
||||||
section->name = SECTION_PROG_GAME;
|
section->name = SECTION_PROG_GAME;
|
||||||
section->subsection = 0;
|
section->subsection = 0;
|
||||||
@@ -576,7 +578,8 @@ void Game::setScoreBoardColor()
|
|||||||
bool Game::checkEndGame()
|
bool Game::checkEndGame()
|
||||||
{
|
{
|
||||||
const bool isOnTheRoom = room->getName() == "THE JAIL"; // Estar en la habitación que toca
|
const bool isOnTheRoom = room->getName() == "THE JAIL"; // Estar en la habitación que toca
|
||||||
const bool haveTheItems = board.items >= int(totalItems * 0.9f) || options->cheat.jailEnabled; // Con mas del 90% de los items recogidos
|
// const bool haveTheItems = board.items >= int(totalItems * 0.9f) || options->cheat.jailEnabled; // Con mas del 90% de los items recogidos
|
||||||
|
const bool haveTheItems = board.items == 2;
|
||||||
const bool isOnTheDoor = player->getRect().x <= 128; // Y en la ubicación que toca (En la puerta)
|
const bool isOnTheDoor = player->getRect().x <= 128; // Y en la ubicación que toca (En la puerta)
|
||||||
|
|
||||||
if (haveTheItems)
|
if (haveTheItems)
|
||||||
@@ -655,20 +658,20 @@ void Game::checkRestoringJail()
|
|||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Incrementa el numero de vidas
|
||||||
if (counter == 100)
|
if (counter == 100)
|
||||||
{
|
{
|
||||||
counter = 0;
|
counter = 0;
|
||||||
board.lives++;
|
board.lives++;
|
||||||
JA_PlaySound(deathSound);
|
JA_PlaySound(deathSound);
|
||||||
}
|
|
||||||
|
|
||||||
// Invalida el logro de completar el juego sin entrar a la jail
|
// Invalida el logro de completar el juego sin entrar a la jail
|
||||||
const bool haveTheItems = board.items >= int(totalItems * 0.9f) || options->cheat.jailEnabled; // Con mas del 90% de los items recogidos
|
const bool haveTheItems = board.items == 2;
|
||||||
if (!haveTheItems)
|
if (!haveTheItems)
|
||||||
{
|
{
|
||||||
cheevos->invalidate(9);
|
cheevos->invalidate(9);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inicializa el diccionario de las estadísticas
|
// Inicializa el diccionario de las estadísticas
|
||||||
|
|||||||
Reference in New Issue
Block a user