Пример #1
0
 /// <summary>
 /// On enable we start listening for events
 /// </summary>
 protected virtual void OnEnable()
 {
     MMSfxEvent.Register(OnMMSfxEvent);
     MMSoundManagerSoundPlayEvent.Register(OnMMSoundManagerSoundPlayEvent);
     this.MMEventStartListening <MMSoundManagerEvent>();
     this.MMEventStartListening <MMSoundManagerTrackEvent>();
     this.MMEventStartListening <MMSoundManagerSoundControlEvent>();
     this.MMEventStartListening <MMSoundManagerTrackFadeEvent>();
     this.MMEventStartListening <MMSoundManagerSoundFadeEvent>();
     this.MMEventStartListening <MMSoundManagerAllSoundsControlEvent>();
 }
        /// <summary>
        /// Instantiates an achievement display prefab and shows it for the specified duration
        /// </summary>
        /// <returns>The achievement.</returns>
        /// <param name="achievement">Achievement.</param>
        public virtual IEnumerator DisplayAchievement(MMAchievement achievement)
        {
            if ((this.transform == null) || (AchievementDisplayPrefab == null))
            {
                yield break;
            }

            // we instantiate our achievement display prefab, and add it to the group that will automatically handle its position
            GameObject instance = (GameObject)Instantiate(AchievementDisplayPrefab.gameObject);

            instance.transform.SetParent(this.transform, false);

            // we get the achievement displayer
            MMAchievementDisplayItem achievementDisplay = instance.GetComponent <MMAchievementDisplayItem> ();

            if (achievementDisplay == null)
            {
                yield break;
            }

            // we fill our achievement
            achievementDisplay.Title.text       = achievement.Title;
            achievementDisplay.Description.text = achievement.Description;
            achievementDisplay.Icon.sprite      = achievement.UnlockedImage;
            if (achievement.AchievementType == AchievementTypes.Progress)
            {
                achievementDisplay.ProgressBarDisplay.gameObject.SetActive(true);
            }
            else
            {
                achievementDisplay.ProgressBarDisplay.gameObject.SetActive(false);
            }

            // we play a sound if set
            if (achievement.UnlockedSound != null)
            {
                MMSfxEvent.Trigger(achievement.UnlockedSound);
            }

            // we fade it in and out
            CanvasGroup achievementCanvasGroup = instance.GetComponent <CanvasGroup> ();

            if (achievementCanvasGroup != null)
            {
                achievementCanvasGroup.alpha = 0;
                StartCoroutine(MMFade.FadeCanvasGroup(achievementCanvasGroup, AchievementFadeDuration, 1));
                yield return(_achievementFadeOutWFS);

                StartCoroutine(MMFade.FadeCanvasGroup(achievementCanvasGroup, AchievementFadeDuration, 0));
            }
        }
Пример #3
0
 /// <summary>
 /// On disable we stop listening for events
 /// </summary>
 protected virtual void OnDisable()
 {
     if (_enabled)
     {
         MMSfxEvent.Unregister(OnMMSfxEvent);
         MMSoundManagerSoundPlayEvent.Unregister(OnMMSoundManagerSoundPlayEvent);
         this.MMEventStopListening <MMSoundManagerEvent>();
         this.MMEventStopListening <MMSoundManagerTrackEvent>();
         this.MMEventStopListening <MMSoundManagerSoundControlEvent>();
         this.MMEventStopListening <MMSoundManagerTrackFadeEvent>();
         this.MMEventStopListening <MMSoundManagerSoundFadeEvent>();
         this.MMEventStopListening <MMSoundManagerAllSoundsControlEvent>();
     }
 }
Пример #4
0
        /// <summary>
        /// Plays all the feedbacks that were enabled for this
        /// </summary>
        /// <param name="position"></param>
        public virtual void Play(Vector3 position)
        {
            // Camera shake
            if (ShakeCamera)
            {
                MMCameraShakeEvent.Trigger(CameraShakeProperties.Duration, CameraShakeProperties.Amplitude, CameraShakeProperties.Frequency);
            }

            if (UpdateAnimator)
            {
                if (AnimatorTriggerParameterName != null)
                {
                    FeedbackAnimator.SetTrigger(AnimatorTriggerParameterName);
                }

                if (AnimatorBoolParameterName != null)
                {
                    FeedbackAnimator.SetBool(AnimatorBoolParameterName, true);
                }
            }

            // instantiated particles
            if (InstantiateVFX && VfxToInstantiate != null)
            {
                if (_objectPool != null)
                {
                    _newGameObject = _objectPool.GetPooledGameObject();
                    if (_newGameObject != null)
                    {
                        _newGameObject.transform.position = position + VfxPositionOffset;
                        _newGameObject.SetActive(true);
                    }
                }
                else
                {
                    _newGameObject = GameObject.Instantiate(VfxToInstantiate) as GameObject;
                    _newGameObject.transform.position = position + VfxPositionOffset;
                }
            }

            if (ZoomCamera)
            {
                MMCameraZoomEvent.Trigger(ZoomMode, ZoomFieldOfView, ZoomTransitionDuration, ZoomDuration);
            }

            // Freeze Frame
            if (FreezeFrame)
            {
                MMFreezeFrameEvent.Trigger(FreezeFrameDuration);
            }

            // Time Scale
            if (ModifyTimescale)
            {
                MMTimeScaleEvent.Trigger(MMTimeScaleMethods.For, TimeScale, TimeScaleDuration, TimeScaleLerp, TimeScaleLerpSpeed, false);
            }

            // Particles
            if (Particles != null)
            {
                Particles.Play();
            }

            // Chromatic Aberration
            if (ChromaticAberration)
            {
                MMChromaticAberrationShakeEvent.Trigger(ChromaticAberrationDuration);
            }

            // Sounds
            if (Sfx != null)
            {
                MMSfxEvent.Trigger(Sfx);
            }

            // Flash
            if (TriggerFlash)
            {
                MMFlashEvent.Trigger(FlashColor, FlashDuration, FlashAlpha, FlashID);
            }
        }