using System; using System.Collections; using UnityEngine; public class ActionDirect : MonoBehaviour { public static ActionDirect Instance { get; private set; } private void Start() { ActionDirect.Instance = this; base.gameObject.SetActive(false); } private void UIMove(float time) { float current_time; if (time <= this.m_MoveTime / 2f + this.m_StopTime) { current_time = Mathf.Min(time, this.m_MoveTime / 2f); } else { current_time = time - (this.m_StopTime + this.m_MoveTime / 2f); } float x = this.m_ParentCanvas.sizeDelta.x; if (time <= this.m_MoveTime / 2f) { base.transform.localPosition = Vector3.Lerp(Vector3.right * x, Vector3.zero, KasaiUtility.SinRate01(current_time, this.m_MoveTime / 2f, false, false)); } else if (time > this.m_MoveTime / 2f + this.m_StopTime) { base.transform.localPosition = Vector3.Lerp(Vector3.zero, Vector3.left * x, KasaiUtility.SinRate01(current_time, this.m_MoveTime / 2f, false, false)); } } private void MoveEnd() { if (this.MoveendCall != null) { this.MoveendCall(); } this.MoveendCall = null; base.gameObject.SetActive(false); } public void ActionStart(string action) { base.gameObject.SetActive(true); IEnumerator enumerator = this.m_ActionImage.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; Transform transform = (Transform)obj; transform.gameObject.SetActive(transform.name == action); } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } base.StartCoroutine(KasaiUtility.TimeCroutine(this.m_MoveTime + this.m_StopTime, new Action(this.UIMove), new Action(this.MoveEnd))); } [SerializeField] private Transform m_ActionImage; [SerializeField] private RectTransform m_ParentCanvas; [SerializeField] private float m_MoveTime = 0.75f; [SerializeField] private float m_StopTime = 0.25f; public Action MoveendCall; }