Browse Source

0919地图刷新机制修改

pull/198/head
软件204张景程 3 months ago
parent
commit
7e711ecee0
  1. 115
      ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset
  2. 122
      ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs

115
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:

122
ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs

@ -86,7 +86,7 @@ public class LeveGeneraterNew : Singleton<LeveGeneraterNew>
GenerateGridMap(generatorLine, generatorColumn);
GeneratePath();
RandomSetUpRoom();
// CheckNodeRule();
CheckNodeRule();
PlayerStatsManager.Instance.levelDevelopData.levelStep = 1;
PlayerStatsManager.Instance.levelDevelopData.currentPoint = new Vector2(0, 1);
ShowMap();
@ -378,36 +378,37 @@ public class LeveGeneraterNew : Singleton<LeveGeneraterNew>
//检查节点是否合理(分支目的地不同,保底精英)
public void CheckNodeRule()
{
for (int i = 0; i < LevelDevelopManager.Instance.levelMap.Count; i++)
{
for (int j = 0; j < LevelDevelopManager.Instance.levelMap[i].levelColumn.Count; j++)
{
LevelNode currentLevelNode = LevelDevelopManager.Instance.levelMap[i].levelColumn[j];
if (currentLevelNode.isUse)
{
if (currentLevelNode.nextLevelNodes.Count > 1 && i != treasureFloor - 1 && i != generatorLine - 3 && i != generatorLine - 2)
List<LevelList> levelMap = LevelDevelopManager.Instance.levelMap;
//目前只需要检查同一条线上会不会出现相同的房间就行了
for (int i = 0; i < 3; i++)
{
Debug.Log(i);
List<LevelDevelopManager.RoomType> roomTypes = new List<LevelDevelopManager.RoomType>();
foreach (var room in currentLevelNode.nextLevelNodes)
if (levelMap[rewardFloor[0]].levelColumn[i] == levelMap[rewardFloor[1]].levelColumn[i])
{
if (!roomTypes.Contains(room.roomType))
RoomType currentRoomType = levelMap[rewardFloor[1]].levelColumn[i].roomType;
int offsetI = i + 1;
if(offsetI >2)
{
Debug.Log(currentLevelNode.line + ";" + currentLevelNode.column + "过");
roomTypes.Add(room.roomType);
offsetI = 0;
}
else
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] )
{
Debug.Log(currentLevelNode.line + ";" + currentLevelNode.column + "否");
RandomGetOneRoom(currentLevelNode.nextLevelNodes, i, j);
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<LeveGeneraterNew>
//先确定奖励刷新数量
Dictionary<RoomType, int> roomCount = new Dictionary<RoomType, int>()
{ { 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<LeveGeneraterNew>
}
}
//判断下一个房间的所有子集是否有重复
public void RandomGetOneRoom(List<LevelNode> nextLevelNodes, int line, int column)
{
HashSet<LevelDevelopManager.RoomType> candidateRoomTypeList = new HashSet<LevelDevelopManager.RoomType>();
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<LevelDevelopManager.RoomType> roomTypes = candidateRoomTypeList.ToList();
for (int k = 0; k < nextLevelNodes.Count; k++)
{
Debug.Log(roomTypes[k]);
nextLevelNodes[k].SetUpRoom(roomTypes[k]);
}
break;
}
}
}
//显示连线,设置能否进入
public void ShowMap()
{

Loading…
Cancel
Save