98 lines
2.9 KiB
C#
98 lines
2.9 KiB
C#
using System;
|
|
using DungeonSelection;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
public class EndGameController : MonoBehaviour
|
|
{
|
|
public static event Action LeaveDungeonClicked;
|
|
public static event Action<string, int> SaveScoreClicked;
|
|
|
|
private const string WIN_MESSAGE = "You Won";
|
|
private const string DIE_MESSAGE = "You Died";
|
|
[SerializeField] private Sprite diamondSprite;
|
|
[SerializeField] private Sprite healthSprite;
|
|
private Label _title;
|
|
private Label _message;
|
|
private Label _diamondPoints;
|
|
private Label _pointsFromHealth;
|
|
private Label _scoreSum;
|
|
private VisualElement _diamondImageBox;
|
|
private VisualElement _healthImageBox;
|
|
private TextField _nameField;
|
|
private Button _save;
|
|
private Button _close;
|
|
|
|
private int _score;
|
|
|
|
private void OnEnable()
|
|
{
|
|
VisualElement root = GetComponent<UIDocument>().rootVisualElement;
|
|
|
|
_save = root.Q<Button>("Save");
|
|
_save.clicked += HandleSaveClicked;
|
|
_close = root.Q<Button>("Close");
|
|
_close.clicked += HandleCloseClicked;
|
|
_diamondPoints = root.Q<Label>("PointsFromDiamond");
|
|
_pointsFromHealth = root.Q<Label>("PointsFromHealth");
|
|
_scoreSum = root.Q<Label>("ScoreSum");
|
|
_diamondImageBox = root.Q<VisualElement>("DiamondImageBox");
|
|
_healthImageBox = root.Q<VisualElement>("HealthImageBox");
|
|
_title = root.Q<Label>("Title");
|
|
_message = root.Q<Label>("Message");
|
|
_nameField = root.Q<TextField>("NameField");
|
|
_nameField.RegisterCallback<ChangeEvent<string>>(evt => { nameEdited(evt.newValue); });
|
|
|
|
Image diamondImage = new Image();
|
|
diamondImage.image = diamondSprite.texture;
|
|
diamondImage.scaleMode = ScaleMode.ScaleToFit;
|
|
_diamondImageBox.Add(diamondImage);
|
|
|
|
Image healthImage = new Image();
|
|
healthImage.image = healthSprite.texture;
|
|
healthImage.scaleMode = ScaleMode.ScaleToFit;
|
|
_healthImageBox.Add(healthImage);
|
|
}
|
|
|
|
public void PopulateEndOfGamePopUp(EndOfGameEventArgs args)
|
|
{
|
|
if (args.Died)
|
|
{
|
|
_title.text = DIE_MESSAGE;
|
|
}
|
|
else
|
|
{
|
|
_title.text = WIN_MESSAGE;
|
|
}
|
|
|
|
_message.text = args.Message;
|
|
_diamondPoints.text = $"{args.Diamonds} X {args.DiamondsMultiplier}";
|
|
_pointsFromHealth.text = args.PointsFromHealth.ToString();
|
|
_score = args.FinalScore;
|
|
_scoreSum.text = _score.ToString();
|
|
}
|
|
|
|
private void HandleCloseClicked()
|
|
{
|
|
LeaveDungeonClicked?.Invoke();
|
|
}
|
|
|
|
private void HandleSaveClicked()
|
|
{
|
|
SaveScoreClicked?.Invoke(_nameField.value, _score);
|
|
LeaveDungeonClicked?.Invoke();
|
|
}
|
|
|
|
private void nameEdited(string text)
|
|
{
|
|
if (text == String.Empty)
|
|
{
|
|
_save.SetEnabled(false);
|
|
}
|
|
else
|
|
{
|
|
_save.SetEnabled(true);
|
|
}
|
|
}
|
|
}
|