/// <summary>
 /// Sets the audio info to the data of a sound pack file audio.
 /// </summary>
 /// <param name="sound">The sound.</param>
 /// <param name="spfAudio">The sound pack file audio.</param>
 /// <returns>True if successful; false otherwise.</returns>
 public static bool SetAudioInfo(SoundContainer sound, SoundPacksFileV1.Audio spfAudio)
 {
     if (sound.HasSound)
     {
         return(SetAudioInfo(sound.AudioInfo, spfAudio));
     }
     return(false);
 }
        /// <summary>
        /// Sets the audio info to the data of a sound pack file audio.
        /// </summary>
        /// <param name="audioInfo">The audio info to set.</param>
        /// <param name="spfAudio">The sound pack file audio.</param>
        /// <returns>True if successful; false otherwise.</returns>
        public static bool SetAudioInfo(AudioInfo audioInfo, SoundPacksFileV1.Audio spfAudio)
        {
            if (audioInfo != null && spfAudio != null)
            {
                Action <AudioInfo, SoundPacksFileV1.AudioInfo> patchAudioInfo = null;
                int variation = 0;
                patchAudioInfo = new Action <AudioInfo, SoundPacksFileV1.AudioInfo>((ai, spf) =>
                {
                    if (spf.AudioClip != null)
                    {
                        ai.m_clip = spf.AudioClip;
                    }
                    else
                    {
                        WWW www   = new WWW(new Uri(spf.Clip).AbsoluteUri);
                        ai.m_clip = www.GetAudioClip(true, false);
                    }
                    ai.m_volume     = spf.Volume;
                    ai.m_pitch      = spf.Pitch;
                    ai.m_fadeLength = spf.FadeLength;
                    ai.m_loop       = spf.IsLoop;
                    ai.m_is3D       = spf.Is3D;
                    ai.m_randomTime = spf.IsRandomTime;

                    variation++;
                    if (spf.Variations != null)
                    {
                        ai.m_variations = new AudioInfo.Variation[spf.Variations.Length];
                        for (int i = 0; i < spf.Variations.Length; i++)
                        {
                            ai.m_variations[i] = new AudioInfo.Variation()
                            {
                                m_probability = spf.Variations[i].Probability,
                                m_sound       = ScriptableObject.CreateInstance <AudioInfo>()
                            };
                            patchAudioInfo(ai.m_variations[i].m_sound, spf.Variations[i].AudioInfo);
                        }
                    }
                    else
                    {
                        ai.m_variations = null;
                    }
                });
                patchAudioInfo(audioInfo, spfAudio.AudioInfo);
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// Gets the sound pack file audio from an audio info.
        /// </summary>
        /// <param name="audioInfo">The original audio info.</param>
        /// <returns>The sound pack file audio.</returns>
        public static SoundPacksFileV1.Audio GetAudioInfo(AudioInfo audioInfo)
        {
            if (audioInfo != null)
            {
                var spfAudio = new SoundPacksFileV1.Audio()
                {
                    Name      = audioInfo.name,
                    AudioInfo = new SoundPacksFileV1.AudioInfo()
                };

                Action <AudioInfo, SoundPacksFileV1.AudioInfo> backupAudioInfo = null;
                backupAudioInfo = new Action <AudioInfo, SoundPacksFileV1.AudioInfo>((ai, spf) =>
                {
                    spf.AudioClip    = ai.m_clip;
                    spf.Volume       = ai.m_volume;
                    spf.MaxVolume    = Mathf.Max(ai.m_volume, 1);
                    spf.Pitch        = ai.m_pitch;
                    spf.FadeLength   = ai.m_fadeLength;
                    spf.IsLoop       = ai.m_loop;
                    spf.Is3D         = ai.m_is3D;
                    spf.IsRandomTime = ai.m_randomTime;

                    if (ai.m_variations != null)
                    {
                        spf.Variations = new SoundPacksFileV1.Variation[ai.m_variations.Length];
                        for (int i = 0; i < ai.m_variations.Length; i++)
                        {
                            spf.Variations[i] = new SoundPacksFileV1.Variation()
                            {
                                Probability = ai.m_variations[i].m_probability,
                                AudioInfo   = new SoundPacksFileV1.AudioInfo()
                            };
                            backupAudioInfo(ai.m_variations[i].m_sound, spf.Variations[i].AudioInfo);
                        }
                    }
                });
                backupAudioInfo(audioInfo, spfAudio.AudioInfo);
                return(spfAudio);
            }
            return(null);
        }
 public override void PatchSound(SoundPacksFileV1.Audio newSound)
 {
 }
Beispiel #5
0
        private void SoundPackPresetDropDownSelectionChanged(int value)
        {
            this.isChangingSoundPackPreset = true;

            if (value == 0)
            {
                // Default
                Mod.Instance.Log.Debug("Resetting sound pack to default");
                foreach (UIDropDown dropDown in this.soundSelections.Values)
                {
                    dropDown.selectedIndex = 0;
                }
            }
            else if (value == 1)
            {
                // Custom, don't do anything here
            }
            else if (value >= 2)
            {
                // Sound pack
                string soundPackName = this.soundPacks[value];
                SoundPacksFileV1.SoundPack soundPack = null;
                Mod.Instance.Log.Debug("Setting sound pack to {0}", soundPackName);

                if (SoundPacksManager.instance.SoundPacks.TryGetValue(soundPackName, out soundPack))
                {
                    foreach (var dropDown in this.soundSelections)
                    {
                        var prefix = dropDown.Key.Substring(0, dropDown.Key.IndexOf('.'));
                        var id     = dropDown.Key.Substring(dropDown.Key.IndexOf('.') + 1);
                        SoundPacksFileV1.Audio[] audios = null;
                        switch (prefix)
                        {
                        case "Ambient":
                            audios = soundPack.Ambients;
                            break;

                        case "AmbientNight":
                            audios = soundPack.AmbientsNight;
                            break;

                        case "Animal":
                            audios = soundPack.Animals;
                            break;

                        case "Building":
                            audios = soundPack.Buildings;
                            break;

                        case "Vehicle":
                            audios = soundPack.Vehicles;
                            break;

                        case "Misc":
                            audios = soundPack.Miscs;
                            break;
                        }
                        if (audios != null)
                        {
                            SoundPacksFileV1.Audio audio = audios.FirstOrDefault(a => a.Type == id);
                            if (audio != null)
                            {
                                Mod.Instance.Log.Debug("Setting sound {0} to {1}", audio.Type, audio.Name);
                                dropDown.Value.selectedValue = audio.Name;
                            }
                        }
                    }
                }
            }

            Mod.Instance.Settings.SoundPackPreset = this.soundPackPresetDropDown.selectedValue;
            this.isChangingSoundPackPreset        = false;
        }