/// <summary> /// Gets the combined master variant (applies to all variants) and the selected variant. /// </summary> public MissionVariant GetCombinedVariant() { if (selectedVariantIndex < 0) { return(new MissionVariant(mission.masterVariant)); } return(MissionVariant.Concat(mission.masterVariant, selectedVariant)); }
// Gets the final mission variant to use for the current game private static MissionVariant GetCombinedDifficultyVariant(MissionRoot root, int missionVariantIndex) { // Combine master variant with specified variant. The master variant is always used as a base. MissionVariant missionVariant = root.masterVariant; if (root.missionVariants.Count > 0) { missionVariant = MissionVariant.Concat(root.masterVariant, root.missionVariants[missionVariantIndex]); } // Startup Flags bool isMultiplayer = (int)root.levelDetails.missionType <= -4 && (int)root.levelDetails.missionType >= -8; int localDifficulty = SceneParameters.Players[SceneParameters.LocalPlayerID].Difficulty; // Combine master gaia resources with difficulty gaia resources if (!isMultiplayer && localDifficulty < missionVariant.tethysDifficulties.Count) { missionVariant.tethysGame = GameData.Concat(missionVariant.tethysGame, missionVariant.tethysDifficulties[localDifficulty]); } foreach (PlayerData data in missionVariant.players) { int difficulty = 0; SceneParameters.Player player = SceneParameters.Players.FirstOrDefault((scenePlayer) => scenePlayer.PlayerID == data.id); // Get difficulty if (player != null) { difficulty = player.Difficulty; } // If playing single player, all players get assigned the local player's difficulty if (!isMultiplayer && data.id != SceneParameters.LocalPlayerID) { difficulty = localDifficulty; } // Add difficulty resources if (difficulty < data.difficulties.Count) { data.resources = PlayerData.ResourceData.Concat(data.resources, data.difficulties[difficulty]); } } return(missionVariant); }