Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / InteractiveTipBar.cs
@小李xl 小李xl on 4 Nov 2022 1 KB 备份版本
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...");
    }
}