From 9ab2fc1714c2189425af00788a3203385801d2fc Mon Sep 17 00:00:00 2001 From: Raffson Date: Sat, 4 Feb 2023 23:57:28 +0100 Subject: [PATCH] Add options for number of Combined Arms slots Resolves #74 - Game masters - Tactical commanders - JTAC - Observers --- game/missiongenerator/missiongenerator.py | 20 ++++------ game/settings/settings.py | 48 +++++++++++++++++++++++ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/game/missiongenerator/missiongenerator.py b/game/missiongenerator/missiongenerator.py index 64a6c09b..e3b7cae3 100644 --- a/game/missiongenerator/missiongenerator.py +++ b/game/missiongenerator/missiongenerator.py @@ -43,9 +43,6 @@ if TYPE_CHECKING: from game import Game -COMBINED_ARMS_SLOTS = 3 - - def country_id_from_name(name: str) -> int: for k, v in country_dict.items(): if v.name == name: @@ -327,12 +324,11 @@ class MissionGenerator: gen.generate() def setup_combined_arms(self) -> None: - observers = 3 - self.mission.groundControl.pilot_can_control_vehicles = COMBINED_ARMS_SLOTS > 0 - self.mission.groundControl.blue_game_masters = 1 - self.mission.groundControl.blue_tactical_commander = COMBINED_ARMS_SLOTS - self.mission.groundControl.blue_observer = observers - self.mission.groundControl.red_game_masters = 1 - self.mission.groundControl.red_tactical_commander = COMBINED_ARMS_SLOTS - self.mission.groundControl.red_observer = observers - self.mission.groundControl.neutrals_observer = observers + settings = self.game.settings + commanders = settings.tactical_commander_count + self.mission.groundControl.pilot_can_control_vehicles = commanders > 0 + + self.mission.groundControl.blue_game_masters = settings.game_masters_count + self.mission.groundControl.blue_tactical_commander = commanders + self.mission.groundControl.blue_jtac = settings.jtac_count + self.mission.groundControl.blue_observer = settings.observer_count diff --git a/game/settings/settings.py b/game/settings/settings.py index 253318c1..f8b88574 100644 --- a/game/settings/settings.py +++ b/game/settings/settings.py @@ -416,6 +416,54 @@ class Settings: "within threatened airspace." ), ) + game_masters_count: int = bounded_int_option( + "Number of game masters", + page=MISSION_GENERATOR_PAGE, + section=GAMEPLAY_SECTION, + default=1, + min=0, + max=10, + detail=( + "The number of game master slots to generate for each side. " + "Game masters can see, control & direct all units in the mission." + ), + ) + tactical_commander_count: int = bounded_int_option( + "Number of tactical commands", + page=MISSION_GENERATOR_PAGE, + section=GAMEPLAY_SECTION, + default=3, + min=0, + max=10, + detail=( + "The number of tactical commander slots to generate for each side. " + "Tactical commanders can control & direct friendly units." + ), + ) + jtac_count: int = bounded_int_option( + "Number of JTAC controllers", + page=MISSION_GENERATOR_PAGE, + section=GAMEPLAY_SECTION, + default=3, + min=0, + max=10, + detail=( + "The number of JTAC controller slots to generate for each side. " + "JTAC operators can only control friendly units." + ), + ) + observer_count: int = bounded_int_option( + "Number of observers", + page=MISSION_GENERATOR_PAGE, + section=GAMEPLAY_SECTION, + default=0, + min=0, + max=10, + detail=( + "The number of observers slots to generate for each side. " + 'Use this to allow spectators when disabling "Allow external views".' + ), + ) # Performance perf_smoke_gen: bool = boolean_option(