65 lines
1.8 KiB
C++
65 lines
1.8 KiB
C++
#include "scenes/mort_scene.hpp"
|
|
|
|
#include <cstdlib>
|
|
|
|
#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
|