예제 #1
0
        /// <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));
        }
예제 #2
0
        // 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);
        }