chip-gameV3/Assets/Scripts/MenuGameplayTransit.cs
sega 116b9b3116 Рефакторинг Character.cs: приведение к SRP и вынос логики
Инкапсулированы методы появления и ухода персонажа
Инкапсулирована работа с аниматором
Работа с репликами вынесена в ScriptableObject
Логика MessageBox вынесена в отдельный класс
Переработан event bus персонажей
Сложность и призовой модуль вынесены в отдельные классы
Character.cs приведён к Single Responsibility Principle.
2026-08-13 16:19:56 +03:00

60 lines
1.4 KiB
C#

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;
}