bf83f161b0
Tres tareas de pulido para cerrar la Fase 1 por completo: #pragma once uniforme: - sdl_manager.hpp y game_scene.hpp pasan de #ifndef/#define guards a #pragma once. Los archivos externos (stb_vorbis.h, fkyaml_node.hpp) se mantienen intactos (codigo de terceros). Variables locales y parametros restantes (catalan -> ingles): - fitxer -> file, moviment -> movement, inici -> start - comptador -> counter, escalada -> scaled - missatges -> messages, llista -> list - alçada -> height, amplada -> width, llargada -> length - origen -> origin, distancia -> distance, valor -> value, desti -> target - neteja -> clear, presenta -> present (SDLManager) - total_enemics -> total_enemies, configurar -> configure, iniciar -> start Comentarios catalan -> castellano: - Cabeceras de fichero actualizadas con nombres nuevos (escena_joc.hpp -> game_scene.hpp, etc.) - Palabras tecnicas: trasllacio->traslacion, col-lisio->colision, inicialitzacio->inicializacion, posicio->posicion, rotacio->rotacion, velocitat->velocidad, acceleracio->aceleracion, explosio->explosion, renderitzat->renderizado, calcul->calculo, transicio->transicion, comprovacio->comprobacion, substitucio->sustitucion, utilitzacio->utilizacion, opcio->opcion, configuracio->configuracion, funcio->funcion, distancia, animacio->animacion - Determinantes y conectores: aquest->este, aquesta->esta, amb->con, sense->sin, pero->pero, mai->nunca, nomes->solo, tambe->tambien, sempre->siempre, ja->ya, mateix->mismo, vegada->vez, dintre->dentro, fora->fuera, dreta->derecha, esquerra->izquierda, sortir->salir, sortida->salida, petit->pequeno, gran->grande, nou->nuevo, vell->viejo, molt->mucho, els->los, les->las, totes les->todas las, d'->de, com->como, quan->cuando, mentre->mientras, despres->despues, abans->antes, durant->durante, fins->hasta, encara->aun, llavors->entonces, aixi->asi, perque->porque - Sustantivos: classe->clase, metode->metodo, parametre->parametro, versio->version, entitat->entidad, joc->juego, nivell->nivel, enemic->enemigo, naus->naves, bales->balas, fitxer->archivo, pentagon->pentagono, pun- tuacio->puntuacion, flotant->flotante, titol->titulo, objectiu->objetivo, mostra->muestra, tipus->tipo Strings literales preservados en valenciano segun decision del usuario: el texto del HUD del juego (puntuaciones, mensajes en pantalla, archivo de config) se mantiene en valenciano original. 70 fitxers tocats, +1117 / -1123. Compila i enllaca. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
82 lines
2.8 KiB
C++
82 lines
2.8 KiB
C++
// scene_context.hpp - Sistema de gestió de escenes i context de transiciones
|
|
// © 2025 Port a C++20
|
|
|
|
#pragma once
|
|
|
|
#include "core/system/game_config.hpp"
|
|
|
|
namespace SceneManager {
|
|
|
|
// Context de transición entre escenes
|
|
// Conté l'escena destinació i opciones específiques per aquella escena
|
|
class SceneContext {
|
|
public:
|
|
// Tipo de escena del juego
|
|
enum class SceneType {
|
|
LOGO, // Pantalla de start (logo JAILGAMES)
|
|
TITLE, // Pantalla de título con menú
|
|
GAME, // Juego principal (Asteroids)
|
|
EXIT // Salir del programa
|
|
};
|
|
|
|
// Opciones específiques para cada escena
|
|
enum class Option {
|
|
NONE, // Sin opciones especials (comportament per defecte)
|
|
JUMP_TO_TITLE_MAIN, // TITLE: Saltar directament a MAIN (starfield instantani)
|
|
// MODE_DEMO, // GAME: Mode demostració con IA (futur)
|
|
};
|
|
|
|
// Constructor inicial con escena LOGO i sin opciones
|
|
SceneContext() = default;
|
|
|
|
// Canviar escena con opción específica
|
|
void setNextScene(SceneType next_scene, Option option = Option::NONE) {
|
|
next_scene_ = next_scene;
|
|
option_ = option;
|
|
}
|
|
|
|
// Consultar escena destinació
|
|
[[nodiscard]] auto nextScene() const -> SceneType {
|
|
return next_scene_;
|
|
}
|
|
|
|
// Consultar opción actual
|
|
[[nodiscard]] auto option() const -> Option {
|
|
return option_;
|
|
}
|
|
|
|
// Consumir opción (retorna value i reseteja a NONE)
|
|
// Utilitzar cuando l'escena processa l'opción
|
|
[[nodiscard]] auto consumeOption() -> Option {
|
|
Option value = option_;
|
|
option_ = Option::NONE;
|
|
return value;
|
|
}
|
|
|
|
// Reset opción a NONE (sin retornar value)
|
|
void resetOption() {
|
|
option_ = Option::NONE;
|
|
}
|
|
|
|
// Configurar match antes de transicionar a GAME
|
|
void setMatchConfig(const GameConfig::MatchConfig& config) {
|
|
match_config_ = config;
|
|
}
|
|
|
|
// Obtenir configuración de match (consumit per GameScene)
|
|
[[nodiscard]] const GameConfig::MatchConfig& getMatchConfig() const {
|
|
return match_config_;
|
|
}
|
|
|
|
private:
|
|
SceneType next_scene_{SceneType::LOGO}; // SceneType a la qual transicionar
|
|
Option option_{Option::NONE}; // Opción específica per l'escena
|
|
GameConfig::MatchConfig match_config_; // Configuración de match (jugadors active, mode)
|
|
};
|
|
|
|
// Variable global inline per gestionar l'escena actual (backward compatibility)
|
|
// Sincronitzada con context.nextScene() por el Director
|
|
inline SceneContext::SceneType actual = SceneContext::SceneType::LOGO;
|
|
|
|
} // namespace SceneManager
|