Disabled the "infinite walls" at the edges of the level (don't work correctly with multiple subs), the barrier at the top of the level can't be passed through when outside the borders of the level

This commit is contained in:
Regalis
2016-11-15 19:56:00 +02:00
parent f7a9a77721
commit 642a1bdd54
3 changed files with 32 additions and 12 deletions
+13 -9
View File
@@ -54,7 +54,7 @@ namespace Barotrauma
public const int GridCellSize = 2000; public const int GridCellSize = 2000;
private List<VoronoiCell>[,] cellGrid; private List<VoronoiCell>[,] cellGrid;
private WrappingWall[,] wrappingWalls; //private WrappingWall[,] wrappingWalls;
//private float shaftHeight; //private float shaftHeight;
@@ -97,10 +97,10 @@ namespace Barotrauma
get { return ruins; } get { return ruins; }
} }
public WrappingWall[,] WrappingWalls //public WrappingWall[,] WrappingWalls
{ //{
get { return wrappingWalls; } // get { return wrappingWalls; }
} //}
public string Seed public string Seed
{ {
@@ -440,6 +440,7 @@ namespace Barotrauma
renderer.PlaceSprites(generationParams.BackgroundSpriteAmount); renderer.PlaceSprites(generationParams.BackgroundSpriteAmount);
/*
wrappingWalls = new WrappingWall[2, 2]; wrappingWalls = new WrappingWall[2, 2];
Rectangle ignoredArea = new Rectangle((int)startPosition.X, 0, (int)(endPosition.X - startPosition.X), borders.Height); Rectangle ignoredArea = new Rectangle((int)startPosition.X, 0, (int)(endPosition.X - startPosition.X), borders.Height);
@@ -465,7 +466,7 @@ namespace Barotrauma
{ {
cells.AddRange(wrappingWalls[side, i].Cells); cells.AddRange(wrappingWalls[side, i].Cells);
} }
} }*/
ShaftBody = BodyFactory.CreateEdge(GameMain.World, ShaftBody = BodyFactory.CreateEdge(GameMain.World,
ConvertUnits.ToSimUnits(new Vector2(borders.X, 0)), ConvertUnits.ToSimUnits(new Vector2(borders.X, 0)),
@@ -809,10 +810,11 @@ namespace Barotrauma
public void Update(float deltaTime) public void Update(float deltaTime)
{ {
/*
if (Submarine.MainSub != null) if (Submarine.MainSub != null)
{ {
WrappingWall.UpdateWallShift(Submarine.MainSub.WorldPosition, wrappingWalls); WrappingWall.UpdateWallShift(Submarine.MainSub.WorldPosition, wrappingWalls);
} }*/
if (Hull.renderer != null) if (Hull.renderer != null)
{ {
@@ -884,6 +886,7 @@ namespace Barotrauma
} }
} }
/*
if (wrappingWalls == null) return cells; if (wrappingWalls == null) return cells;
for (int side = 0; side < 2; side++) for (int side = 0; side < 2; side++)
@@ -899,7 +902,7 @@ namespace Barotrauma
cells.Add(cell); cells.Add(cell);
} }
} }
} }*/
return cells; return cells;
} }
@@ -918,6 +921,7 @@ namespace Barotrauma
ruins = null; ruins = null;
} }
/*
if (wrappingWalls!=null) if (wrappingWalls!=null)
{ {
for (int side = 0; side < 2; side++) for (int side = 0; side < 2; side++)
@@ -929,7 +933,7 @@ namespace Barotrauma
} }
wrappingWalls = null; wrappingWalls = null;
} }*/
cells = null; cells = null;
@@ -219,6 +219,7 @@ namespace Barotrauma
graphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, (int)Math.Floor(bodyVertices.VertexCount / 3.0f)); graphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, (int)Math.Floor(bodyVertices.VertexCount / 3.0f));
/*
for (int side = 0; side < 2; side++) for (int side = 0; side < 2; side++)
{ {
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
@@ -234,7 +235,7 @@ namespace Barotrauma
PrimitiveType.TriangleList, 0, PrimitiveType.TriangleList, 0,
(int)Math.Floor(level.WrappingWalls[side, i].BodyVertices.VertexCount / 3.0f)); (int)Math.Floor(level.WrappingWalls[side, i].BodyVertices.VertexCount / 3.0f));
} }
} }*/
graphicsDevice.SetVertexBuffer(wallVertices); graphicsDevice.SetVertexBuffer(wallVertices);
@@ -243,7 +244,7 @@ namespace Barotrauma
basicEffect.CurrentTechnique = basicEffect.Techniques["BasicEffect_Texture"]; basicEffect.CurrentTechnique = basicEffect.Techniques["BasicEffect_Texture"];
basicEffect.CurrentTechnique.Passes[0].Apply(); basicEffect.CurrentTechnique.Passes[0].Apply();
graphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, (int)Math.Floor(wallVertices.VertexCount / 3.0f)); graphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, (int)Math.Floor(wallVertices.VertexCount / 3.0f));
/*
for (int side = 0; side < 2; side++) for (int side = 0; side < 2; side++)
{ {
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
@@ -260,7 +261,7 @@ namespace Barotrauma
(int)Math.Floor(level.WrappingWalls[side, i].WallVertices.VertexCount / 3.0f)); (int)Math.Floor(level.WrappingWalls[side, i].WallVertices.VertexCount / 3.0f));
} }
} }*/
} }
+15
View File
@@ -243,6 +243,21 @@ namespace Barotrauma
return; return;
} }
//if outside left or right edge of the level
if (Position.X < 0 || Position.X > Level.Loaded.Size.X)
{
Rectangle worldBorders = Borders;
worldBorders.Location += Position.ToPoint();
//push the sub back below the upper "barrier" of the level
if (worldBorders.Y > Level.Loaded.Size.Y)
{
Body.LinearVelocity = new Vector2(
Body.LinearVelocity.X,
Math.Min(Body.LinearVelocity.Y, ConvertUnits.ToSimUnits(Level.Loaded.Size.Y - worldBorders.Y)));
}
}
//------------------------- //-------------------------
Vector2 totalForce = CalculateBuoyancy(); Vector2 totalForce = CalculateBuoyancy();