refactor(servei): elimina infra del fake reset
This commit is contained in:
1 parent
a8ccb3fae1
commit
0c6bebe8dc
5 files changed
+6
-56
No files matched your search
@@ -26,15 +26,9 @@ namespace {
|
||||
|
||||
} // namespace
|
||||
|
||||
LogoScene::LogoScene(std::shared_ptr<Surface> logo, bool reset)
|
||||
LogoScene::LogoScene(std::shared_ptr<Surface> logo)
|
||||
: logo_(std::move(logo)) {
|
||||
Log::info("scene", "{} start{}", SCENE_NAME, reset ? " (reset)" : "");
|
||||
if (reset) {
|
||||
if (auto* audio = Audio::get(); audio != nullptr) {
|
||||
audio->stopMusic();
|
||||
audio->stopAllSounds();
|
||||
}
|
||||
}
|
||||
Log::info("scene", "{} start", SCENE_NAME);
|
||||
// Arrenquem en BLACK_INTRO: ni so ni efecte. El glitch sound i el
|
||||
// begin() de scan_ es disparen quan entrem a SCAN.
|
||||
}
|
||||
|
||||
@@ -29,13 +29,9 @@ class Surface;
|
||||
// Skip: qualsevol tecla no reservada salta directament a la transició
|
||||
// (sense fade-out) — el TitleScene té el seu propi `intro.fade_in_ms`,
|
||||
// així que la transició queda visualment continua igualment.
|
||||
//
|
||||
// Si arriba amb `reset=true` (acció "Reiniciar" del menú de servei),
|
||||
// atura música i tots els sons al constructor — el següent LOGO arrenca
|
||||
// silenciós encara que veníssem del joc en marxa.
|
||||
class LogoScene : public Scene {
|
||||
public:
|
||||
LogoScene(std::shared_ptr<Surface> logo, bool reset);
|
||||
explicit LogoScene(std::shared_ptr<Surface> logo);
|
||||
~LogoScene() override;
|
||||
|
||||
void update(int delta_ms) override;
|
||||
|
||||
@@ -30,15 +30,7 @@ enum class SceneId : std::uint8_t {
|
||||
// rep cap dada de l'anterior; en cas contrari, només els camps que
|
||||
// fluixen pel canal de transició (els recursos, defaults i config
|
||||
// interna els resol Director quan construeix).
|
||||
struct LogoParams {
|
||||
// Quan val `true`, indica que aquesta entrada al LOGO és una reinicialització
|
||||
// completa (acció "Reiniciar" del menú de servei): l'escena haurà d'aturar
|
||||
// música i sons abans de mostrar-se. En el flux normal LOGO→TITLE→… es
|
||||
// queda a `false` perquè qualsevol música prèvia (p. ex. la pista de
|
||||
// TITLE durant l'attract-out) continui sonant fins que la nova escena la
|
||||
// substituïsca.
|
||||
bool reset{false};
|
||||
};
|
||||
struct LogoParams {};
|
||||
struct TitleParams {};
|
||||
struct IntroParams {
|
||||
DebugConfig::StartingPlayers starting_players{DebugConfig::StartingPlayers::BOTH};
|
||||
|
||||
@@ -6,13 +6,11 @@
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "core/input/define_buttons.hpp"
|
||||
#include "core/rendering/surface.hpp" // Palette
|
||||
#include "game/scenes/scene_flow.hpp"
|
||||
|
||||
class Text;
|
||||
|
||||
@@ -75,19 +73,6 @@ class ServiceMenu {
|
||||
// `define_buttons_->enable(...)` de coffee_crisis_arcade_edition.
|
||||
void startDefineButtons(SDL_Gamepad* pad, const std::string& name, const std::string& path);
|
||||
|
||||
// Bústia de transició d'escena des del menú: alguns items (p.ex.
|
||||
// "Reiniciar" a Sistema) no es poden expressar com a `ExitRequest` de
|
||||
// l'escena actual perquè el menú és global i no té handle a l'escena.
|
||||
// Director consulta `takePendingSceneRequest()` cada frame i, si hi ha
|
||||
// valor, força la transició — el mateix camí que per a `ExitRequest`
|
||||
// d'una escena, però el dispara el menú directament.
|
||||
void requestSceneTransition(ExitRequest req) { pending_request_ = req; }
|
||||
[[nodiscard]] auto takePendingSceneRequest() -> std::optional<ExitRequest> {
|
||||
auto out = pending_request_;
|
||||
pending_request_.reset();
|
||||
return out;
|
||||
}
|
||||
|
||||
private:
|
||||
// --- Struct d'un item d'una pàgina ---
|
||||
//
|
||||
@@ -306,9 +291,4 @@ class ServiceMenu {
|
||||
// persisteix la nova configuració via `GamepadBindings`. Replica el
|
||||
// patró `define_buttons_` de coffee_crisis_arcade_edition.
|
||||
DefineButtons define_buttons_;
|
||||
|
||||
// Sol·licitud de canvi d'escena pendent (vore `requestSceneTransition`).
|
||||
// La consumeix Director al final del frame; si l'item no força la
|
||||
// transició, queda buida.
|
||||
std::optional<ExitRequest> pending_request_;
|
||||
};
|
||||
Reference in new issue
Block a user