feat(hud): marcador de la franja superior amb 3 blocs i animació d'entrada
This commit is contained in:
1 parent
67ecb704d2
commit
82b229222f
6 files changed
+474
-1
No files matched your search
@@ -29,6 +29,7 @@
|
||||
#include "game/entities/player.hpp"
|
||||
#include "game/map/map.hpp"
|
||||
#include "game/options.hpp"
|
||||
#include "game/ui/hud.hpp"
|
||||
#include "game/ui/ui_palette.hpp"
|
||||
#include "utils/defaults.hpp"
|
||||
#include "utils/defines.hpp"
|
||||
@@ -139,6 +140,16 @@ GameScene::GameScene(Config config)
|
||||
// sarcòfags passa per `tile_painted`.
|
||||
players_.back()->setEventBus(&entity_manager_.getBus());
|
||||
|
||||
// Marcador (HUD) de la franja superior. Reutilitza la font 8bithud i
|
||||
// la paleta "ui" ja precarregades pel Director — no toca disc des
|
||||
// d'aquí. Subscrit al bus per reaccionar a `player_hit`,
|
||||
// `level_complete`, etc. amb shake/flash i futurs canvis de mode.
|
||||
const std::string HUD_FONT_GIF_KEY = std::string(Defaults::UI::Font::HUD_NAME) + ".gif";
|
||||
auto hud_font_surface = Resource::Cache::get().getSurface(HUD_FONT_GIF_KEY);
|
||||
auto hud_font = std::make_shared<Text>(hud_font_surface, Defaults::UI::Font::HUD_FNT);
|
||||
hud_font->setDefaultKerning(Defaults::UI::Font::HUD_KERNING);
|
||||
hud_ = std::make_unique<Hud>(entity_manager_.getBus(), hud_font, Resource::Cache::get().getPalette("ui"));
|
||||
|
||||
// Música de fons en bucle infinit. El track ja està al Resource::Cache
|
||||
// (preload al Director), així que playMusic només mou el punter cap a
|
||||
// jail_audio i obri l'stream. Audio::get() està garantit no-null:
|
||||
@@ -236,6 +247,11 @@ void GameScene::update(int delta_ms) {
|
||||
editor_.update(delta_ms, tilemap_);
|
||||
#endif
|
||||
|
||||
// El HUD continua avançant les seues animacions encara que el món
|
||||
// estigui congelat (pausa o editor): així l'animació d'entrada acaba
|
||||
// sola i quan es despausa ja està al seu lloc, igual que el Notifier.
|
||||
if (hud_) { hud_->update(delta_ms); }
|
||||
|
||||
RenderInfo::get().update(delta_ms, Options::buildRenderInfoFrame(UiColor::RENDER_INFO_TEXT, UiColor::RENDER_INFO_SHADOW));
|
||||
Notifier::get().update(delta_ms);
|
||||
}
|
||||
@@ -291,6 +307,11 @@ void GameScene::render() {
|
||||
r.player->render();
|
||||
}
|
||||
}
|
||||
// HUD: a sobre dels actors perquè la franja superior tape qualsevol
|
||||
// sprite que (durant l'animació d'entrada) puga sortir més amunt
|
||||
// del playfield. S'amaga en mode editor (l'editor edita el tilemap;
|
||||
// el HUD distrauria) però segueix actualitzant-se per fora.
|
||||
if (hud_) { hud_->render(); }
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
Reference in new issue
Block a user