#pragma once #include namespace GameConfig { // Mode de joc enum class Mode { NORMAL, // Partida normal DEMO // Mode demostració (futur) }; // Configuració d'una match struct MatchConfig { bool jugador1_actiu{false}; // És active el player 1? bool jugador2_actiu{false}; // És active el player 2? Mode mode{Mode::NORMAL}; // Mode de joc // Mètodes auxiliars // Retorna true si només hi ha un player active [[nodiscard]] bool es_un_jugador() const { return (jugador1_actiu && !jugador2_actiu) || (!jugador1_actiu && jugador2_actiu); } // Retorna true si hi ha dos jugadors active [[nodiscard]] bool son_dos_jugadors() const { return jugador1_actiu && jugador2_actiu; } // Retorna true si no hi ha cap player active [[nodiscard]] bool cap_jugador() const { return !jugador1_actiu && !jugador2_actiu; } // Compte de jugadors active (0, 1 o 2) [[nodiscard]] uint8_t compte_jugadors() const { return (jugador1_actiu ? 1 : 0) + (jugador2_actiu ? 1 : 0); } // Retorna l'ID de l'únic player active (0 o 1) // Només vàlid si es_un_jugador() retorna true [[nodiscard]] uint8_t id_unic_jugador() const { if (jugador1_actiu && !jugador2_actiu) { return 0; } if (!jugador1_actiu && jugador2_actiu) { return 1; } return 0; // Fallback (cal comprovar es_un_jugador() primer) } }; } // namespace GameConfig