feat(menu): congela el món mentre el menú de servei està obert
This commit is contained in:
1 parent
27cf2f032d
commit
0847e9c544
1 file changed
+12
-1
@@ -38,6 +38,7 @@
|
|||||||
#include "game/map/map.hpp"
|
#include "game/map/map.hpp"
|
||||||
#include "game/options.hpp"
|
#include "game/options.hpp"
|
||||||
#include "game/ui/hud.hpp"
|
#include "game/ui/hud.hpp"
|
||||||
|
#include "game/ui/service_menu.hpp"
|
||||||
#include "utils/defaults.hpp"
|
#include "utils/defaults.hpp"
|
||||||
#include "utils/defines.hpp"
|
#include "utils/defines.hpp"
|
||||||
#include "utils/easing.hpp"
|
#include "utils/easing.hpp"
|
||||||
@@ -1116,7 +1117,17 @@ namespace {
|
|||||||
|
|
||||||
void GameScene::update(int delta_ms) {
|
void GameScene::update(int delta_ms) {
|
||||||
handlePauseInput();
|
handlePauseInput();
|
||||||
|
|
||||||
|
// Congelació instantània mentre el menú de servei està obert. A
|
||||||
|
// diferència de la pausa de gameplay (que és un dial amb easing i
|
||||||
|
// fade de música), aquesta és binària: el món no avança gens i la
|
||||||
|
// música no es toca. També posem en pausa el dial de la pausa
|
||||||
|
// regular si estava a mig camí, perquè no continui mentre l'usuari
|
||||||
|
// navega el menú.
|
||||||
|
const bool MENU_FROZEN = ServiceMenu::get().isOpen();
|
||||||
|
if (!MENU_FROZEN) {
|
||||||
updatePauseTransition(delta_ms);
|
updatePauseTransition(delta_ms);
|
||||||
|
}
|
||||||
|
|
||||||
// Transició de sala: viu en temps real (no escalada per la pausa)
|
// Transició de sala: viu en temps real (no escalada per la pausa)
|
||||||
// perquè és UI. Avança avans del bloc de món perquè quan PLAYING
|
// perquè és UI. Avança avans del bloc de món perquè quan PLAYING
|
||||||
@@ -1168,7 +1179,7 @@ void GameScene::update(int delta_ms) {
|
|||||||
constexpr bool EDITOR_FROZEN = false;
|
constexpr bool EDITOR_FROZEN = false;
|
||||||
#endif
|
#endif
|
||||||
const int SCALED_DELTA_MS = static_cast<int>(static_cast<float>(delta_ms) * pause_.scale);
|
const int SCALED_DELTA_MS = static_cast<int>(static_cast<float>(delta_ms) * pause_.scale);
|
||||||
if (!EDITOR_FROZEN && SCALED_DELTA_MS > 0) {
|
if (!EDITOR_FROZEN && !MENU_FROZEN && SCALED_DELTA_MS > 0) {
|
||||||
const float DT = static_cast<float>(SCALED_DELTA_MS) / 1000.0F;
|
const float DT = static_cast<float>(SCALED_DELTA_MS) / 1000.0F;
|
||||||
|
|
||||||
// Pipeline de moviment en tres passes per poder intercalar la
|
// Pipeline de moviment en tres passes per poder intercalar la
|
||||||
|
|||||||
Reference in new issue
Block a user