121 lines
3.3 KiB
C#
121 lines
3.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using Data;
|
|
using DG.Tweening;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
struct ButtonNListener
|
|
{
|
|
private Button _button;
|
|
private UnityAction _action;
|
|
private Vector2 _posToMove;
|
|
|
|
public Button Button => _button;
|
|
public UnityAction Action => _action;
|
|
public Vector2 PosToMove => _posToMove;
|
|
|
|
public ButtonNListener(Button button, UnityAction action, Vector2 posToMove)
|
|
{
|
|
_button = button;
|
|
_action = action;
|
|
_posToMove = posToMove;
|
|
}
|
|
}
|
|
|
|
public class GameMenuView : MonoBehaviour
|
|
{
|
|
[SerializeField] private Button playPauseButton;
|
|
[SerializeField] private Button settingsButton;
|
|
[SerializeField] private Button exitButton;
|
|
[SerializeField] private Sprite pauseImage;
|
|
[SerializeField] private Sprite playImage;
|
|
|
|
[SerializeField] private Ease ease;
|
|
[SerializeField] private float animDuration;
|
|
|
|
private Vector2 _settingsButtonActivePosition;
|
|
private Vector2 _exitButtonActivePosition;
|
|
private List<ButtonNListener> _buttonsToHide;
|
|
private bool toShow = false;
|
|
|
|
private void Awake()
|
|
{
|
|
_buttonsToHide = new List<ButtonNListener>()
|
|
{
|
|
new ButtonNListener(settingsButton, ShowSettings, settingsButton.transform.position),
|
|
new ButtonNListener(exitButton, Exit, exitButton.transform.position)
|
|
};
|
|
|
|
settingsButton.gameObject.SetActive(false);
|
|
exitButton.gameObject.SetActive(false);
|
|
|
|
settingsButton.image.DOFade(0f, 0f);
|
|
exitButton.image.DOFade(0f, 0f);
|
|
|
|
settingsButton.transform.position = playPauseButton.transform.position;
|
|
exitButton.transform.position = playPauseButton.transform.position;
|
|
|
|
playPauseButton.onClick.AddListener(() =>
|
|
{
|
|
SwitchMenu(!toShow);
|
|
toShow = !toShow;
|
|
});
|
|
}
|
|
|
|
|
|
|
|
private void SwitchMenu(bool toShow)
|
|
{
|
|
if (toShow)
|
|
{
|
|
_buttonsToHide.ForEach(x =>
|
|
{
|
|
x.Button.onClick.AddListener(x.Action);
|
|
x.Button.image
|
|
.DOFade(1f, animDuration)
|
|
.SetEase(ease);
|
|
x.Button.transform
|
|
.DOMove(x.PosToMove, animDuration)
|
|
.SetEase(ease)
|
|
.OnComplete(() => Time.timeScale = 0f);
|
|
x.Button.gameObject.SetActive(true);
|
|
});
|
|
|
|
playPauseButton.image.sprite = playImage;
|
|
|
|
}
|
|
else
|
|
{
|
|
Time.timeScale = 1f;
|
|
_buttonsToHide.ForEach(x =>
|
|
{
|
|
x.Button.onClick.RemoveAllListeners();
|
|
x.Button.image.DOFade(0f, animDuration).SetEase(ease);
|
|
x.Button.transform
|
|
.DOMove(playPauseButton.transform.position, animDuration)
|
|
.SetEase(ease)
|
|
.OnComplete(() => x.Button.gameObject.SetActive(false));
|
|
});
|
|
|
|
playPauseButton.image.sprite = pauseImage;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void Exit()
|
|
{
|
|
Time.timeScale = 1f;
|
|
DOTween.CompleteAll();
|
|
SceneManager.LoadScene(0);
|
|
}
|
|
|
|
private void ShowSettings()
|
|
{
|
|
}
|
|
} |