diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset index 0ad9d8e3..2a2fde0a 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset +++ b/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset @@ -101,8 +101,8 @@ MonoBehaviour: - {x: 2, y: 2} fightEenemyPool: weak enemyList: - - Gravitus - - RatWarrior + - LivingArmor + - FailedSample extraEnemyList: [] mapIndex: 100001 extraMapIndex: @@ -119,21 +119,21 @@ MonoBehaviour: nextLevelNodes: [] fightEenemyPool: weak enemyList: + - Gravitus - RatWarrior - - Pharmacist extraEnemyList: [] mapIndex: 100001 extraMapIndex: isExtra: 0 - levelDataList: - - roomType: 11 - roomSprite: {fileID: 21300000, guid: 5edbcfc45fbb4b2428e4f2782201afad, type: 3} + - roomType: 4 + roomSprite: {fileID: 21300000, guid: e2a576b37ecc9ee4a92a1595d55eeb41, type: 3} isUse: 1 passBy: 0 nodePos: {x: -3.709052, y: -1.4781291, z: 10} line: 2 column: 0 - roomDestinationIndex: 11 + roomDestinationIndex: 5 fatherLevelNodes: - {x: 1, y: 1} nextLevelNodes: @@ -144,14 +144,14 @@ MonoBehaviour: mapIndex: extraMapIndex: isExtra: 0 - - roomType: 10 - roomSprite: {fileID: 21300000, guid: 4bba0a3acc15faf4a8b904c7c0a781e2, type: 3} + - roomType: 8 + roomSprite: {fileID: 21300000, guid: 8c256e576311e0440a140e4be2ec9e51, type: 3} isUse: 1 passBy: 0 nodePos: {x: -3.709052, y: 0.055995107, z: 10} line: 2 column: 1 - roomDestinationIndex: 9 + roomDestinationIndex: 6 fatherLevelNodes: - {x: 1, y: 1} nextLevelNodes: @@ -162,14 +162,14 @@ MonoBehaviour: mapIndex: extraMapIndex: isExtra: 0 - - roomType: 6 - roomSprite: {fileID: 21300000, guid: dc3014f38b95b24448577e14bee06967, type: 3} + - roomType: 15 + roomSprite: {fileID: 21300000, guid: 6b27bdf9c297a274f95e945a248a7668, type: 3} isUse: 1 passBy: 0 nodePos: {x: -3.709052, y: 1.5901195, z: 10} line: 2 column: 2 - roomDestinationIndex: 7 + roomDestinationIndex: 14 fatherLevelNodes: - {x: 1, y: 1} nextLevelNodes: @@ -195,8 +195,8 @@ MonoBehaviour: - {x: 4, y: 0} fightEenemyPool: weak enemyList: - - LivingArmor - - FailedSample + - RatWarrior + - Pharmacist extraEnemyList: [] mapIndex: 100001 extraMapIndex: @@ -235,21 +235,21 @@ MonoBehaviour: - {x: 4, y: 2} fightEenemyPool: weak enemyList: + - Gravitus - RatWarrior - - Pharmacist extraEnemyList: [] mapIndex: 100001 extraMapIndex: isExtra: 0 - levelDataList: - - roomType: 4 - roomSprite: {fileID: 21300000, guid: e2a576b37ecc9ee4a92a1595d55eeb41, type: 3} + - roomType: 10 + roomSprite: {fileID: 21300000, guid: 4bba0a3acc15faf4a8b904c7c0a781e2, type: 3} isUse: 1 passBy: 0 nodePos: {x: -1.1010413, y: -1.4781291, z: 10} line: 4 column: 0 - roomDestinationIndex: 5 + roomDestinationIndex: 9 fatherLevelNodes: - {x: 3, y: 0} nextLevelNodes: @@ -260,14 +260,14 @@ MonoBehaviour: mapIndex: extraMapIndex: isExtra: 0 - - roomType: 8 - roomSprite: {fileID: 21300000, guid: 8c256e576311e0440a140e4be2ec9e51, type: 3} + - roomType: 10 + roomSprite: {fileID: 21300000, guid: 4bba0a3acc15faf4a8b904c7c0a781e2, type: 3} isUse: 1 passBy: 0 nodePos: {x: -1.1010413, y: 0.055995107, z: 10} line: 4 column: 1 - roomDestinationIndex: 6 + roomDestinationIndex: 9 fatherLevelNodes: - {x: 3, y: 1} nextLevelNodes: @@ -278,14 +278,14 @@ MonoBehaviour: mapIndex: extraMapIndex: isExtra: 0 - - roomType: 15 - roomSprite: {fileID: 21300000, guid: 6b27bdf9c297a274f95e945a248a7668, type: 3} + - roomType: 6 + roomSprite: {fileID: 21300000, guid: dc3014f38b95b24448577e14bee06967, type: 3} isUse: 1 passBy: 0 nodePos: {x: -1.1010413, y: 1.5901195, z: 10} line: 4 column: 2 - roomDestinationIndex: 14 + roomDestinationIndex: 7 fatherLevelNodes: - {x: 3, y: 2} nextLevelNodes: @@ -353,14 +353,14 @@ MonoBehaviour: extraMapIndex: isExtra: 0 - levelDataList: - - roomType: 6 - roomSprite: {fileID: 21300000, guid: dc3014f38b95b24448577e14bee06967, type: 3} + - roomType: 11 + roomSprite: {fileID: 21300000, guid: 5edbcfc45fbb4b2428e4f2782201afad, type: 3} isUse: 1 passBy: 0 nodePos: {x: 1.5069704, y: -1.4781291, z: 10} line: 6 column: 0 - roomDestinationIndex: 7 + roomDestinationIndex: 11 fatherLevelNodes: - {x: 5, y: 1} nextLevelNodes: @@ -371,14 +371,14 @@ MonoBehaviour: mapIndex: extraMapIndex: isExtra: 0 - - roomType: 11 - roomSprite: {fileID: 21300000, guid: 5edbcfc45fbb4b2428e4f2782201afad, type: 3} + - roomType: 15 + roomSprite: {fileID: 21300000, guid: 6b27bdf9c297a274f95e945a248a7668, type: 3} isUse: 1 passBy: 0 nodePos: {x: 1.5069704, y: 0.055995107, z: 10} line: 6 column: 1 - roomDestinationIndex: 11 + roomDestinationIndex: 14 fatherLevelNodes: - {x: 5, y: 1} nextLevelNodes: @@ -389,14 +389,14 @@ MonoBehaviour: mapIndex: extraMapIndex: isExtra: 0 - - roomType: 15 - roomSprite: {fileID: 21300000, guid: 6b27bdf9c297a274f95e945a248a7668, type: 3} + - roomType: 8 + roomSprite: {fileID: 21300000, guid: 8c256e576311e0440a140e4be2ec9e51, type: 3} isUse: 1 passBy: 0 nodePos: {x: 1.5069704, y: 1.5901195, z: 10} line: 6 column: 2 - roomDestinationIndex: 14 + roomDestinationIndex: 6 fatherLevelNodes: - {x: 5, y: 1} nextLevelNodes: @@ -422,8 +422,9 @@ MonoBehaviour: - {x: 8, y: 0} fightEenemyPool: strong enemyList: - - PollutionSpreader - - Gravitus + - RatWarrior + - RatWarrior + - LivingArmor extraEnemyList: [] mapIndex: 100001 extraMapIndex: @@ -442,9 +443,9 @@ MonoBehaviour: - {x: 8, y: 1} fightEenemyPool: elite enemyList: - - Climavista - - AcidRainCloud - - AcidRainCloud + - Gravitus + - PollutionSpreader + - PollutionSpreader extraEnemyList: [] mapIndex: 100001 extraMapIndex: @@ -463,21 +464,22 @@ MonoBehaviour: - {x: 8, y: 2} fightEenemyPool: strong enemyList: - - PollutionSpreader - - Gravitus + - RatWarrior + - FailedSample + - Pharmacist extraEnemyList: [] mapIndex: 100001 extraMapIndex: isExtra: 0 - levelDataList: - - roomType: 8 - roomSprite: {fileID: 21300000, guid: 8c256e576311e0440a140e4be2ec9e51, type: 3} + - roomType: 4 + roomSprite: {fileID: 21300000, guid: e2a576b37ecc9ee4a92a1595d55eeb41, type: 3} isUse: 1 passBy: 0 nodePos: {x: 4.1149817, y: -1.4781291, z: 10} line: 8 column: 0 - roomDestinationIndex: 6 + roomDestinationIndex: 5 fatherLevelNodes: - {x: 7, y: 0} nextLevelNodes: @@ -488,14 +490,14 @@ MonoBehaviour: mapIndex: extraMapIndex: isExtra: 0 - - roomType: 4 - roomSprite: {fileID: 21300000, guid: e2a576b37ecc9ee4a92a1595d55eeb41, type: 3} + - roomType: 10 + roomSprite: {fileID: 21300000, guid: 4bba0a3acc15faf4a8b904c7c0a781e2, type: 3} isUse: 1 passBy: 0 nodePos: {x: 4.1149817, y: 0.055995107, z: 10} line: 8 column: 1 - roomDestinationIndex: 5 + roomDestinationIndex: 9 fatherLevelNodes: - {x: 7, y: 1} nextLevelNodes: @@ -594,8 +596,9 @@ MonoBehaviour: - {x: 11, y: 1} fightEenemyPool: strong enemyList: - - Thief - - PrismReflector + - RatWarrior + - RatWarrior + - LivingArmor extraEnemyList: [] mapIndex: 100001 extraMapIndex: @@ -614,15 +617,14 @@ MonoBehaviour: - {x: 11, y: 1} fightEenemyPool: strong enemyList: - - RatWarrior - - FailedSample - - Pharmacist + - PollutionSpreader + - Gravitus extraEnemyList: [] mapIndex: 100001 extraMapIndex: isExtra: 0 - - roomType: 0 - roomSprite: {fileID: 21300000, guid: b8a209883c3910b4199ecc6bd1beebbd, type: 3} + - roomType: 1 + roomSprite: {fileID: 21300000, guid: f3df96407bf665b4d8cd8f13dfb3d6d0, type: 3} isUse: 1 passBy: 0 nodePos: {x: 6.722993, y: 1.5901195, z: 10} @@ -633,10 +635,11 @@ MonoBehaviour: - {x: 9, y: 1} nextLevelNodes: - {x: 11, y: 1} - fightEenemyPool: strong + fightEenemyPool: elite enemyList: - - Thief - - PrismReflector + - Climavista + - AcidRainCloud + - AcidRainCloud extraEnemyList: [] mapIndex: 100001 extraMapIndex: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs index 7a0664a6..0c7627c1 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs @@ -86,7 +86,7 @@ public class LeveGeneraterNew : Singleton GenerateGridMap(generatorLine, generatorColumn); GeneratePath(); RandomSetUpRoom(); - // CheckNodeRule(); + CheckNodeRule(); PlayerStatsManager.Instance.levelDevelopData.levelStep = 1; PlayerStatsManager.Instance.levelDevelopData.currentPoint = new Vector2(0, 1); ShowMap(); @@ -378,34 +378,35 @@ public class LeveGeneraterNew : Singleton //检查节点是否合理(分支目的地不同,保底精英) public void CheckNodeRule() { - for (int i = 0; i < LevelDevelopManager.Instance.levelMap.Count; i++) + List levelMap = LevelDevelopManager.Instance.levelMap; + //目前只需要检查同一条线上会不会出现相同的房间就行了 + for (int i = 0; i < 3; i++) { - for (int j = 0; j < LevelDevelopManager.Instance.levelMap[i].levelColumn.Count; j++) + if (levelMap[rewardFloor[0]].levelColumn[i] == levelMap[rewardFloor[1]].levelColumn[i]) { - LevelNode currentLevelNode = LevelDevelopManager.Instance.levelMap[i].levelColumn[j]; - if (currentLevelNode.isUse) + RoomType currentRoomType = levelMap[rewardFloor[1]].levelColumn[i].roomType; + int offsetI = i + 1; + if(offsetI >2) { - if (currentLevelNode.nextLevelNodes.Count > 1 && i != treasureFloor - 1 && i != generatorLine - 3 && i != generatorLine - 2) - { - Debug.Log(i); - List roomTypes = new List(); - foreach (var room in currentLevelNode.nextLevelNodes) - { - if (!roomTypes.Contains(room.roomType)) - { - Debug.Log(currentLevelNode.line + ";" + currentLevelNode.column + "过"); - roomTypes.Add(room.roomType); - } - else - { - Debug.Log(currentLevelNode.line + ";" + currentLevelNode.column + "否"); - RandomGetOneRoom(currentLevelNode.nextLevelNodes, i, j); - } - } - - } + offsetI = 0; } + levelMap[rewardFloor[1]].levelColumn[i].SetUpRoom(levelMap[rewardFloor[1]].levelColumn[offsetI].roomType); + levelMap[rewardFloor[1]].levelColumn[offsetI].SetUpRoom(currentRoomType); + Debug.Log("违规房间修正"); } + if (levelMap[rewardFloor[2]].levelColumn[i] == levelMap[rewardFloor[3]].levelColumn[i] ) + { + RoomType currentRoomType = levelMap[rewardFloor[3]].levelColumn[i].roomType; + int offsetI = i + 1; + if (offsetI > 2) + { + offsetI = 0; + } + levelMap[rewardFloor[3]].levelColumn[i].SetUpRoom(levelMap[rewardFloor[1]].levelColumn[offsetI].roomType); + levelMap[rewardFloor[3]].levelColumn[offsetI].SetUpRoom(currentRoomType); + Debug.Log("违规房间修正"); + } + } } @@ -527,7 +528,7 @@ public class LeveGeneraterNew : Singleton //先确定奖励刷新数量 Dictionary roomCount = new Dictionary() - { { RoomType.incident ,3},{ RoomType .resource ,2},{ RoomType .addCard ,3},{ RoomType .forging ,2},{RoomType .tavern ,2},{RoomType .shop ,2} }; + { { RoomType.incident ,3},{ RoomType .addCard ,3},{ RoomType .resource ,2},{ RoomType .forging ,2},{RoomType .tavern ,2},{RoomType .shop ,2} }; for(int i=0;i<2;i++) { @@ -676,83 +677,6 @@ public class LeveGeneraterNew : Singleton } } - //判断下一个房间的所有子集是否有重复 - public void RandomGetOneRoom(List nextLevelNodes, int line, int column) - { - HashSet candidateRoomTypeList = new HashSet(); - - while (true) - { - candidateRoomTypeList.Clear(); - - for (int i = 0; i < nextLevelNodes.Count; i++) - { - bool contravenes = true; - LevelDevelopManager.RoomType candidateRoomType = LevelDevelopManager.RoomType.monster; - while (contravenes) - { - contravenes = false; - - //candidateRoomType = GetRoomTypeByWeight();//获取后选房间类型 - LevelNode currentLevelNode = nextLevelNodes[i]; - - switch (candidateRoomType) - { - case LevelDevelopManager.RoomType.monster: - - break; - case LevelDevelopManager.RoomType.eliteMonster: - foreach (var fatherRoom in currentLevelNode.fatherLevelNodes) - { - if (fatherRoom.roomType == LevelDevelopManager.RoomType.eliteMonster || line < 5) - { - contravenes = true; - } - } - break; - case LevelDevelopManager.RoomType.incident: - - break; - case LevelDevelopManager.RoomType.campfire: - foreach (var fatherRoom in currentLevelNode.fatherLevelNodes) - { - if (fatherRoom.roomType == LevelDevelopManager.RoomType.campfire || line == generatorLine - 3 || line < 5) - { - contravenes = true; - } - } - break; - case LevelDevelopManager.RoomType.shop: - foreach (var fatherRoom in currentLevelNode.fatherLevelNodes) - { - if (fatherRoom.roomType == LevelDevelopManager.RoomType.shop) - { - contravenes = true; - } - } - break; - } - - } - candidateRoomTypeList.Add(candidateRoomType); - } - - if (candidateRoomTypeList.Count == nextLevelNodes.Count) - { - - List roomTypes = candidateRoomTypeList.ToList(); - for (int k = 0; k < nextLevelNodes.Count; k++) - { - Debug.Log(roomTypes[k]); - nextLevelNodes[k].SetUpRoom(roomTypes[k]); - } - - break; - } - - } - - } //显示连线,设置能否进入 public void ShowMap() {