private GameMode InstantiateGameMode(GameModePreset gameModePreset, string seed, MissionPrefab missionPrefab = null, MissionType missionType = MissionType.None) { if (gameModePreset.GameModeType == typeof(MissionMode)) { return(missionPrefab != null ? new MissionMode(gameModePreset, missionPrefab) : new MissionMode(gameModePreset, missionType, seed ?? ToolBox.RandomSeed(8))); } else if (gameModePreset.GameModeType == typeof(MultiPlayerCampaign)) { return(MultiPlayerCampaign.StartNew(seed ?? ToolBox.RandomSeed(8))); } #if CLIENT else if (gameModePreset.GameModeType == typeof(SinglePlayerCampaign)) { return(SinglePlayerCampaign.StartNew(seed ?? ToolBox.RandomSeed(8))); } else if (gameModePreset.GameModeType == typeof(TutorialMode)) { return(new TutorialMode(gameModePreset)); } else if (gameModePreset.GameModeType == typeof(TestGameMode)) { return(new TestGameMode(gameModePreset)); } #endif else if (gameModePreset.GameModeType == typeof(GameMode)) { return(new GameMode(gameModePreset)); } else { throw new Exception($"Could not find a game mode of the type \"{gameModePreset.GameModeType}\""); } }
private GameMode InstantiateGameMode(GameModePreset gameModePreset, string seed, SubmarineInfo selectedSub, CampaignSettings settings, IEnumerable <MissionPrefab> missionPrefabs = null, MissionType missionType = MissionType.None) { if (gameModePreset.GameModeType == typeof(CoOpMode)) { return(missionPrefabs != null ? new CoOpMode(gameModePreset, missionPrefabs) : new CoOpMode(gameModePreset, missionType, seed ?? ToolBox.RandomSeed(8))); } else if (gameModePreset.GameModeType == typeof(PvPMode)) { return(missionPrefabs != null ? new PvPMode(gameModePreset, missionPrefabs) : new PvPMode(gameModePreset, missionType, seed ?? ToolBox.RandomSeed(8))); } else if (gameModePreset.GameModeType == typeof(MultiPlayerCampaign)) { var campaign = MultiPlayerCampaign.StartNew(seed ?? ToolBox.RandomSeed(8), selectedSub, settings); if (campaign != null && selectedSub != null) { campaign.Money = Math.Max(MultiPlayerCampaign.MinimumInitialMoney, campaign.Money - selectedSub.Price); } return(campaign); } #if CLIENT else if (gameModePreset.GameModeType == typeof(SinglePlayerCampaign)) { var campaign = SinglePlayerCampaign.StartNew(seed ?? ToolBox.RandomSeed(8), selectedSub, settings); if (campaign != null && selectedSub != null) { campaign.Money = Math.Max(SinglePlayerCampaign.MinimumInitialMoney, campaign.Money - selectedSub.Price); } return(campaign); } else if (gameModePreset.GameModeType == typeof(TutorialMode)) { return(new TutorialMode(gameModePreset)); } else if (gameModePreset.GameModeType == typeof(TestGameMode)) { return(new TestGameMode(gameModePreset)); } #endif else if (gameModePreset.GameModeType == typeof(GameMode)) { return(new GameMode(gameModePreset)); } else { throw new Exception($"Could not find a game mode of the type \"{gameModePreset.GameModeType}\""); } }
private GameMode InstantiateGameMode(GameModePreset gameModePreset, string seed, SubmarineInfo selectedSub, CampaignSettings settings, IEnumerable <MissionPrefab> missionPrefabs = null, MissionType missionType = MissionType.None) { if (gameModePreset.GameModeType == typeof(CoOpMode) || gameModePreset.GameModeType == typeof(PvPMode)) { //don't allow hidden mission types (e.g. GoTo) in single mission modes var missionTypes = (MissionType[])Enum.GetValues(typeof(MissionType)); for (int i = 0; i < missionTypes.Length; i++) { if (MissionPrefab.HiddenMissionClasses.Contains(missionTypes[i])) { missionType &= ~missionTypes[i]; } } } if (gameModePreset.GameModeType == typeof(CoOpMode)) { return(missionPrefabs != null ? new CoOpMode(gameModePreset, missionPrefabs) : new CoOpMode(gameModePreset, missionType, seed ?? ToolBox.RandomSeed(8))); } else if (gameModePreset.GameModeType == typeof(PvPMode)) { return(missionPrefabs != null ? new PvPMode(gameModePreset, missionPrefabs) : new PvPMode(gameModePreset, missionType, seed ?? ToolBox.RandomSeed(8))); } else if (gameModePreset.GameModeType == typeof(MultiPlayerCampaign)) { var campaign = MultiPlayerCampaign.StartNew(seed ?? ToolBox.RandomSeed(8), selectedSub, settings); if (campaign != null && selectedSub != null) { campaign.Money = Math.Max(MultiPlayerCampaign.MinimumInitialMoney, campaign.Money - selectedSub.Price); } return(campaign); } #if CLIENT else if (gameModePreset.GameModeType == typeof(SinglePlayerCampaign)) { var campaign = SinglePlayerCampaign.StartNew(seed ?? ToolBox.RandomSeed(8), selectedSub, settings); if (campaign != null && selectedSub != null) { campaign.Money = Math.Max(SinglePlayerCampaign.MinimumInitialMoney, campaign.Money - selectedSub.Price); } return(campaign); } else if (gameModePreset.GameModeType == typeof(TutorialMode)) { return(new TutorialMode(gameModePreset)); } else if (gameModePreset.GameModeType == typeof(TestGameMode)) { return(new TestGameMode(gameModePreset)); } #endif else if (gameModePreset.GameModeType == typeof(GameMode)) { return(new GameMode(gameModePreset)); } else { throw new Exception($"Could not find a game mode of the type \"{gameModePreset.GameModeType}\""); } }