Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / encyclopedia / EncyclopediaPanel.cs
@小李xl 小李xl on 13 Mar 2024 2 KB 图鉴基本功能制作完成
using System.Linq;
using Config;
using Godot;

namespace UI.Encyclopedia;

public partial class EncyclopediaPanel : Encyclopedia
{
    //tab网格
    private UiGrid<TabButton, TabData> _tab;
    //item网格
    private UiGrid<ObjectButton, ExcelConfig.ActivityBase> _grid;
    //private long _id;

    public override void OnCreateUi()
    {
        S_CloseButton.Instance.Pressed += OnCloseClick;
        
        _tab = CreateUiGrid<TabButton, TabData, TabCell>(S_TabButton);
        _tab.SetColumns(10);
        _tab.SetCellOffset(new Vector2I(0, 0));
        _tab.Add(new TabData(ResourcePath.resource_sprite_ui_encyclopedia_TabIcon1_png, ActivityType.Weapon));
        _tab.Add(new TabData(ResourcePath.resource_sprite_ui_encyclopedia_TabIcon1_png, ActivityType.Prop));
        _tab.Add(new TabData(ResourcePath.resource_sprite_ui_encyclopedia_TabIcon1_png, ActivityType.Enemy));
        
        _grid = CreateUiGrid<ObjectButton, ExcelConfig.ActivityBase, ItemCell>(S_ObjectButton);
        _grid.SetHorizontalExpand(true);
        _grid.SetAutoColumns(true);
        _grid.SetCellOffset(new Vector2I(10, 10));

        _tab.SelectIndex = 0;
    }

    public override void OnShowUi()
    {
        GameCamera.Main.LockCamera();
    }
    
    public override void OnHideUi()
    {
        GameCamera.Main.UnLockCamera();
    }

    public override void OnDestroyUi()
    {
        
    }
    
    public override void Process(float delta)
    {
        if (Input.IsActionJustPressed("ui_cancel"))
        {
            OnCloseClick();
        }
    }
    
    /// <summary>
    /// 设置选中的tab
    /// </summary>
    public void SelectTab(ActivityType type)
    {
        // StopCoroutine(_id);
        // _id = StartCoroutine(
        //     _grid.SetDataListCoroutine(
        //         ExcelConfig.ActivityBase_List.Where(data => data.Type == type).ToArray()
        //     )
        // );
        _grid.SetDataList(
            ExcelConfig.ActivityBase_List.Where(data => data.Type == type).ToArray()
        );
        SelectItem(null);
    }

    /// <summary>
    /// 设置选中的物体
    /// </summary>
    public void SelectItem(ExcelConfig.ActivityBase config)
    {
        if (config != null)
        {
            S_ItemInfoBg.Instance.Visible = true;
            S_ItemName.Instance.Text = config.Name;
            S_ItemTexture.Instance.Texture = ResourceManager.LoadTexture2D(config.Icon);
            S_ItemDes.Instance.Text = config.Intro;
            //S_ItemDes.Instance.Text = config.Details;
        }
        else
        {
            S_ItemInfoBg.Instance.Visible = false;
            S_ItemName.Instance.Text = null;
            S_ItemTexture.Instance.Texture = null;
            S_ItemDes.Instance.Text = null;
        }
    }

    private void OnCloseClick()
    {
        if (PrevUi != null)
        {
            OpenPrevUi();
        }
        else
        {
            Destroy();
        }
    }

}