chip-gameV3/Assets/Scripts/Gameplay/GameplayLayoutController.cs

51 lines
2.0 KiB
C#

using DG.Tweening;
using System;
using UnityEngine;
public class GameplayLayoutController : MonoBehaviour
{
[Header("Панели")]
[SerializeField] private RectTransform _leftPanel;
[SerializeField] private float _leftOpenedPosition = 506.9099f;
[SerializeField] private float _panelsTransitionDuration;
[SerializeField] private Ease _panelsOpenEase;
[SerializeField] private Ease _panelsCloseEase;
[Header("Доска")]
[SerializeField] private Transform _board;
[SerializeField] private float _boardOpenedY = -5.93f;
[SerializeField] private float _boardClosedY = 8;
[SerializeField] private float _boardTransitionDuration = 1;
[SerializeField] private Ease _boardOpenEase;
[SerializeField] private Ease _boardCloseEase;
public Sequence GetOpenSequence() => GetSequenceByState(true);
public Sequence GetCloseSequence() => GetSequenceByState(false);
private Sequence GetSequenceByState(bool open)
{
float leftTarget = open ? _leftOpenedPosition : 0;
float boardTarget = open ? _boardOpenedY : _boardClosedY;
Ease boardEase = open ? _boardOpenEase : _boardCloseEase;
Ease panelsEase = open ? _panelsOpenEase : _panelsCloseEase;
return GetTransitionSequence(leftTarget, boardTarget, boardEase, panelsEase);
}
private Sequence GetTransitionSequence(float targetLeftX, float targetBoardY, Ease boardEase, Ease panelsEase)
{
if (_leftPanel == null || _board == null)
throw new Exception("Панели или доска не назначены!");
var sequence = DOTween.Sequence();
Tween left = _leftPanel.DOAnchorPosX(targetLeftX, _panelsTransitionDuration)
.SetEase(panelsEase);
Tween board = _board.DOMoveY(targetBoardY, _boardTransitionDuration)
.SetEase(boardEase);
sequence.Append(left);
sequence.Append(board);
return sequence;
}
}