#pragma once #include namespace GameConfig { // Mode de juego enum class Mode : std::uint8_t { NORMAL, // Partida normal DEMO // Mode demostració (futur) }; // Configuración de una match struct MatchConfig { bool jugador1_actiu{false}; // Es active el player 1? bool jugador2_actiu{false}; // Es active el player 2? Mode mode{Mode::NORMAL}; // Mode de juego // Métodos auxiliars // Retorna true si solo hay un player active [[nodiscard]] auto isSinglePlayer() const -> bool { return (jugador1_actiu && !jugador2_actiu) || (!jugador1_actiu && jugador2_actiu); } // Retorna true si hay dos jugadors active [[nodiscard]] auto isCoop() const -> bool { return jugador1_actiu && jugador2_actiu; } // Retorna true si no hay sin player active [[nodiscard]] auto hasNoPlayers() const -> bool { return !jugador1_actiu && !jugador2_actiu; } // Compte de jugadors active (0, 1 o 2) [[nodiscard]] auto getPlayerCount() const -> uint8_t { return (jugador1_actiu ? 1 : 0) + (jugador2_actiu ? 1 : 0); } // Retorna l'ID de l'únic player active (0 o 1) // Solo vàlid si es_un_jugador() retorna true [[nodiscard]] auto getSinglePlayerId() const -> uint8_t { if (jugador1_actiu && !jugador2_actiu) { return 0; } if (!jugador1_actiu && jugador2_actiu) { return 1; } return 0; // Fallback (necesario comprovar es_un_jugador() primer) } }; } // namespace GameConfig