// Copyright (c) Meta Platforms, Inc. and affiliates. using System.Collections; using UnityEngine; using UnityEngine.UI; namespace Lofelt.NiceVibrations { public class RegularPresetsDemoManager : DemoManager { [Header("Image")] public Image IconImage; public Animator IconImageAnimator; [Header("Sprites")] public Sprite IdleSprite; public Sprite SelectionSprite; public Sprite SuccessSprite; public Sprite WarningSprite; public Sprite FailureSprite; public Sprite RigidSprite; public Sprite SoftSprite; public Sprite LightSprite; public Sprite MediumSprite; public Sprite HeavySprite; protected WaitForSeconds _turnDelay; protected WaitForSeconds _shakeDelay; protected int _idleAnimationParameter; protected virtual void Awake() { _turnDelay = new WaitForSeconds(0.02f); _shakeDelay = new WaitForSeconds(0.3f); _idleAnimationParameter = Animator.StringToHash("Idle"); IconImageAnimator.SetBool(_idleAnimationParameter, true); IconImageAnimator.speed = 2f; } protected virtual void ChangeImage(Sprite newSprite) { StartCoroutine(ChangeImageCoroutine(newSprite)); } protected virtual IEnumerator ChangeImageCoroutine(Sprite newSprite) { DebugAudioEmphasis.Play(); IconImageAnimator.SetBool(_idleAnimationParameter, false); yield return _turnDelay; IconImage.sprite = newSprite; yield return _shakeDelay; IconImageAnimator.SetBool(_idleAnimationParameter, true); yield return _turnDelay; IconImage.sprite = IdleSprite; } public virtual void SelectionButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.Selection); ChangeImage(SelectionSprite); } public virtual void SuccessButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.Success); ChangeImage(SuccessSprite); } public virtual void WarningButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.Warning); ChangeImage(WarningSprite); } public virtual void FailureButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.Failure); ChangeImage(FailureSprite); } public virtual void RigidButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.RigidImpact); ChangeImage(RigidSprite); } public virtual void SoftButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.SoftImpact); ChangeImage(SoftSprite); } public virtual void LightButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.LightImpact); ChangeImage(LightSprite); } public virtual void MediumButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.MediumImpact); ChangeImage(MediumSprite); } public virtual void HeavyButton() { HapticPatterns.PlayPreset(HapticPatterns.PresetType.HeavyImpact); ChangeImage(HeavySprite); } } }