using Godot; namespace UI.TileSetEditorCombination; public partial class TileSelected : VBoxContainer, IUiNodeScript { private TileSetEditorCombination.RightBg _rightBg; private UiGrid<TileSetEditorCombination.CellButton, ImportCombinationData> _grid; public void SetUiNode(IUiNode uiNode) { _rightBg = (TileSetEditorCombination.RightBg)uiNode; _grid = new UiGrid<TileSetEditorCombination.CellButton, ImportCombinationData>(_rightBg.L_ScrollContainer.L_CellButton, typeof(TileCell)); _grid.SetCellOffset(new Vector2I(5, 5)); _grid.SetAutoColumns(true); _grid.SetHorizontalExpand(true); _rightBg.UiPanel.AddEventListener(EventEnum.OnImportCombination, OnImportCombination); _rightBg.UiPanel.AddEventListener(EventEnum.OnRemoveCombination, OnRemoveCombination); _rightBg.UiPanel.AddEventListener(EventEnum.OnUpdateCombination, OnUpdateCombination); } /// <summary> /// 导入组合图块 /// </summary> private void OnImportCombination(object obj) { if (obj is ImportCombinationData data) { _grid.Add(data); _grid.Sort(); } } /// <summary> /// 移除组合图块 /// </summary> private void OnRemoveCombination(object obj) { if (obj is ImportCombinationData data) { var uiCell = _grid.Find(c => c.Data.CombinationInfo.Id == data.CombinationInfo.Id); if (uiCell != null) { _grid.RemoveByIndex(uiCell.Index); } } } /// <summary> /// 修改组合图块 /// </summary> private void OnUpdateCombination(object obj) { if (obj is ImportCombinationData data) { var uiCell = _grid.Find(c => c.Data.CombinationInfo.Id == data.CombinationInfo.Id); if (uiCell != null) { uiCell.SetData(data); } } } public void OnDestroy() { _grid.Destroy(); } /// <summary> /// 改变TileSet纹理 /// </summary> public void OnChangeTileSetTexture() { //_grid.RemoveAll(); //刷新预览图 _grid.ForEach(cell => { cell.Data.UpdatePreviewTexture(_rightBg.UiPanel.EditorPanel.TextureImage); }); } }