예제 #1
0
        public void PostExistsTest()
        {
            var sfx = new SfxConfiguration("Facegroup.Tests/bin/Debug/sfx.json");

            Assert.True(sfx.PostExists("0123456789"));
            Assert.False(sfx.PostExists("non existing post id"));
        }
예제 #2
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            Initialize();

            AudioManager myTarget = (AudioManager)target;

            /*
             * if (GUILayout.Button("Grab from Fabric"))
             * {
             *  myTarget.ClearConfiguration();
             *  var components = myTarget.transform.GetComponentsInChildren<Fabric.AudioComponent>(true);
             *  foreach (var audioComponent in components)
             *  {
             *      var listener = audioComponent.GetComponent<Fabric.EventListener>();
             *
             *      if (listener != null)
             *      {
             *          bool found = false;
             *          Sfx sfx = 0;
             *          foreach (var s in Enum.GetValues(typeof(Sfx)))
             *          {
             *              if (AudioConfig.GetSfxEventName((Sfx)s) == listener._eventName)
             *              {
             *                  sfx = (Sfx)s;
             *                  found = true;
             *                  break;
             *              }
             *          }
             *
             *          if (found)
             *          {
             *              SfxConfiguration conf = myTarget.GetSfxConfiguration(sfx);
             *
             *              if (conf == null)
             *                  conf = new SfxConfiguration();
             *
             *              conf.sfx = sfx;
             *              myTarget.UpdateSfxConfiguration(conf);
             *
             *              conf.volume = audioComponent.Volume;
             *              conf.randomPitchOffset = audioComponent.PitchRandomization;
             *
             *              var random = audioComponent as Fabric.RandomAudioClipComponent;
             *
             *              if (random != null)
             *              {
             *                  foreach (var c in random._audioClips)
             *                      conf.clips.Add(c);
             *              }
             *              else
             *                  conf.clips.Add(audioComponent.AudioClip);
             *          }
             *      }
             *  }
             *
             *  var rndcomponents = myTarget.transform.GetComponentsInChildren<Fabric.RandomComponent>(true);
             *  foreach (var randomComponent in rndcomponents)
             *  {
             *      var listener = randomComponent.GetComponent<Fabric.EventListener>();
             *
             *      if (listener != null)
             *      {
             *          bool found = false;
             *          Sfx sfx = 0;
             *          foreach (var s in Enum.GetValues(typeof(Sfx)))
             *          {
             *              if (AudioConfig.GetSfxEventName((Sfx)s) == listener._eventName)
             *              {
             *                  sfx = (Sfx)s;
             *                  found = true;
             *                  break;
             *              }
             *          }
             *
             *          if (found)
             *          {
             *              SfxConfiguration conf = myTarget.GetSfxConfiguration(sfx);
             *
             *              if (conf == null)
             *                  conf = new SfxConfiguration();
             *              conf.sfx = sfx;
             *              conf.volume = randomComponent.Volume;
             *              conf.randomPitchOffset = randomComponent.PitchRandomization;
             *
             *              var childs = randomComponent.GetChildComponents();
             *
             *              if (childs != null)
             *                  foreach (var child in childs)
             *                  {
             *                      var random = child as Fabric.RandomAudioClipComponent;
             *
             *                      if (random != null)
             *                      {
             *                          foreach (var c in random._audioClips)
             *                              conf.clips.Add(c);
             *                      }
             *                      else
             *                      {
             *                          var c = child as Fabric.AudioComponent;
             *                          if (c != null)
             *                              conf.clips.Add(c.AudioClip);
             *                      }
             *                  }
             *          }
             *      }
             *  }
             * }
             *
             */

            EditorGUILayout.LabelField("-- Sound effects --", titlesStyle);
            EditorGUILayout.Separator();
            foreach (var sfx in Enum.GetValues(typeof(Sfx)))
            {
                SfxConfiguration conf = myTarget.GetSfxConfiguration((Sfx)sfx);

                if (conf == null)
                {
                    conf        = new SfxConfiguration();
                    conf.sfx    = (Sfx)sfx;
                    conf.volume = 1;
                    myTarget.UpdateSfxConfiguration(conf);
                }


                List <AudioClip> clips = conf.clips;

                int count = clips != null ? clips.Count : 0;

                int nonNullCount = -1;
                for (int i = 0; i < count; ++i)
                {
                    var clip = clips[i];
                    if (clip != null)
                    {
                        ++nonNullCount;
                    }
                }

                // Shrink
                if (count != nonNullCount)
                {
                    var newClips = new List <AudioClip>();
                    for (int i = 0; i < count; ++i)
                    {
                        var clip = clips[i];
                        if (clip != null)
                        {
                            newClips.Add(clips[i]);
                        }
                    }
                    clips = newClips;
                }

                bool hasClips = clips.Count > 0;
                EditorGUILayout.LabelField("Sfx." + sfx.ToString(), hasClips ? subtitleStyle : subtitleBadStyle);

                for (int i = 0; i < clips.Count; ++i)
                {
                    EditorGUILayout.BeginHorizontal();
                    clips[i] = (AudioClip)EditorGUILayout.ObjectField(clips[i], typeof(AudioClip), false);

                    if (GUILayout.Button("Play", GUILayout.Width(40)))
                    {
                        AudioUtils.PlayClip(clips[i]);
                    }
                    if (GUILayout.Button("Stop", GUILayout.Width(40)))
                    {
                        AudioUtils.StopAllClips();
                    }

                    var prevColor = GUI.color;
                    GUI.color = Color.red;
                    if (GUILayout.Button("Remove", GUILayout.Width(60)))
                    {
                        clips[i] = null;
                    }
                    GUI.color = prevColor;

                    EditorGUILayout.EndHorizontal();
                }

                EditorGUILayout.BeginHorizontal();

                if (clips.Count > 0)
                {
                    EditorGUILayout.LabelField("Add Random Choice:", hasClips ? goodStyle : badStyle);
                }

                var newClip = (AudioClip)EditorGUILayout.ObjectField(null, typeof(AudioClip), false);

                EditorGUILayout.EndHorizontal();

                if (newClip != null)
                {
                    clips.Add(newClip);
                }

                conf.clips = clips;

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Volume:", hasClips ? goodStyle : badStyle);
                conf.volume = EditorGUILayout.Slider(conf.volume, 0, 1);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Random Pitch Offset (+/-):", hasClips ? goodStyle : badStyle);
                conf.randomPitchOffset = EditorGUILayout.Slider(conf.randomPitchOffset, 0, 10);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.Separator();
            }

            EditorGUILayout.LabelField("-- Music --", titlesStyle);
            EditorGUILayout.Separator();

            foreach (var music in Enum.GetValues(typeof(Music)))
            {
                if ((Music)music == Music.DontChange || (Music)music == Music.Silence || (Music)music == Music.Custom)
                {
                    continue;
                }

                MusicConfiguration conf = myTarget.GetMusicConfiguration((Music)music);

                if (conf == null)
                {
                    conf = new MusicConfiguration();

                    conf.music = (Music)music;
                }

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Music." + music.ToString(), conf.clip ? goodStyle : badStyle);
                conf.clip = (AudioClip)EditorGUILayout.ObjectField(conf.clip, typeof(AudioClip), false);
                EditorGUILayout.EndHorizontal();
                myTarget.UpdateMusicConfiguration(conf);
            }
        }