SpringJam2026/Assets/Scripts/State/Game/MainStateMachine.cs

55 lines
1.7 KiB
C#

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<Movement>();
}
public void ShowDeathScreen(bool show)
{
_deathScreenInstance.GetComponent<UIDocument>().rootVisualElement.Q<VisualElement>().visible = show;
}
}
}