millorada la gestio d'escenes i opcions

This commit is contained in:
2025-12-04 11:51:41 +01:00
parent f8c5207d5c
commit 330044e10f
12 changed files with 195 additions and 59 deletions
+24 -9
View File
@@ -15,7 +15,7 @@
#include "game/escenes/escena_logo.hpp"
#include "game/escenes/escena_titol.hpp"
#include "game/options.hpp"
#include "gestor_escenes.hpp"
#include "context_escenes.hpp"
#include "project.h"
#ifndef _WIN32
@@ -23,6 +23,10 @@
#include <unistd.h>
#endif
// Using declarations per simplificar el codi
using GestorEscenes::ContextEscenes;
using Escena = ContextEscenes::Escena;
// Constructor
Director::Director(std::vector<std::string> const& args) {
std::cout << "Orni Attack - Inici\n";
@@ -169,23 +173,31 @@ auto Director::run() -> int {
<< AudioCache::getMusicCacheSize() << " fitxers\n";
}
// Crear context d'escenes
ContextEscenes context;
context.canviar_escena(Escena::LOGO);
// Bucle principal de gestió d'escenes
while (GestorEscenes::actual != GestorEscenes::Escena::EIXIR) {
switch (GestorEscenes::actual) {
case GestorEscenes::Escena::LOGO: {
EscenaLogo logo(sdl);
while (context.escena_desti() != Escena::EIXIR) {
// Sincronitzar GestorEscenes::actual amb context
// (altres sistemes encara poden llegir GestorEscenes::actual)
GestorEscenes::actual = context.escena_desti();
switch (context.escena_desti()) {
case Escena::LOGO: {
EscenaLogo logo(sdl, context);
logo.executar();
break;
}
case GestorEscenes::Escena::TITOL: {
EscenaTitol titol(sdl);
case Escena::TITOL: {
EscenaTitol titol(sdl, context);
titol.executar();
break;
}
case GestorEscenes::Escena::JOC: {
EscenaJoc joc(sdl);
case Escena::JOC: {
EscenaJoc joc(sdl, context);
joc.executar();
break;
}
@@ -195,5 +207,8 @@ auto Director::run() -> int {
}
}
// Sincronitzar final amb GestorEscenes::actual
GestorEscenes::actual = Escena::EIXIR;
return 0;
}