using DG.Tweening; using System; using UnityEngine; public class MenuGameplayTransit : MonoBehaviour { [SerializeField] MenuLayoutController menu; [SerializeField] GameplayLayoutController gameplay; public event Action GameplayOpened; Sequence _sequence; bool locked = false; public void GotoGameplay() { Lock(); if (_sequence != null) { _sequence.Kill(); _sequence = null; } _sequence = DOTween.Sequence(); _sequence.Append(menu.GetCloseSequence()); _sequence.Append(gameplay.GetOpenSequence()); _sequence.onComplete += Unlock; _sequence.onComplete += NotifyGameplayOpened; _sequence.PlayForward(); } private void NotifyGameplayOpened() { GameplayOpened?.Invoke(); } public void GotoMenu() { Lock(); if (_sequence != null) { _sequence.Kill(); _sequence = null; } _sequence = DOTween.Sequence(); _sequence.Append(gameplay.GetCloseSequence()); _sequence.Append(menu.GetOpenSequence()); _sequence.AppendCallback(() => ControlsPerformer.Instance.SetControlable(menu)); _sequence.onComplete += Unlock; _sequence.PlayForward(); } private void Lock() => locked = true; private void Unlock() => locked = false; }