66 lines
2.1 KiB
C#
66 lines
2.1 KiB
C#
using Code.DI;
|
|
using Code.Gameplay.Player;
|
|
using Code.Input;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
using DG.Tweening;
|
|
using Unity.VisualScripting;
|
|
|
|
namespace Code.UI
|
|
{
|
|
public class GameplayController : MonoBehaviour
|
|
{
|
|
[SerializeField] private Image deathScreen;
|
|
[SerializeField] private TMP_Text deathText;
|
|
[SerializeField] private Button exitButton;
|
|
[SerializeField] private PlayerHealth playerHealth;
|
|
[SerializeField] private AudioSource audioSource;
|
|
|
|
private IInputService _inputService;
|
|
|
|
private void Start()
|
|
{
|
|
_inputService = FindFirstObjectByType<DIContainer>().Resolve<IInputService>();
|
|
_inputService.EnableMap(ActionMapping.Gameplay);
|
|
|
|
FindFirstObjectByType<PlayerMovement>().Construct(_inputService);
|
|
|
|
exitButton.onClick.AddListener(OnExitButtonPressed);
|
|
playerHealth.OnDied += HandleDeath;
|
|
|
|
deathScreen.gameObject.SetActive(false);
|
|
}
|
|
|
|
private void HandleDeath()
|
|
{
|
|
var clip = Resources.Load<AudioClip>("Audio/SFX/DeathSFX");
|
|
audioSource.PlayOneShot(clip);
|
|
_inputService.DisableMap(ActionMapping.Gameplay);
|
|
deathScreen.gameObject.SetActive(true);
|
|
|
|
deathScreen.rectTransform.localScale = Vector3.zero;
|
|
deathScreen.rectTransform.DOScale(1f, 0.3f)
|
|
.SetEase(Ease.OutBack);
|
|
|
|
deathText.color = deathText.color.WithAlpha(0f);
|
|
deathText.DOFade(1f, 0.6f)
|
|
.OnComplete(() =>
|
|
{
|
|
deathText.DOFade(0.8f, 0.5f)
|
|
.SetLoops(-1, LoopType.Yoyo)
|
|
.SetEase(Ease.InOutSine);
|
|
});
|
|
}
|
|
|
|
private void OnExitButtonPressed()
|
|
{
|
|
DOTween.Kill(deathScreen.rectTransform);
|
|
DOTween.Kill(deathText);
|
|
|
|
exitButton.onClick.RemoveAllListeners();
|
|
SceneManager.LoadScene("MainMenu");
|
|
}
|
|
}
|
|
} |