Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / tileSetEditorCombination / right / TileSelected.cs
  1. using Godot;
  2.  
  3. namespace UI.TileSetEditorCombination;
  4.  
  5. public partial class TileSelected : VBoxContainer, IUiNodeScript
  6. {
  7. private TileSetEditorCombination.RightBg _rightBg;
  8. private UiGrid<TileSetEditorCombination.CellButton, ImportCombinationData> _grid;
  9. public void SetUiNode(IUiNode uiNode)
  10. {
  11. _rightBg = (TileSetEditorCombination.RightBg)uiNode;
  12.  
  13. _grid = new UiGrid<TileSetEditorCombination.CellButton, ImportCombinationData>(_rightBg.L_ScrollContainer.L_CellButton, typeof(TileCell));
  14. _grid.SetCellOffset(new Vector2I(5, 5));
  15. _grid.SetAutoColumns(true);
  16. _grid.SetHorizontalExpand(true);
  17. _rightBg.UiPanel.AddEventListener(EventEnum.OnImportCombination, OnImportCombination);
  18. _rightBg.UiPanel.AddEventListener(EventEnum.OnRemoveCombination, OnRemoveCombination);
  19. _rightBg.UiPanel.AddEventListener(EventEnum.OnUpdateCombination, OnUpdateCombination);
  20. }
  21.  
  22. /// <summary>
  23. /// 导入组合图块
  24. /// </summary>
  25. private void OnImportCombination(object obj)
  26. {
  27. if (obj is ImportCombinationData data)
  28. {
  29. _grid.Add(data);
  30. _grid.Sort();
  31. }
  32. }
  33. /// <summary>
  34. /// 移除组合图块
  35. /// </summary>
  36. private void OnRemoveCombination(object obj)
  37. {
  38. if (obj is ImportCombinationData data)
  39. {
  40. var uiCell = _grid.Find(c => c.Data.CombinationInfo.Id == data.CombinationInfo.Id);
  41. if (uiCell != null)
  42. {
  43. _grid.RemoveByIndex(uiCell.Index);
  44. }
  45. }
  46. }
  47.  
  48. /// <summary>
  49. /// 修改组合图块
  50. /// </summary>
  51. private void OnUpdateCombination(object obj)
  52. {
  53. if (obj is ImportCombinationData data)
  54. {
  55. var uiCell = _grid.Find(c => c.Data.CombinationInfo.Id == data.CombinationInfo.Id);
  56. if (uiCell != null)
  57. {
  58. uiCell.SetData(data);
  59. }
  60. }
  61. }
  62.  
  63. public void OnDestroy()
  64. {
  65. _grid.Destroy();
  66. }
  67.  
  68. /// <summary>
  69. /// 改变TileSet纹理
  70. /// </summary>
  71. public void OnChangeTileSetTexture()
  72. {
  73. //_grid.RemoveAll();
  74. //刷新预览图
  75. _grid.ForEach(cell =>
  76. {
  77. cell.Data.UpdatePreviewTexture(_rightBg.UiPanel.EditorPanel.TextureImage);
  78. });
  79. }
  80. }