From a9ceaeb8eccd0d1f8f5e455c9f4f6b4039fd7a15 Mon Sep 17 00:00:00 2001 From: Regalis Date: Tue, 10 May 2016 18:46:42 +0300 Subject: [PATCH] - fixed ruin doors being placed outside corridors if the corridor passes through multiple rooms - fog of war isn't drawn or updated when not controlling a character - fixed topmost cells in the level not being placed in the cellgrid array, causing them to be ignored when enlarging the main path for the sub - fixed slices of the diving suit sprite "bleeding" into the torso sprite --- .../Content/Items/Diving/DivingSuit.png | Bin 22354 -> 22145 bytes .../Content/Items/Diving/divinggear.xml | 4 +- Subsurface/Source/Map/Levels/Level.cs | 15 ++--- .../Source/Map/Levels/Ruins/RuinGenerator.cs | 62 +++++++----------- Subsurface/Source/Map/Lights/LightManager.cs | 2 +- Subsurface/Source/Screens/GameScreen.cs | 5 +- 6 files changed, 36 insertions(+), 52 deletions(-) diff --git a/Subsurface/Content/Items/Diving/DivingSuit.png b/Subsurface/Content/Items/Diving/DivingSuit.png index 0bc10c5215833d492203496940164e127b72a91e..25eff35ea55c5191cca04cb5a27130ccf8bdf692 100644 GIT binary patch literal 22145 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 Ef_hoC-T(jq literal 22354 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 - + - + diff --git a/Subsurface/Source/Map/Levels/Level.cs b/Subsurface/Source/Map/Levels/Level.cs index 20683d075..5cd936d59 100644 --- a/Subsurface/Source/Map/Levels/Level.cs +++ b/Subsurface/Source/Map/Levels/Level.cs @@ -391,7 +391,7 @@ namespace Barotrauma { for (int y = 0; y < cellGrid.GetLength(1); y++) { - cellGrid[x, y] .Clear(); + cellGrid[x, y].Clear(); } } @@ -402,17 +402,10 @@ namespace Barotrauma if (x < 0 || y < 0 || x >= cellGrid.GetLength(0) || y >= cellGrid.GetLength(1)) continue; - cellGrid[x,y].Add(cell); + cellGrid[x, y].Add(cell); } - - - - - - - Vector2 ruinSize = new Vector2(Rand.Range(5000.0f, 8000.0f, false), Rand.Range(5000.0f, 8000.0f, false)); float ruinRadius = Math.Max(ruinSize.X, ruinSize.Y) * 0.5f; @@ -844,9 +837,9 @@ namespace Barotrauma List cells = new List(); - for (int x = startX; x < endX; x++) + for (int x = startX; x <= endX; x++) { - for (int y = startY; y < endY; y++) + for (int y = startY; y <= endY; y++) { foreach (VoronoiCell cell in cellGrid[x, y]) { diff --git a/Subsurface/Source/Map/Levels/Ruins/RuinGenerator.cs b/Subsurface/Source/Map/Levels/Ruins/RuinGenerator.cs index 7b5103efc..cf4c1e67f 100644 --- a/Subsurface/Source/Map/Levels/Ruins/RuinGenerator.cs +++ b/Subsurface/Source/Map/Levels/Ruins/RuinGenerator.cs @@ -256,37 +256,6 @@ namespace Barotrauma.RuinGeneration rooms.Remove(entranceRoom); - //var startCell = closestPathCell; - - //Rectangle startCellRect = new Rectangle( - // (int)startCell.edges.Min(e => Math.Min(e.point1.X, e.point2.X)), - // (int)startCell.edges.Min(e => Math.Min(e.point1.Y, e.point2.Y)), - // (int)startCell.edges.Max(e => Math.Max(e.point1.X, e.point2.X)), - // (int)startCell.edges.Max(e => Math.Max(e.point1.Y, e.point2.Y))); - - //startCellRect.Width = startCellRect.Width - startCellRect.X; - //startCellRect.Height = startCellRect.Height - startCellRect.Y; - - //int startX = Math.Min(entranceRoom.Rect.Center.X, startCellRect.Center.X); - //int endX = Math.Max(entranceRoom.Rect.Right, startCellRect.Right); - - //int startY = Math.Min(entranceRoom.Rect.Center.Y, startCellRect.Center.Y); - //int endY = Math.Max(entranceRoom.Rect.Bottom, startCellRect.Bottom); - - //if (entranceRoom.Rect.X > startCellRect.X && entranceRoom.Rect.Right < startCellRect.Right) - //{ - // corridors.Add(new Corridor(new Rectangle(entranceRoom.Rect.Center.X, startY, 128, endY - startY))); - //} - //else if (entranceRoom.Rect.Y > startCellRect.Y && entranceRoom.Rect.Bottom < startCellRect.Bottom) - //{ - // corridors.Add(new Corridor(new Rectangle(startX, entranceRoom.Rect.Center.Y, endX - startX, 128))); - //} - //else - //{ - // corridors.Add(new Corridor(new Rectangle(startX, entranceRoom.Rect.Center.Y, endX - startX, 128))); - // corridors.Add(new Corridor(new Rectangle(endX, startY, 128, endY - startY))); - //} - //--------------------------- foreach (BTRoom leaf in rooms) @@ -418,13 +387,32 @@ namespace Barotrauma.RuinGeneration foreach (Corridor corridor in corridors) { - var door = RuinStructure.GetRandom(corridor.IsHorizontal ? RuinStructureType.Door : RuinStructureType.Hatch, Alignment.Center); - if (door == null) continue; + var doorPrefab = RuinStructure.GetRandom(corridor.IsHorizontal ? RuinStructureType.Door : RuinStructureType.Hatch, Alignment.Center); + if (doorPrefab == null) continue; - var item = new Item(door.Prefab as ItemPrefab, corridor.Center - new Vector2(door.Prefab.sprite.size.X, -door.Prefab.sprite.size.Y)/2.0f, null); - item.MoveWithLevel = true; + //find all walls that are parallel to the corridor + var suitableWalls = corridor.IsHorizontal ? + corridor.Walls.FindAll(c => c.A.Y == c.B.Y) : corridor.Walls.FindAll(c => c.A.X == c.B.X); - item.GetComponent().IsOpen = Rand.Range(0.0f, 1.0f, false) < 0.8f; + if (!suitableWalls.Any()) continue; + + Vector2 doorPos = corridor.Center; + + //choose a random wall to place the door next to + var wall = suitableWalls[Rand.Int(suitableWalls.Count, false)]; + if (corridor.IsHorizontal) + { + doorPos.X = (wall.A.X + wall.B.X) / 2.0f; + } + else + { + doorPos.Y = (wall.A.Y + wall.B.Y) / 2.0f; + } + + var door = new Item(doorPrefab.Prefab as ItemPrefab, doorPos - new Vector2(doorPrefab.Prefab.sprite.size.X, -doorPrefab.Prefab.sprite.size.Y)/2.0f, null); + door.MoveWithLevel = true; + + door.GetComponent().IsOpen = Rand.Range(0.0f, 1.0f, false) < 0.8f; if (sensorPrefab == null || wirePrefab == null) continue; @@ -439,7 +427,7 @@ namespace Barotrauma.RuinGeneration var wire = new Item(wirePrefab, sensorRoom.Center, null).GetComponent(); wire.Item.MoveWithLevel = false; - var conn1 = item.Connections.Find(c => c.Name == "set_state"); + var conn1 = door.Connections.Find(c => c.Name == "set_state"); conn1.AddLink(0, wire); wire.Connect(conn1, false); diff --git a/Subsurface/Source/Map/Lights/LightManager.cs b/Subsurface/Source/Map/Lights/LightManager.cs index e47e52ac2..77d1ef731 100644 --- a/Subsurface/Source/Map/Lights/LightManager.cs +++ b/Subsurface/Source/Map/Lights/LightManager.cs @@ -71,7 +71,7 @@ namespace Barotrauma.Lights public void DrawLOS(GraphicsDevice graphics, SpriteBatch spriteBatch, Camera cam, Effect effect) { - //if (!LosEnabled || ViewTarget==null) return; + if (!LosEnabled || ViewTarget==null) return; //Vector2 pos = ViewTarget.WorldPosition; diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Subsurface/Source/Screens/GameScreen.cs index afa829ef8..7b535ff04 100644 --- a/Subsurface/Source/Screens/GameScreen.cs +++ b/Subsurface/Source/Screens/GameScreen.cs @@ -316,7 +316,10 @@ namespace Barotrauma GameMain.LightManager.DrawLightMap(spriteBatch, cam, blurEffect); - GameMain.LightManager.DrawLOS(graphics, spriteBatch, cam, blurEffect); + if (Character.Controlled != null) + { + GameMain.LightManager.DrawLOS(graphics, spriteBatch, cam, blurEffect); + } }