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(); } } }