#include "scenes/mort_scene.hpp" #include #include "core/jail/jdraw8.hpp" #include "core/jail/jinput.hpp" #include "game/info.hpp" #include "scenes/scene_utils.hpp" namespace scenes { void MortScene::onEnter() { playMusic("music/mort.ogg"); JI_DisableKeyboard(60); info::ctx.vida = 5; gfx_ = SurfaceHandle("gfx/gameover.gif"); JD8_ClearScreen(0); JD8_Blit(gfx_); // PaletteFade en fa una còpia interna via memcpy, així que alliberem // la paleta temporal immediatament. JD8_Palette pal = JD8_LoadPalette("gfx/gameover.gif"); fade_.startFadeTo(pal); std::free(pal); phase_ = Phase::FadingIn; remaining_ms_ = 10000; } void MortScene::tick(int delta_ms) { switch (phase_) { case Phase::FadingIn: fade_.tick(delta_ms); if (fade_.done()) phase_ = Phase::Showing; break; case Phase::Showing: if (JI_AnyKey()) { remaining_ms_ = 0; } else { remaining_ms_ -= delta_ms; } if (remaining_ms_ <= 0) { // Arrenca música del següent mòdul abans del fade out, // igual que la versió vella feia al final de doMort(). playMusic("music/menu.ogg"); info::ctx.num_piramide = 0; fade_.startFadeOut(); phase_ = Phase::FadingOut; } break; case Phase::FadingOut: fade_.tick(delta_ms); if (fade_.done()) phase_ = Phase::Done; break; case Phase::Done: break; } } } // namespace scenes