Пример #1
0
        /// <summary>
        /// Merges otherAchievement into achievement
        /// </summary>
        public static void MergeAchievement(AchievementOptions achievement, AchievementOptions otherAchievement)
        {
            if (achievement == null || otherAchievement == null)
            {
                throw new ArgumentNullException();
            }

            //Gather all non-default sounds from both achievements
            var soundsToAdd = new List <BasicAchievementSound>();

            soundsToAdd.AddRange(GetAllNonDefaultSounds(achievement));
            soundsToAdd.AddRange(GetAllNonDefaultSounds(otherAchievement));


            if (soundsToAdd.Count == 1)
            {
                //Create old style one sound achievement
                achievement.fileSoundPath = soundsToAdd[0].soundFile;
                achievement.pakSoundPath  = soundsToAdd[0].pakSoundFile;
                achievement.dynamicSounds = null;
            }
            else if (soundsToAdd.Count > 1)
            {
                //Create dynamicSounds multi sound achievement
                achievement.fileSoundPath = _defaultfileSoundPath;
                achievement.pakSoundPath  = null;
                if (achievement.dynamicSounds == null)
                {
                    achievement.dynamicSounds = new BasicDynamicSoundManager();
                }
                achievement.dynamicSounds.sounds = soundsToAdd.ToArray();
            }
            //else if soundsToAdd.Count == 0, there is nothing to change, achievement has a default sound already (it is added during loading)
        }
Пример #2
0
        /// <summary>
        /// Helper function that checks equality of the soundfilenames fo the voicepack when it has 1+ sounds
        /// </summary>
        /// <param name="lhs">left hand side</param>
        /// <param name="rhs">right hand side</param>
        /// <returns></returns>
        public static bool AchievementOptionsDynamicSoundsEqual(AchievementOptions lhs, AchievementOptions rhs)
        {
            if (rhs?.dynamicSounds?.sounds == null && lhs?.dynamicSounds?.sounds == null)
            {
                return(true);
            }
            if (rhs?.dynamicSounds?.sounds == null || lhs?.dynamicSounds?.sounds == null)
            {
                return(false);
            }

            if (rhs.dynamicSounds.sounds.Length != lhs.dynamicSounds.sounds.Length)
            {
                return(false);
            }

            foreach (var sound in rhs.dynamicSounds.sounds)
            {
                //try to find other sound according to lambda
                var otherSound = lhs.dynamicSounds.sounds.SingleOrDefault(
                    item => item.pakSoundFile == sound.pakSoundFile && item.soundFile == sound.soundFile);
                if (otherSound == null)
                {
                    return(false);
                }
            }

            return(true);
        }
        public static AchievementOptions CreateOneSoundAchievement(string pakSoundPath, string fileSoundPath)
        {
            var oneSoundAchievement = new AchievementOptions();

            oneSoundAchievement.Initialize();
            oneSoundAchievement.fileSoundPath = fileSoundPath;
            oneSoundAchievement.pakSoundPath  = pakSoundPath;
            return(oneSoundAchievement);
        }
        public void MergeOneSoundAchievementWithDefault()
        {
            var defaultAchievement = new AchievementOptions();

            defaultAchievement.Initialize();

            var oneSoundAchievement = VoicepackSampleCreator.CreateOneSoundAchievement("pakSoundPath", "fileSoundPath");


            VoicepackMerger.MergeAchievement(defaultAchievement, oneSoundAchievement);


            var expectedAchievement = oneSoundAchievement;

            Assert.IsTrue(VoicepackComparer.AchievementOptionsOneSoundEqual(expectedAchievement, defaultAchievement));
        }
        /// <summary>
        /// expects pakAndSoundFiles as an array of dimension [x,2] with x the number of sounds to add
        /// it expects this format: {{pakSoundfile, SoundFile}, {pakSoundFile,..}, ..}
        /// </summary>
        /// <param name="pakAndSoundFiles"></param>
        /// <returns></returns>
        public static AchievementOptions CreateDynamicSoundsAchievement(string[,] pakAndSoundFiles)
        {
            var nrOfSounds = pakAndSoundFiles.GetLength(0);

            var dynamicSoundsAchievment = new AchievementOptions();

            dynamicSoundsAchievment.Initialize();
            var sounds = dynamicSoundsAchievment.dynamicSounds.sounds = new BasicAchievementSound[nrOfSounds];

            for (int i = 0; i < nrOfSounds; i++)
            {
                sounds[i] = new BasicAchievementSound
                {
                    pakSoundFile = pakAndSoundFiles[i, 0],
                    soundFile    = pakAndSoundFiles[i, 1]
                };
            }

            return(dynamicSoundsAchievment);
        }
Пример #6
0
        /// <summary>
        /// Helper function that gathers all sounds from a achievement, be it old style one sound, or multiple dynamicsounds
        /// and returns them in one IEnumerable.
        /// </summary>
        private static IEnumerable <BasicAchievementSound> GetAllNonDefaultSounds(AchievementOptions achievement)
        {
            var sounds = new List <BasicAchievementSound>();

            //Add old style one sound
            if (achievement.fileSoundPath.ToLower().Trim() != _defaultfileSoundPath)
            {
                var soundToAdd = new BasicAchievementSound
                {
                    pakSoundFile = achievement.pakSoundPath,
                    soundFile    = achievement.fileSoundPath
                };
                sounds.Add(soundToAdd);
            }

            //Add dynamic sounds
            if (achievement.dynamicSounds?.sounds != null)
            {
                sounds.AddRange(achievement.dynamicSounds.sounds);
            }

            return(sounds);
        }
Пример #7
0
 /// <summary>
 /// Helper function that checks equality of the soundfilenames of the voicepack when it has only 1 sound
 /// </summary>
 /// <param name="lhs">left hand side, assumed not to be null</param>
 /// <param name="rhs">right hand side, assumed not to be null</param>
 public static bool AchievementOptionsOneSoundEqual(AchievementOptions lhs, AchievementOptions rhs)
 {
     return(lhs.fileSoundPath == rhs.fileSoundPath && lhs.pakSoundPath == rhs.pakSoundPath);
 }