diff --git a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json index 63d531e..5072e0c 100644 --- a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json +++ b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json @@ -307,73 +307,57 @@ "F": {}, "M": {}, "T": { - "17": [ - 176, - 48 - ], "80": [ 176, 0 ], - "20": [ - 128, - 48 - ], "272": [ 128, 0 ], - "144": [ - 0, - 0 - ], - "176": [ - 16, - 0 - ], - "184": [ - 32, - 0 - ], - "152": [ - 48, - 0 - ], - "341": [ - 144, - 32 - ], "336": [ 160, 0 ], + "21": [ + 144, + 48 + ], + "20": [ + 128, + 48 + ], + "17": [ + 176, + 48 + ], "81": [ 176, 32 ], - "273": [ - 144, - 48 - ], "276": [ 128, 16 ], - "340": [ - 80, - 16 + "341": [ + 144, + 32 ], "337": [ 96, 16 ], + "85": [ + 96, + 32 + ], "277": [ 80, 32 ], - "85": [ - 96, - 32 + "340": [ + 80, + 16 ] }, "TerrainType": 1 diff --git a/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn b/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn index 2619f48..a9fc9a8 100644 --- a/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn +++ b/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn @@ -115,7 +115,7 @@ [sub_resource type="TileSet" id="TileSet_ii6g3"] terrain_set_0/mode = 1 terrain_set_0/terrain_0/name = "Terrain 0" -terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +terrain_set_0/terrain_0/color = Color(0.501961, 0.345098, 0.25098, 1) sources/0 = SubResource("TileSetAtlasSource_23gwl") [node name="TestTerrain2x2" type="Node2D"] diff --git a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs index 7ae9209..394b86c 100644 --- a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs +++ b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs @@ -109,21 +109,31 @@ _tileSet.AddPhysicsLayer(); _tileSet.SetPhysicsLayerCollisionLayer(0, PhysicsLayer.Wall); _tileSet.SetPhysicsLayerCollisionMask(0, PhysicsLayer.None); - Debug.Log("GetPhysicsLayersCount: " + _tileSet.GetPhysicsLayersCount()); - //地形层 0 - _tileSet.AddTerrainSet(); - _tileSet.SetTerrainSetMode(0, TileSet.TerrainMode.CornersAndSides); - _tileSet.AddTerrain(0); - + //Source资源 - foreach (var tileSetSourceInfo in _tileSetInfo.Sources) + for (var sourceIndex = 0; sourceIndex < _tileSetInfo.Sources.Count; sourceIndex++) { + var tileSetSourceInfo = _tileSetInfo.Sources[sourceIndex]; + var terrainInfo = tileSetSourceInfo.Terrain; + + //地形层 + _tileSet.AddTerrainSet(); + _tileSet.AddTerrain(sourceIndex); + if (terrainInfo.TerrainType == 0) //3x3地形 + { + _tileSet.SetTerrainSetMode(sourceIndex, TileSet.TerrainMode.CornersAndSides); + } + else //2x2地形 + { + _tileSet.SetTerrainSetMode(sourceIndex, TileSet.TerrainMode.Corners); + } + var tileSetAtlasSource = new TileSetAtlasSource(); _tileSet.AddSource(tileSetAtlasSource); //纹理 var image = tileSetSourceInfo.GetSourceImage(); tileSetAtlasSource.Texture = ImageTexture.CreateFromImage(image); - + var size = image.GetSize() / GameConfig.TileCellSize; //创建cell for (var i = 0; i < size.X; i++) @@ -134,106 +144,113 @@ } } - var terrainInfo = tileSetSourceInfo.Terrain; //初始化地形 - tileSetAtlasSource.InitTerrain(terrainInfo, 0, 0); - //ySort - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), 23); - - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), 23); - - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), 23); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), 23); - - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), 7); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), 7); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), 7); - SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), 7); - - //碰撞器 - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 0), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 0), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 0), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 0), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 0), true); - - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 1), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 1), false); - - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 2), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 2), false); - - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), true); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 3), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 3), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 3), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), false); - - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 4), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 4), false); - - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), false); - SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), false); + tileSetAtlasSource.InitTerrain(terrainInfo, sourceIndex, 0); + if (sourceIndex == 0) + { + InitMainSourceData(terrainInfo, tileSetAtlasSource); + } } } return _tileSet; } + private static void InitMainSourceData(TileSetTerrainInfo terrainInfo, TileSetAtlasSource tileSetAtlasSource) + { + //ySort + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), 23); + + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), 23); + + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), 23); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), 23); + + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), 7); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), 7); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), 7); + SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), 7); + + //碰撞器 + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 0), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 0), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 0), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 0), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 0), true); + + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 1), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 1), false); + + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 2), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 2), false); + + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), true); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 3), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 3), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 3), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), false); + + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 4), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 4), false); + + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), false); + SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), false); + } + /// /// 设置地图块的 Y 排序原点。 /// diff --git a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs index aac6b37..96c8964 100644 --- a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs +++ b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs @@ -197,7 +197,7 @@ case Center | RightTop | LeftBottom | RightBottom: return 9; //第三排 case Center | RightTop: return 10; - case Center | LeftTop | RightBottom: return 11; + case Center | LeftTop | RightTop: return 11; case Center | LeftTop: return 12; } } @@ -301,7 +301,7 @@ case 9: return Center | RightTop | LeftBottom | RightBottom; //第三排 case 10: return Center | RightTop; - case 11: return Center | LeftTop | RightBottom; + case 11: return Center | LeftTop | RightTop; case 12: return Center | LeftTop; } } diff --git a/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs b/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs index 073464a..939dd8e 100644 --- a/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs +++ b/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs @@ -90,37 +90,59 @@ tileData.Terrain = terrain; var bit = keyValuePair.Key; - if ((bit & LeftTop) != 0) + if (terrainInfo.TerrainType == 0) //3x3地形 { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopLeftCorner, 0); + if ((bit & LeftTop) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopLeftCorner, 0); + } + if ((bit & Top) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopSide, 0); + } + if ((bit & RightTop) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopRightCorner, 0); + } + if ((bit & Left) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.LeftSide, 0); + } + if ((bit & Right) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.RightSide, 0); + } + if ((bit & LeftBottom) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomLeftCorner, 0); + } + if ((bit & Bottom) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomSide, 0); + } + if ((bit & RightBottom) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomRightCorner, 0); + } } - if ((bit & Top) != 0) + else //2x2地形 { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopSide, 0); - } - if ((bit & RightTop) != 0) - { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopRightCorner, 0); - } - if ((bit & Left) != 0) - { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.LeftSide, 0); - } - if ((bit & Right) != 0) - { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.RightSide, 0); - } - if ((bit & LeftBottom) != 0) - { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomLeftCorner, 0); - } - if ((bit & Bottom) != 0) - { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomSide, 0); - } - if ((bit & RightBottom) != 0) - { - tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomRightCorner, 0); + if ((bit & LeftTop) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopLeftCorner, 0); + } + if ((bit & RightTop) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopRightCorner, 0); + } + if ((bit & LeftBottom) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomLeftCorner, 0); + } + if ((bit & RightBottom) != 0) + { + tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomRightCorner, 0); + } } } } diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs index 4f79c37..c84e4c8 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs @@ -119,13 +119,13 @@ { rootSize = UiNode.L_TerrainRoot.Instance.Size; } - else if (UiNode.L_TerrainTypeButton.Instance.Selected == 1) + else if (UiNode.L_TerrainTypeButton.Instance.Selected == 0) { - rootSize = UiNode.L_TerrainRoot.L_TerrainTexture4.Instance.Size; + rootSize = UiNode.L_TerrainRoot.L_TerrainTexture1.Instance.Size; } else { - rootSize = UiNode.L_TerrainRoot.L_TerrainTexture1.Instance.Size; + rootSize = UiNode.L_TerrainRoot.L_TerrainTexture4.Instance.Size; } Utils.DoFocusNode(ContainerRoot, Size, rootSize); RefreshGridTrans(); @@ -172,33 +172,48 @@ private void DoClearCell() { - UiNode.UiPanel.TerrainGrid3x3.ForEach(cell => + if (UiNode.UiPanel.EditorPanel.TileSetSourceIndex == 0) { - var terrainCell = (TerrainCell)cell; - terrainCell.ClearTerrainBitData(); - terrainCell.ClearCell(); - }); - UiNode.UiPanel.TerrainGridMiddle.ForEach(cell => + UiNode.UiPanel.TerrainGrid3x3.ForEach(cell => + { + var terrainCell = (TerrainCell)cell; + terrainCell.ClearCell(); + }); + UiNode.UiPanel.TerrainGridMiddle.ForEach(cell => + { + var terrainCell = (TerrainCell)cell; + terrainCell.ClearCell(); + }); + UiNode.UiPanel.TerrainGridFloor.ForEach(cell => + { + var terrainCell = (TerrainCell)cell; + terrainCell.ClearCell(); + }); + } + else if (UiNode.L_TerrainTypeButton.Instance.Selected == 0) { - var terrainCell = (TerrainCell)cell; - terrainCell.ClearTerrainBitData(); - terrainCell.ClearCell(); - }); - UiNode.UiPanel.TerrainGridFloor.ForEach(cell => + UiNode.UiPanel.TerrainGrid3x3.ForEach(cell => + { + var terrainCell = (TerrainCell)cell; + terrainCell.ClearCell(); + }); + } + else { - var terrainCell = (TerrainCell)cell; - terrainCell.ClearTerrainBitData(); - terrainCell.ClearCell(); - }); - UiNode.UiPanel.TerrainGrid2x2.ForEach(cell => - { - var terrainCell = (TerrainCell)cell; - terrainCell.ClearTerrainBitData(); - terrainCell.ClearCell(); - }); + UiNode.UiPanel.TerrainGrid2x2.ForEach(cell => + { + var terrainCell = (TerrainCell)cell; + terrainCell.ClearCell(); + }); + } + UiNode.UiPanel.MaskGrid.ForEach(cell => { ((MaskCell)cell).SetConnectTerrainCell(null); }); + + //清除Terrain中的数据 + var terrainInfo = UiNode.UiPanel.EditorPanel.TileSetSourceInfo.Terrain; + terrainInfo.T.Clear(); } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs b/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs index 2f87a29..6b5ed6c 100644 --- a/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs +++ b/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs @@ -14,18 +14,26 @@ InitTileSetConfig(); _tileMap = GetNode("TileMap"); - var tileSetSplit = _tileSetConfig.First().Value; + var tileSetSplit = _tileSetConfig["TileSet2"]; var tileSet = tileSetSplit.GetTileSet(); + ResourceSaver.Save(tileSet, "test_tileset.tres"); + _tileMap.TileSet = tileSet; - _tileMap.SetCell(0, new Vector2I(5, 5), 0, new Vector2I(0, 0)); + _tileMap.SetCell(0, new Vector2I(5, 5), 1, new Vector2I(0, 0)); _tileMap.SetCellsTerrainConnect(0, new Array() { new Vector2I(10, 10), new Vector2I(10, 11), new Vector2I(10, 12), + new Vector2I(11, 10), + new Vector2I(11, 11), new Vector2I(11, 12), - }, 0, 0, false); + new Vector2I(12, 10), + new Vector2I(12, 11), + new Vector2I(13, 10), + new Vector2I(13, 11), + }, 1, 0, false); } //初始化TileSet配置