Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/Michsky/UI/MTP/StyleManager.cs
2026-03-04 09:37:33 +08:00

138 lines
2.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
namespace Michsky.UI.MTP
{
[RequireComponent(typeof(Animator))]
public class StyleManager : MonoBehaviour
{
public List<TextItem> textItems = new List<TextItem>();
public List<ImageItem> imageItems = new List<ImageItem>();
public Animator styleAnimator;
public AnimationClip inAnim;
public AnimationClip outAnim;
public bool playOnEnable = true;
[Range(0.1f, 2.5f)]
public float animationSpeed = 1f;
public float showFor = 2.5f;
public bool forceUpdate = true;
public bool customContent;
public bool customizableWidth;
public bool customizableHeight;
public bool customScale;
public bool playOutAnimation = true;
public bool disableOnOut = true;
public bool loopAnimations;
[Range(0.1f, 10f)]
public float scale = 1f;
public UnityEvent onEnable;
public UnityEvent onDisable;
private void OnEnable()
{
if (playOnEnable)
{
Play();
}
}
public void Play()
{
base.gameObject.SetActive(value: true);
InitializeSpeedInternal();
PlayIn();
onEnable.Invoke();
if (playOutAnimation)
{
StartCoroutine("StartTimer");
StartCoroutine("DisableStyle");
}
}
public void PlayIn()
{
base.gameObject.SetActive(value: true);
StopCoroutine("StartTimer");
StopCoroutine("DisableStyle");
styleAnimator.Rebind();
styleAnimator.Play("In");
}
public void PlayOut()
{
if (!styleAnimator.GetCurrentAnimatorStateInfo(0).IsName("Finished"))
{
styleAnimator.Play("Out");
}
}
public void PlayOutAndDisable()
{
StartCoroutine("StartTimer");
StartCoroutine("DisableStyle");
}
private void InitializeSpeedInternal()
{
styleAnimator.SetFloat("Anim Speed", animationSpeed);
}
public void InitializeSpeed(float speed)
{
animationSpeed = speed;
styleAnimator.SetFloat("Anim Speed", animationSpeed);
}
private IEnumerator StartTimer()
{
yield return new WaitForSeconds(showFor);
PlayOut();
if (loopAnimations)
{
StartCoroutine("DisableStyle");
}
}
private IEnumerator DisableStyle()
{
while (!styleAnimator.GetCurrentAnimatorStateInfo(0).IsName("Finished"))
{
yield return new WaitForSeconds(1f);
}
if (loopAnimations)
{
styleAnimator.Play("In");
StartCoroutine("StartTimer");
}
else if (styleAnimator.GetCurrentAnimatorStateInfo(0).IsName("Finished"))
{
onDisable.Invoke();
if (disableOnOut)
{
base.gameObject.SetActive(value: false);
}
}
}
}
}