Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / InteractiveTipBar.cs
@小李xl 小李xl on 4 Nov 2022 1 KB 备份版本
  1. using Godot;
  2.  
  3. /// <summary>
  4. /// 互动提示文本
  5. /// </summary>
  6. public class InteractiveTipBar : Node2D
  7. {
  8.  
  9. private ActivityObject Target;
  10. private Label Message;
  11. private Sprite Icon;
  12. private Sprite Bg;
  13.  
  14. private string currImage;
  15.  
  16. public override void _Ready()
  17. {
  18. Message = GetNode<Label>("Message");
  19. Icon = GetNode<Sprite>("Icon");
  20. Bg = GetNode<Sprite>("Bg");
  21. }
  22.  
  23. /// <summary>
  24. /// 隐藏互动提示ui
  25. /// </summary>
  26. public void HideBar()
  27. {
  28. Visible = false;
  29. }
  30.  
  31. /// <summary>
  32. /// 显示互动提示ui
  33. /// </summary>
  34. /// <param name="target">所在坐标</param>
  35. /// <param name="icon">显示图标</param>
  36. /// <param name="message">显示文本</param>
  37. public void ShowBar(ActivityObject target, string icon, string message)
  38. {
  39. Target = target;
  40. GlobalPosition = GameApplication.Instance.ViewToGlobalPosition(target.GlobalPosition);
  41. Message.Text = message;
  42. if (currImage != icon)
  43. {
  44. currImage = icon;
  45. Icon.Texture = ResourceManager.Load<Texture>(icon);
  46. }
  47. Visible = true;
  48. }
  49.  
  50. public override void _Process(float delta)
  51. {
  52. if (Visible)
  53. {
  54. var pos = GameApplication.Instance.ViewToGlobalPosition(Target.GlobalPosition);
  55. GlobalPosition = pos.Round();
  56.  
  57. }
  58. }
  59.  
  60. public override void _Draw()
  61. {
  62. DrawString(GameApplication.Instance.Font, new Vector2(0, 20), GlobalPosition.ToString(), Colors.Red);
  63. GD.Print("draw...");
  64. }
  65. }