UI.cs
cs
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class UI : MonoBehaviour
{
[Header("End screen")]
[SerializeField] private UI_FadeScreen fadeScreen;
[SerializeField] private GameObject endText;
[Space]
[SerializeField] private GameObject characterUI;
[SerializeField] private GameObject skillTreeUI;
[SerializeField] private GameObject carftUI;
[SerializeField] private GameObject optionsUI;
[SerializeField] private GameObject inGameUI;
public UI_SkillToolTip skillToolTip;
public UI_ItemToolTip itemToolTip;
public UI_StatToolTip statToolTip;
public UI_CraftWindow craftWindow;
private void Awake()
{
SwitchTo(skillTreeUI);// need this to assign events on skill tree before we assign events on skill scripts;
}
void Start()
{
//SwitchTo(null);
SwitchTo(inGameUI);
itemToolTip.gameObject.SetActive(false);
statToolTip.gameObject.SetActive(false);
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyUp(KeyCode.C))
SwitchWithKeyTo(characterUI);
if (Input.GetKeyUp(KeyCode.K))
SwitchWithKeyTo(skillTreeUI);
if (Input.GetKeyUp(KeyCode.B))
SwitchWithKeyTo(carftUI);
if(Input.GetKeyUp(KeyCode.O))
SwitchWithKeyTo(optionsUI);
}
public void SwitchTo(GameObject _menu)
{
for (int i = 0; i < transform.childCount; i++)
{
bool fadeScreen = transform.GetChild(i).GetComponent<UI_FadeScreen>() != null;
if(!fadeScreen)
transform.GetChild(i).gameObject.SetActive(false);
}
if (_menu != null)
_menu.SetActive(true);
}
public void SwitchWithKeyTo(GameObject _menu)
{
if (_menu != null && _menu.activeSelf)
{
_menu.SetActive(false);
CheckForInGameUI();
return;
}
SwitchTo(_menu);
}
private void CheckForInGameUI()
{
for (int i = 0; i < transform.childCount; i++)
{
if (transform.GetChild(i).gameObject.activeSelf)
return;
}
SwitchTo(inGameUI);
}
public void SwitchOnEndScreen()
{
fadeScreen.FadeOut();
StartCoroutine(EndScreenCorutione());
}
IEnumerator EndScreenCorutione()
{
yield return new WaitForSeconds(1);
endText.SetActive(true );
}
}
PlayerDeadState.cs
cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerDeadState : PlayerState
{
public PlayerDeadState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName)
{
}
public override void AnimationFinishTrigger()
{
base.AnimationFinishTrigger();
}
public override void Enter()
{
base.Enter();
GameObject.Find("Canvas").GetComponent<UI>().SwitchOnEndScreen();
}
public override void Exit()
{
base.Exit();
}
public override void Update()
{
base.Update();
player.SetZeroVelocity();
}
}
UI_MainMenu.cs
cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class UI_MainMenu : MonoBehaviour
{
[SerializeField] private string sceneName = "MainScene";
[SerializeField] private GameObject continueButton;
[SerializeField] UI_FadeScreen fadeScreen;
private void Start()
{
if(SaveManager.instance.HasSavedData() == false)
continueButton.SetActive(false);
}
public void ContinueGame()
{
//SceneManager.LoadScene(sceneName);
StartCoroutine(LoadSceneWithFadeEffect(1.5f));
}
public void NewGame()
{
SaveManager.instance.DeleteSaveData();
StartCoroutine(LoadSceneWithFadeEffect(1.5f));
//SceneManager.LoadScene(sceneName);
//SaveManager.instance.NewGame();
}
public void ExitGame()
{
Debug.Log("Exit game");
//Application.Quit();
}
IEnumerator LoadSceneWithFadeEffect(float _delay)
{
fadeScreen.FadeOut();
yield return new WaitForSeconds(_delay);
SceneManager.LoadScene(sceneName);
}
}
UI_FadeScreen.cs
cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UI_FadeScreen : MonoBehaviour
{
private Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
public void FadeOut() => anim.SetTrigger("fadeOut");
public void FadeIn() => anim.SetTrigger("fadeIn");
}