diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs index bc04723..682a90e 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs @@ -100,21 +100,22 @@ { _refreshGridConnect = false; - var terrain = CurrTerrain; - if (terrain != null) + var terrainList = EditorPanel.TileSetSourceInfo.Terrain; + for (var i = 0; i < terrainList.Count; i++) { + var terrain = terrainList[i]; if (terrain.TerrainType == 0) //选中47格Terrain { - TerrainGrid3x3.ForEach(cell => RefreshConnectTerrainCell(terrain, cell)); + TerrainGrid3x3.ForEach(cell => RefreshConnectTerrainCell(i, terrain, cell)); if (EditorPanel.TileSetSourceIndex == 0 && CurrTerrainIndex == 0) //选中Main Source { - TerrainGridMiddle.ForEach(cell => RefreshConnectTerrainCell(terrain, cell)); - TerrainGridFloor.ForEach(cell => RefreshConnectTerrainCell(terrain, cell)); + TerrainGridMiddle.ForEach(cell => RefreshConnectTerrainCell(i, terrain, cell)); + TerrainGridFloor.ForEach(cell => RefreshConnectTerrainCell(i, terrain, cell)); } } else //选中13格Terrain { - TerrainGrid2x2.ForEach(cell => RefreshConnectTerrainCell(terrain, cell)); + TerrainGrid2x2.ForEach(cell => RefreshConnectTerrainCell(i, terrain, cell)); } } } @@ -167,7 +168,7 @@ } } - private void RefreshConnectTerrainCell(TileSetTerrainInfo terrain, UiCell cell) + private void RefreshConnectTerrainCell(int terrainIndex, TileSetTerrainInfo terrain, UiCell cell) { var data = terrain.GetTerrainCell(cell.Index, cell.Data); if (data != null) @@ -180,7 +181,7 @@ if (maskCell != null) { //绑定TerrainCell - maskCell.SetConnectTerrainCell(terrainCell); + maskCell.SetConnectTerrainCell(terrainCell, terrainIndex); } } } @@ -367,8 +368,36 @@ { var index = TerrainTabGrid.SelectIndex; //执行删除操作 + + //清除Mask + if (terrain.TerrainType == 0) //47格 + { + TerrainGrid3x3.ForEach(cell => + { + var terrainCell = (TerrainCell)cell; + terrainCell.ClearCell(); + if (terrainCell.ConnectMaskCell != null) + { + terrainCell.ConnectMaskCell.SetConnectTerrainCell(null, -1); + } + }); + } + else //13格 + { + TerrainGrid2x2.ForEach(cell => + { + var terrainCell = (TerrainCell)cell; + terrainCell.ClearCell(); + if (terrainCell.ConnectMaskCell != null) + { + terrainCell.ConnectMaskCell.SetConnectTerrainCell(null, -1); + } + }); + } + EditorPanel.TileSetSourceInfo.Terrain.Remove(terrain); TerrainTabGrid.RemoveByIndex(index); + if (index == TerrainTabGrid.Count) { TerrainTabGrid.SelectIndex = TerrainTabGrid.Count - 1; diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs index 099274d..63d4477 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs @@ -10,6 +10,11 @@ public TerrainCell ConnectTerrainCell { get; private set; } /// + /// 已经赋值并连接的Terrain所以 + /// + public int ConnectTerrainIndex { get; private set; } + + /// /// 鼠标是否悬停 /// public bool Hover { get; set; } @@ -26,7 +31,7 @@ public override void OnDisable() { - SetConnectTerrainCell(null); + SetConnectTerrainCell(null, -1); } public override void Process(float delta) @@ -37,7 +42,7 @@ /// /// 设置连接的Cell /// - public void SetConnectTerrainCell(TerrainCell terrainCell) + public void SetConnectTerrainCell(TerrainCell terrainCell, int terrainIndex) { if (terrainCell == null) { @@ -52,6 +57,8 @@ ConnectTerrainCell = terrainCell; terrainCell.ConnectMaskCell = this; } + + ConnectTerrainIndex = terrainIndex; } private void Draw() @@ -65,10 +72,11 @@ } if (ConnectTerrainCell != null) { + var color = CellNode.UiPanel.CurrTerrainIndex == ConnectTerrainIndex ? new Color(0, 1, 0) : new Color(1, 1, 1); //选中时绘制轮廓 CellNode.Instance.DrawRect( new Rect2(Vector2.Zero, CellNode.Instance.Size), - new Color(0, 1, 1), false, 2f / _textureRect.Scale.X + color, false, 2f / _textureRect.Scale.X ); } } diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs index 8fc6143..3ad6e7f 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs @@ -31,7 +31,7 @@ var cellPosition = Utils.GetMouseCellPosition(_panel.S_TileTexture.Instance); var index = cellPosition.X + cellPosition.Y * _panel.MaskGrid.GetColumns(); var tempCell = (MaskCell)_panel.MaskGrid.GetCell(index); - if (tempCell != null && tempCell.ConnectTerrainCell != null) + if (tempCell != null && tempCell.ConnectTerrainCell != null && tempCell.ConnectTerrainIndex == _panel.CurrTerrainIndex) { cell = tempCell; } diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainCell.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainCell.cs index e184418..888d565 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainCell.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainCell.cs @@ -66,7 +66,7 @@ ClearTerrainBitData(); if (ConnectMaskCell != null) { - ConnectMaskCell.SetConnectTerrainCell(null); + ConnectMaskCell.SetConnectTerrainCell(null, -1); } } } @@ -111,9 +111,9 @@ { if (ConnectMaskCell != null) { - ConnectMaskCell.SetConnectTerrainCell(null); + ConnectMaskCell.SetConnectTerrainCell(null, -1); } - maskCell.SetConnectTerrainCell(this); + maskCell.SetConnectTerrainCell(this, CellNode.UiPanel.CurrTerrainIndex); } }