diff --git a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json index bcc13b5..a38594e 100644 --- a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json +++ b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json @@ -36,10 +36,6 @@ 0, 32 ], - "507": [ - 224, - 0 - ], "146": [ 0, 48 @@ -68,10 +64,6 @@ 112, 0 ], - "510": [ - 240, - 0 - ], "506": [ 192, 32 @@ -91,6 +83,14 @@ "24": [ 48, 0 + ], + "50": [ + 64, + 64 + ], + "26": [ + 160, + 64 ] }, "TerrainType": 0 @@ -100,61 +100,57 @@ "F": {}, "M": {}, "T": { - "341": [ - 176, - 48 + "337": [ + 224, + 0 + ], + "340": [ + 240, + 0 ], "80": [ - 48, - 32 + 160, + 0 ], "272": [ - 16, + 64, + 0 + ], + "85": [ + 96, 32 ], - "336": [ - 32, - 32 - ], - "276": [ - 16, - 48 - ], - "81": [ - 0, - 128 - ] - }, - "TerrainType": 1 - }, - { - "Name": "Test3", - "F": {}, - "M": {}, - "T": { "341": [ 32, - 48 - ], - "272": [ - 16, - 64 + 80 ], "276": [ 16, 80 ], + "277": [ + 128, + 32 + ], "81": [ 48, - 48 + 80 ], - "340": [ - 208, - 32 + "17": [ + 48, + 16 ], - "337": [ - 176, - 32 + "21": [ + 32, + 16 + ], + "20": [ + 16, + 16 + ], + "336": [ + 96, + 0 ] }, "TerrainType": 1 diff --git a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs index 4cbf1d7..c331777 100644 --- a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs +++ b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs @@ -110,51 +110,57 @@ _tileSet.SetPhysicsLayerCollisionLayer(0, PhysicsLayer.Wall); _tileSet.SetPhysicsLayerCollisionMask(0, PhysicsLayer.None); + var terrainSetIndex = 0; + //Source资源 for (var sourceIndex = 0; sourceIndex < _tileSetInfo.Sources.Count; sourceIndex++) { var tileSetSourceInfo = _tileSetInfo.Sources[sourceIndex]; var terrainList = tileSetSourceInfo.Terrain; - //地形层 - _tileSet.AddTerrainSet(); + var tileSetAtlasSource = new TileSetAtlasSource(); + _tileSet.AddSource(tileSetAtlasSource); - for (var terrainIndex = 0; terrainIndex < terrainList.Count; terrainIndex++) + //纹理 + var image = tileSetSourceInfo.GetSourceImage(); + tileSetAtlasSource.Texture = ImageTexture.CreateFromImage(image); + + var size = image.GetSize() / GameConfig.TileCellSize; + //创建cell + for (var i = 0; i < size.X; i++) { - _tileSet.AddTerrain(sourceIndex); + for (var j = 0; j < size.Y; j++) + { + tileSetAtlasSource.CreateTile(new Vector2I(i, j)); + } + } + + + for (var i = 0; i < terrainList.Count; i++) + { + var terrainInfo = terrainList[i]; + //地形层 + _tileSet.AddTerrainSet(); + _tileSet.AddTerrain(terrainSetIndex); + //_tileSet.SetTerrainName(terrainSetIndex, 0, terrainInfo.Name); - var terrainInfo = terrainList[terrainIndex]; if (terrainInfo.TerrainType == 0) //3x3地形 { - _tileSet.SetTerrainSetMode(sourceIndex, TileSet.TerrainMode.CornersAndSides); + _tileSet.SetTerrainSetMode(terrainSetIndex, 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++) - { - for (var j = 0; j < size.Y; j++) - { - tileSetAtlasSource.CreateTile(new Vector2I(i, j)); - } + _tileSet.SetTerrainSetMode(terrainSetIndex, TileSet.TerrainMode.Corners); } //初始化地形 - tileSetAtlasSource.InitTerrain(terrainInfo, sourceIndex, terrainIndex); - if (sourceIndex == 0) + tileSetAtlasSource.InitTerrain(terrainInfo, terrainSetIndex, 0); + if (sourceIndex == 0 && i == 0) { InitMainSourceData(terrainInfo, tileSetAtlasSource); } + + terrainSetIndex++; } } } diff --git a/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs b/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs index 6b5ed6c..7ec33f1 100644 --- a/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs +++ b/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs @@ -16,7 +16,7 @@ var tileSetSplit = _tileSetConfig["TileSet2"]; var tileSet = tileSetSplit.GetTileSet(); - ResourceSaver.Save(tileSet, "test_tileset.tres"); + //ResourceSaver.Save(tileSet, "test_tileset.tres"); _tileMap.TileSet = tileSet; @@ -33,6 +33,20 @@ new Vector2I(12, 11), new Vector2I(13, 10), new Vector2I(13, 11), + }, 2, 0, false); + + _tileMap.SetCellsTerrainConnect(0, new Array() + { + new Vector2I(10 + 10, 10), + new Vector2I(10 + 10, 11), + new Vector2I(10 + 10, 12), + new Vector2I(11 + 10, 10), + new Vector2I(11 + 10, 11), + new Vector2I(11 + 10, 12), + new Vector2I(12 + 10, 10), + new Vector2I(12 + 10, 11), + new Vector2I(13 + 10, 10), + new Vector2I(13 + 10, 11), }, 1, 0, false); }