#pragma once #include namespace GameConfig { // Mode de joc enum class Mode { NORMAL, // Partida normal DEMO // Mode demostració (futur) }; // Configuració d'una partida struct ConfigPartida { bool jugador1_actiu{false}; // És actiu el jugador 1? bool jugador2_actiu{false}; // És actiu el jugador 2? Mode mode{Mode::NORMAL}; // Mode de joc // Mètodes auxiliars // Retorna true si només hi ha un jugador actiu [[nodiscard]] bool es_un_jugador() const { return (jugador1_actiu && !jugador2_actiu) || (!jugador1_actiu && jugador2_actiu); } // Retorna true si hi ha dos jugadors actius [[nodiscard]] bool son_dos_jugadors() const { return jugador1_actiu && jugador2_actiu; } // Retorna true si no hi ha cap jugador actiu [[nodiscard]] bool cap_jugador() const { return !jugador1_actiu && !jugador2_actiu; } // Compte de jugadors actius (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 jugador actiu (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