using System; using Player; using UnityEngine; using UnityEngine.UIElements; namespace State.Game { public class MainStateMachine : Machine { public GameObject MainMenuPrefab => mainMenuPrefab; public GameObject PlayerPrefab => playerPrefab; public GameObject FruitsPrefab => fruitsPrefab; public Movement PlayerMovement { get; private set; } public AudioClip DeathSound => deathSound; [SerializeField] private GameObject mainMenuPrefab; [SerializeField] private GameObject playerPrefab; [SerializeField] private GameObject fruitsPrefab; [SerializeField] private GameObject deathScreenPrefab; [SerializeField] private AudioClip deathSound; private GameObject _playerInstance; private GameObject _fruitsInstance; private GameObject _deathScreenInstance; private void Awake() { _deathScreenInstance = Instantiate(deathScreenPrefab); ShowDeathScreen(false); } public void Respawn() { if (_fruitsInstance) { Destroy(_fruitsInstance); } if (_playerInstance) { Destroy(_playerInstance); } var respawn = GameObject.FindGameObjectWithTag("Respawn").transform; _fruitsInstance = Instantiate(fruitsPrefab); _playerInstance = Instantiate(playerPrefab, respawn.position, Quaternion.identity); PlayerMovement = _playerInstance.GetComponent(); } public void ShowDeathScreen(bool show) { _deathScreenInstance.GetComponent().rootVisualElement.Q().visible = show; } } }