Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / activity / CheckInteractiveResult.cs

using Godot;

/// <summary>
/// 检测互动返回的数据集
/// </summary>
public class CheckInteractiveResult
{
    public enum InteractiveType
    {
        /// <summary>
        /// 拾起物体
        /// </summary>
        PickUp,
        /// <summary>
        /// 拾起弹药
        /// </summary>
        Bullet,
        /// <summary>
        /// 替换
        /// </summary>
        Replace,
        /// <summary>
        /// 打开宝箱
        /// </summary>
        OpenTreasureBox,
        /// <summary>
        /// 其他互动类型
        /// </summary>
        Other,
    }
    
    /// <summary>
    /// 互动物体
    /// </summary>
    public IInteractive Target;
    /// <summary>
    /// 是否可以互动
    /// </summary>
    public bool CanInteractive = false;
    /// <summary>
    /// 互动提示类型
    /// </summary>
    public InteractiveType Type = InteractiveType.PickUp;

    public CheckInteractiveResult(IInteractive target)
    {
        Target = target;
    }
    
    public CheckInteractiveResult(IInteractive target, bool canInteractive)
    {
        Target = target;
        CanInteractive = canInteractive;
    }
    
    public CheckInteractiveResult(IInteractive target, bool canInteractive, InteractiveType type)
    {
        Target = target;
        CanInteractive = canInteractive;
        Type = type;
    }

    /// <summary>
    /// 互动提示显示的图标
    /// </summary>
    public Texture2D GetIcon()
    {
        if (!_init)
        {
            Init();
        }
        switch (Type)
        {
            case InteractiveType.PickUp:
                return _pickUpIcon;
            case InteractiveType.Bullet:
                return _bulletIcon;
            case InteractiveType.Replace:
                return _replaceIcon;
        }

        return null;
    }
    
    private static Texture2D _pickUpIcon;
    private static Texture2D _bulletIcon;
    private static Texture2D _replaceIcon;
    private static bool _init = false;
    private static void Init()
    {
        _init = true;
        _pickUpIcon = ResourceManager.Load<Texture2D>(ResourcePath.resource_sprite_ui_roomUI_icon_pickup_png);
        _bulletIcon = ResourceManager.Load<Texture2D>(ResourcePath.resource_sprite_ui_roomUI_icon_bullet_png);
        _replaceIcon = ResourceManager.Load<Texture2D>(ResourcePath.resource_sprite_ui_roomUI_icon_replace_png);
    }
}