Level generation fixes

This commit is contained in:
Regalis
2016-11-23 17:52:23 +02:00
parent 4ad60e77a9
commit e39ab10a71
+8 -5
View File
@@ -187,11 +187,11 @@ namespace Barotrauma
minWidth = Math.Max(minWidth, 6500.0f); minWidth = Math.Max(minWidth, 6500.0f);
startPosition = new Vector2( startPosition = new Vector2(
Rand.Range(minWidth * 2, minWidth * 4, false), Rand.Range(minWidth, minWidth * 2, false),
Rand.Range(borders.Height * 0.5f, borders.Height - minWidth * 2, false)); Rand.Range(borders.Height * 0.5f, borders.Height - minWidth * 2, false));
endPosition = new Vector2( endPosition = new Vector2(
borders.Width - Rand.Range(minWidth * 2, minWidth * 4, false), borders.Width - Rand.Range(minWidth, minWidth * 2, false),
Rand.Range(borders.Height * 0.5f, borders.Height - minWidth * 2, false)); Rand.Range(borders.Height * 0.5f, borders.Height - minWidth * 2, false));
List<Vector2> pathNodes = new List<Vector2>(); List<Vector2> pathNodes = new List<Vector2>();
@@ -211,8 +211,12 @@ namespace Barotrauma
pathNodes.Add(new Vector2(endPosition.X, borders.Height)); pathNodes.Add(new Vector2(endPosition.X, borders.Height));
List<List<Vector2>> smallTunnels = new List<List<Vector2>>(); if (pathNodes.Count <= 2)
{
pathNodes.Add((startPosition + endPosition) / 2);
}
List<List<Vector2>> smallTunnels = new List<List<Vector2>>();
for (int i = 0; i < generationParams.SmallTunnelCount; i++) for (int i = 0; i < generationParams.SmallTunnelCount; i++)
{ {
var tunnelStartPos = pathNodes[Rand.Range(2, pathNodes.Count - 2, false)]; var tunnelStartPos = pathNodes[Rand.Range(2, pathNodes.Count - 2, false)];
@@ -422,6 +426,7 @@ namespace Barotrauma
cellGrid[x, y].Add(cell); cellGrid[x, y].Add(cell);
} }
ruins = new List<Ruin>();
for (int i = 0; i<generationParams.RuinCount; i++) for (int i = 0; i<generationParams.RuinCount; i++)
{ {
GenerateRuin(mainPath); GenerateRuin(mainPath);
@@ -726,8 +731,6 @@ namespace Barotrauma
} }
var ruin = new Ruin(closestPathCell, cells, new Rectangle((ruinPos - ruinSize * 0.5f).ToPoint(), ruinSize.ToPoint())); var ruin = new Ruin(closestPathCell, cells, new Rectangle((ruinPos - ruinSize * 0.5f).ToPoint(), ruinSize.ToPoint()));
ruins = new List<Ruin>();
ruins.Add(ruin); ruins.Add(ruin);
ruin.RuinShapes.Sort((shape1, shape2) => shape2.DistanceFromEntrance.CompareTo(shape1.DistanceFromEntrance)); ruin.RuinShapes.Sort((shape1, shape2) => shape2.DistanceFromEntrance.CompareTo(shape1.DistanceFromEntrance));