55 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
} |