|
|
|
@ -5,15 +5,17 @@ namespace GodotspaceShooter.Scripts;
|
|
|
|
public partial class Ui : Node2D
|
|
|
|
public partial class Ui : Node2D
|
|
|
|
{
|
|
|
|
{
|
|
|
|
[Export] private RichTextLabel rtlAsteroids;
|
|
|
|
[Export] private RichTextLabel rtlAsteroids;
|
|
|
|
[Export] private RichTextLabel labelLevel;
|
|
|
|
[Export] private RichTextLabel rtlLevel;
|
|
|
|
[Export] private RichTextLabel labelLifes;
|
|
|
|
[Export] private RichTextLabel rtlLifes;
|
|
|
|
[Export] private RichTextLabel labelNextLevel;
|
|
|
|
[Export] private RichTextLabel rtlNextLevel;
|
|
|
|
[Export] private RichTextLabel labelPoints;
|
|
|
|
[Export] private RichTextLabel rtlPoints;
|
|
|
|
[Export] private Label labelGameOver;
|
|
|
|
[Export] private Label labelGameOver;
|
|
|
|
[Export] private Button restartButton;
|
|
|
|
[Export] private Button buttonRestart;
|
|
|
|
[Export] private RichTextLabel reachedPointsLabel;
|
|
|
|
[Export] private RichTextLabel rtlReachedPoints;
|
|
|
|
[Export] private ProgressBar healthBar;
|
|
|
|
[Export] private ProgressBar healthBar;
|
|
|
|
[Export] private VBoxContainer vBoxPause;
|
|
|
|
[Export] private VBoxContainer vBoxPause;
|
|
|
|
|
|
|
|
[Export] private Button buttonResume;
|
|
|
|
|
|
|
|
[Export] private Button buttonPauseRestart;
|
|
|
|
|
|
|
|
|
|
|
|
public static Ui Instance { get; private set; }
|
|
|
|
public static Ui Instance { get; private set; }
|
|
|
|
|
|
|
|
|
|
|
|
@ -23,34 +25,42 @@ public partial class Ui : Node2D
|
|
|
|
GD.PrintErr("No GameManager found!");
|
|
|
|
GD.PrintErr("No GameManager found!");
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
GameManager.Instance.RefreshUi += RefreshUi;
|
|
|
|
GameManager.Instance.RefreshUi += RefreshUi;
|
|
|
|
restartButton.Pressed += RestartButtonOnPressed;
|
|
|
|
|
|
|
|
labelGameOver.Visible = GameManager.Instance.GameOver;
|
|
|
|
labelGameOver.Visible = GameManager.Instance.GameOver;
|
|
|
|
restartButton.Visible = GameManager.Instance.GameOver;
|
|
|
|
buttonRestart.Visible = GameManager.Instance.GameOver;
|
|
|
|
reachedPointsLabel.Visible = GameManager.Instance.GameOver;
|
|
|
|
rtlReachedPoints.Visible = GameManager.Instance.GameOver;
|
|
|
|
|
|
|
|
buttonRestart.Pressed += ButtonRestartOnPressed;
|
|
|
|
|
|
|
|
buttonResume.Pressed += ButtonResumeOnPressed;
|
|
|
|
|
|
|
|
buttonPauseRestart.Pressed += ButtonPauseRestartOnPressed;
|
|
|
|
RefreshUi(this, EventArgs.Empty);
|
|
|
|
RefreshUi(this, EventArgs.Empty);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void RefreshUi(object sender, EventArgs e) {
|
|
|
|
private void RefreshUi(object sender, EventArgs e) {
|
|
|
|
labelLifes.Text = $"Lives: {GameManager.Instance.Lives}";
|
|
|
|
rtlLifes.Text = $"Lives: {GameManager.Instance.Lives}";
|
|
|
|
rtlAsteroids.Text = $"Asteroids: {GameManager.Instance.AsteroidNumber} / {GameManager.Instance.AsteroidMaxNumber}";
|
|
|
|
rtlAsteroids.Text = $"Asteroids: {GameManager.Instance.AsteroidNumber} / {GameManager.Instance.AsteroidMaxNumber}";
|
|
|
|
labelPoints.Text = $"Points: {GameManager.Instance.Points}";
|
|
|
|
rtlPoints.Text = $"Points: {GameManager.Instance.Points}";
|
|
|
|
labelNextLevel.Text = $"Next Level at: {GameManager.Instance.NextLevelPoints}";
|
|
|
|
rtlNextLevel.Text = $"Next Level at: {GameManager.Instance.NextLevelPoints}";
|
|
|
|
labelLevel.Text = $"Actual Level: {GameManager.Instance.Level}";
|
|
|
|
rtlLevel.Text = $"Actual Level: {GameManager.Instance.Level}";
|
|
|
|
healthBar.MaxValue = GameManager.Instance.MaxLives;
|
|
|
|
healthBar.MaxValue = GameManager.Instance.MaxLives;
|
|
|
|
healthBar.Value = GameManager.Instance.Lives;
|
|
|
|
healthBar.Value = GameManager.Instance.Lives;
|
|
|
|
|
|
|
|
|
|
|
|
if (GameManager.Instance.GameOver) {
|
|
|
|
if (GameManager.Instance.GameOver) {
|
|
|
|
reachedPointsLabel.Text = $"[center]You have reached level {GameManager.Instance.Level} and {GameManager.Instance.Points} points![/center]";
|
|
|
|
rtlReachedPoints.Text = $"[center]You have reached level {GameManager.Instance.Level} and {GameManager.Instance.Points} points![/center]";
|
|
|
|
labelGameOver.Visible = GameManager.Instance.GameOver;
|
|
|
|
labelGameOver.Visible = GameManager.Instance.GameOver;
|
|
|
|
restartButton.Visible = GameManager.Instance.GameOver;
|
|
|
|
buttonRestart.Visible = GameManager.Instance.GameOver;
|
|
|
|
reachedPointsLabel.Visible = GameManager.Instance.GameOver;
|
|
|
|
rtlReachedPoints.Visible = GameManager.Instance.GameOver;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
vBoxPause.Visible = GameManager.Instance.GamePaused;
|
|
|
|
vBoxPause.Visible = GameManager.Instance.GamePaused;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void RestartButtonOnPressed() => GetTree().ReloadCurrentScene();
|
|
|
|
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);
|
|
|
|
public void ShowMessage(string message) => GD.Print(message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|