- using Godot;
-
- /// <summary>
- /// 互动提示文本
- /// </summary>
- public class InteractiveTipBar : Node2D
- {
-
- private ActivityObject Target;
-
- private Label Message;
- private Sprite Icon;
- private Sprite Bg;
-
- private string currImage;
-
- public override void _Ready()
- {
- Message = GetNode<Label>("Message");
- Icon = GetNode<Sprite>("Icon");
- Bg = GetNode<Sprite>("Bg");
- }
-
- /// <summary>
- /// 隐藏互动提示ui
- /// </summary>
- public void HideBar()
- {
- Visible = false;
- }
-
- /// <summary>
- /// 显示互动提示ui
- /// </summary>
- /// <param name="target">所在坐标</param>
- /// <param name="icon">显示图标</param>
- /// <param name="message">显示文本</param>
- public void ShowBar(ActivityObject target, string icon, string message)
- {
- Target = target;
- GlobalPosition = GameApplication.Instance.ViewToGlobalPosition(target.GlobalPosition);
- Message.Text = message;
- if (currImage != icon)
- {
- currImage = icon;
- Icon.Texture = ResourceManager.Load<Texture>(icon);
- }
- Visible = true;
- }
-
- public override void _Process(float delta)
- {
- if (Visible)
- {
- var pos = GameApplication.Instance.ViewToGlobalPosition(Target.GlobalPosition);
- GlobalPosition = pos.Round();
-
- }
- }
-
- public override void _Draw()
- {
- DrawString(GameApplication.Instance.Font, new Vector2(0, 20), GlobalPosition.ToString(), Colors.Red);
- GD.Print("draw...");
- }
- }