HUD.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Godot;
  2. public partial class HUD : CanvasLayer
  3. {
  4. [Signal]
  5. public delegate void StartGameEventHandler();
  6. public void ShowMessage(string text)
  7. {
  8. var messageLabel = GetNode<Label>("MessageLabel");
  9. messageLabel.Text = text;
  10. messageLabel.Show();
  11. GetNode<Timer>("MessageTimer").Start();
  12. }
  13. public async void ShowGameOver()
  14. {
  15. ShowMessage("Game Over");
  16. var messageTimer = GetNode<Timer>("MessageTimer");
  17. await ToSignal(messageTimer, Timer.SignalName.Timeout);
  18. ShowMessage("Dodge the\nCreeps!");
  19. await ToSignal(GetTree().CreateTimer(1.0), SceneTreeTimer.SignalName.Timeout);
  20. GetNode<Button>("StartButton").Show();
  21. }
  22. public void UpdateScore(int score)
  23. {
  24. GetNode<Label>("ScoreLabel").Text = score.ToString();
  25. }
  26. public void OnStartButtonPressed()
  27. {
  28. GetNode<Button>("StartButton").Hide();
  29. EmitSignal(SignalName.StartGame);
  30. }
  31. public void OnMessageTimerTimeout()
  32. {
  33. GetNode<Label>("MessageLabel").Hide();
  34. }
  35. }