67 lines
2.4 KiB
C#
67 lines
2.4 KiB
C#
using System;
|
|
using Godot;
|
|
|
|
namespace GodotspaceShooter.Scripts;
|
|
public partial class Ui : Node2D
|
|
{
|
|
[Export] private RichTextLabel rtlAsteroids;
|
|
[Export] private RichTextLabel rtlLevel;
|
|
[Export] private RichTextLabel rtlLifes;
|
|
[Export] private RichTextLabel rtlNextLevel;
|
|
[Export] private RichTextLabel rtlPoints;
|
|
[Export] private VBoxContainer vBoxGameOver;
|
|
[Export] private Label lblGameOver;
|
|
[Export] private Button buttonRestart;
|
|
[Export] private Label lblReachedPoints;
|
|
[Export] private ProgressBar healthBar;
|
|
[Export] private VBoxContainer vBoxPause;
|
|
[Export] private Button buttonResume;
|
|
[Export] private Button buttonPauseRestart;
|
|
|
|
public static Ui Instance { get; private set; }
|
|
|
|
public override void _Ready() {
|
|
Instance = this;
|
|
if (GameManager.Instance is null)
|
|
GD.PrintErr("No GameManager found!");
|
|
else {
|
|
GameManager.Instance.RefreshUi += RefreshUi;
|
|
lblGameOver.Visible = GameManager.Instance.GameOver;
|
|
buttonRestart.Visible = GameManager.Instance.GameOver;
|
|
lblReachedPoints.Visible = GameManager.Instance.GameOver;
|
|
buttonRestart.Pressed += ButtonRestartOnPressed;
|
|
buttonResume.Pressed += ButtonResumeOnPressed;
|
|
buttonPauseRestart.Pressed += ButtonPauseRestartOnPressed;
|
|
RefreshUi(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
|
|
|
|
private void RefreshUi(object sender, EventArgs e) {
|
|
rtlLifes.Text = $"Lives: {GameManager.Instance.Lives}";
|
|
rtlAsteroids.Text = $"Asteroids: {GameManager.Instance.AsteroidNumber} / {GameManager.Instance.AsteroidMaxNumber}";
|
|
rtlPoints.Text = $"Points: {GameManager.Instance.Points}";
|
|
rtlNextLevel.Text = $"Next Level at: {GameManager.Instance.NextLevelPoints}";
|
|
rtlLevel.Text = $"Actual Level: {GameManager.Instance.Level}";
|
|
healthBar.MaxValue = GameManager.Instance.MaxLives;
|
|
healthBar.Value = GameManager.Instance.Lives;
|
|
|
|
if (GameManager.Instance.GameOver) {
|
|
lblReachedPoints.Text = $"You have reached level {GameManager.Instance.Level} and {GameManager.Instance.Points} points!";
|
|
vBoxGameOver.Visible = true;
|
|
}
|
|
|
|
// vBoxGameOver.Visible = GameManager.Instance.GameOver;
|
|
vBoxPause.Visible = GameManager.Instance.GamePaused;
|
|
}
|
|
|
|
private void ButtonRestartOnPressed() => GetTree().ReloadCurrentScene();
|
|
private void ButtonResumeOnPressed() => GameManager.Instance.GamePaused = false;
|
|
private void ButtonPauseRestartOnPressed() {
|
|
GameManager.Instance.GamePaused = false;
|
|
GetTree().ReloadCurrentScene();
|
|
}
|
|
|
|
public void ShowMessage(string message) => GD.Print(message);
|
|
}
|