Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorMapTile / TerrainTileTab.cs
@小李xl 小李xl on 19 Jan 2024 1 KB 绘制自定义地形, 开发中
  1. using Godot;
  2.  
  3. namespace UI.MapEditorMapTile;
  4.  
  5. /// <summary>
  6. /// 地形笔刷页签
  7. /// </summary>
  8. public partial class TerrainTileTab : Control, IUiNodeScript
  9. {
  10. private MapEditorMapTile.Tab2 _uiNode;
  11.  
  12. private UiGrid<MapEditorMapTile.TerrainItem, TerrainData> _uiGrid;
  13. public void SetUiNode(IUiNode uiNode)
  14. {
  15. _uiNode = (MapEditorMapTile.Tab2)uiNode;
  16. _uiGrid = _uiNode.UiPanel.CreateUiGrid<MapEditorMapTile.TerrainItem, TerrainData, TerrainCell>(_uiNode.L_ScrollContainer.L_TerrainItem);
  17. _uiGrid.SetColumns(1);
  18. _uiGrid.SetCellOffset(new Vector2I(0, 8));
  19. _uiGrid.SetHorizontalExpand(true);
  20. }
  21.  
  22. public void OnDestroy()
  23. {
  24. }
  25.  
  26. public void RefreshTerrain(TileSetSourceInfo sourceInfo)
  27. {
  28. _uiGrid.RemoveAll();
  29.  
  30. var startSetIndex = 0;
  31. var panel = _uiNode.UiPanel;
  32. for (var i = 0; i < panel.SourceIndex; i++)
  33. {
  34. var source = panel.TileSetSplit.TileSetInfo.Sources[i];
  35. startSetIndex += source.Terrain.Count;
  36. }
  37. var start = panel.SourceIndex == 0 ? 1 : 0; //跳过 Main Source 中的 Main Terrain
  38. for (var i = start; i < sourceInfo.Terrain.Count; i++)
  39. {
  40. _uiGrid.Add(new TerrainData(i, sourceInfo.Terrain[i], startSetIndex + i));
  41. }
  42. }
  43. }