From c5685db0aa831bfdf29fab8a859925e4ed92d077 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 9 Apr 2016 14:31:59 +0300 Subject: [PATCH] - handheld sonar - junction boxes, sonar monitors, navigation terminals and engines break down if they're underwater long enough - reactor cools down if it's underwater - job-specific gear are grouped by job in separate .xml files --- Subsurface/Barotrauma.csproj | 32 +- Subsurface/Content/Items/Clothes/clothes.xml | 282 ------------------ .../Content/Items/Electricity/poweritems.xml | 1 + Subsurface/Content/Items/Engine/engine.xml | 21 ++ .../{Clothes => Jobgear}/captainLegs.png | Bin .../{Clothes => Jobgear}/captainTorso.png | Bin .../Content/Items/Jobgear/captaingear.xml | 59 ++++ .../Items/{Clothes => Jobgear}/captainhat.png | Bin .../Items/{Clothes => Jobgear}/clownmask.png | Bin .../Items/{Clothes => Jobgear}/clownpants.png | Bin .../Items/{Clothes => Jobgear}/clownshirt.png | Bin .../Items/{Clothes => Jobgear}/doctorgear.png | Bin .../Content/Items/Jobgear/doctorgear.xml | 94 ++++++ .../Items/{Clothes => Jobgear}/engigear.png | Bin Subsurface/Content/Items/Jobgear/engigear.xml | 58 ++++ Subsurface/Content/Items/Jobgear/misc.xml | 35 +++ .../{Clothes => Jobgear}/securitygear.png | Bin .../Content/Items/Jobgear/securitygear.xml | 59 ++++ Subsurface/Content/Items/Reactor/reactor.xml | 1 + Subsurface/Content/Items/Tools/tools.png | Bin 7762 -> 6770 bytes Subsurface/Content/Items/Tools/tools.xml | 29 +- Subsurface/Content/Items/Weapons/weapons.xml | 2 +- .../Data/ContentPackages/Vanilla 0.3.xml | 6 +- Subsurface/Source/Characters/CharacterHUD.cs | 10 +- .../Source/Items/Components/ItemComponent.cs | 7 + .../Source/Items/Components/Machines/Radar.cs | 150 ++++++---- .../Items/Components/Machines/Reactor.cs | 11 +- Subsurface/Source/Items/Item.cs | 13 +- Subsurface/Source/Map/Levels/LevelRenderer.cs | 47 ++- 29 files changed, 524 insertions(+), 393 deletions(-) delete mode 100644 Subsurface/Content/Items/Clothes/clothes.xml rename Subsurface/Content/Items/{Clothes => Jobgear}/captainLegs.png (100%) rename Subsurface/Content/Items/{Clothes => Jobgear}/captainTorso.png (100%) create mode 100644 Subsurface/Content/Items/Jobgear/captaingear.xml rename Subsurface/Content/Items/{Clothes => Jobgear}/captainhat.png (100%) rename Subsurface/Content/Items/{Clothes => Jobgear}/clownmask.png (100%) rename Subsurface/Content/Items/{Clothes => Jobgear}/clownpants.png (100%) rename Subsurface/Content/Items/{Clothes => Jobgear}/clownshirt.png (100%) rename Subsurface/Content/Items/{Clothes => Jobgear}/doctorgear.png (100%) create mode 100644 Subsurface/Content/Items/Jobgear/doctorgear.xml rename Subsurface/Content/Items/{Clothes => Jobgear}/engigear.png (100%) create mode 100644 Subsurface/Content/Items/Jobgear/engigear.xml create mode 100644 Subsurface/Content/Items/Jobgear/misc.xml rename Subsurface/Content/Items/{Clothes => Jobgear}/securitygear.png (100%) create mode 100644 Subsurface/Content/Items/Jobgear/securitygear.xml diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj index a7f2cdc70..a798b157a 100644 --- a/Subsurface/Barotrauma.csproj +++ b/Subsurface/Barotrauma.csproj @@ -442,28 +442,40 @@ PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + PreserveNewest @@ -562,10 +574,10 @@ PreserveNewest Designer - + PreserveNewest - + PreserveNewest diff --git a/Subsurface/Content/Items/Clothes/clothes.xml b/Subsurface/Content/Items/Clothes/clothes.xml deleted file mode 100644 index 5bf5762d7..000000000 --- a/Subsurface/Content/Items/Clothes/clothes.xml +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Subsurface/Content/Items/Electricity/poweritems.xml b/Subsurface/Content/Items/Electricity/poweritems.xml index c509c77b7..3f2948508 100644 --- a/Subsurface/Content/Items/Electricity/poweritems.xml +++ b/Subsurface/Content/Items/Electricity/poweritems.xml @@ -16,6 +16,7 @@ + diff --git a/Subsurface/Content/Items/Engine/engine.xml b/Subsurface/Content/Items/Engine/engine.xml index a409935c7..51a20b46b 100644 --- a/Subsurface/Content/Items/Engine/engine.xml +++ b/Subsurface/Content/Items/Engine/engine.xml @@ -10,7 +10,14 @@ + + + + + + + @@ -30,7 +37,14 @@ + + + + + + + @@ -58,7 +72,14 @@ + + + + + + + diff --git a/Subsurface/Content/Items/Clothes/captainLegs.png b/Subsurface/Content/Items/Jobgear/captainLegs.png similarity index 100% rename from Subsurface/Content/Items/Clothes/captainLegs.png rename to Subsurface/Content/Items/Jobgear/captainLegs.png diff --git a/Subsurface/Content/Items/Clothes/captainTorso.png b/Subsurface/Content/Items/Jobgear/captainTorso.png similarity index 100% rename from Subsurface/Content/Items/Clothes/captainTorso.png rename to Subsurface/Content/Items/Jobgear/captainTorso.png diff --git a/Subsurface/Content/Items/Jobgear/captaingear.xml b/Subsurface/Content/Items/Jobgear/captaingear.xml new file mode 100644 index 000000000..b9303bf9c --- /dev/null +++ b/Subsurface/Content/Items/Jobgear/captaingear.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Subsurface/Content/Items/Clothes/captainhat.png b/Subsurface/Content/Items/Jobgear/captainhat.png similarity index 100% rename from Subsurface/Content/Items/Clothes/captainhat.png rename to Subsurface/Content/Items/Jobgear/captainhat.png diff --git a/Subsurface/Content/Items/Clothes/clownmask.png b/Subsurface/Content/Items/Jobgear/clownmask.png similarity index 100% rename from Subsurface/Content/Items/Clothes/clownmask.png rename to Subsurface/Content/Items/Jobgear/clownmask.png diff --git a/Subsurface/Content/Items/Clothes/clownpants.png b/Subsurface/Content/Items/Jobgear/clownpants.png similarity index 100% rename from Subsurface/Content/Items/Clothes/clownpants.png rename to Subsurface/Content/Items/Jobgear/clownpants.png diff --git a/Subsurface/Content/Items/Clothes/clownshirt.png b/Subsurface/Content/Items/Jobgear/clownshirt.png similarity index 100% rename from Subsurface/Content/Items/Clothes/clownshirt.png rename to Subsurface/Content/Items/Jobgear/clownshirt.png diff --git a/Subsurface/Content/Items/Clothes/doctorgear.png b/Subsurface/Content/Items/Jobgear/doctorgear.png similarity index 100% rename from Subsurface/Content/Items/Clothes/doctorgear.png rename to Subsurface/Content/Items/Jobgear/doctorgear.png diff --git a/Subsurface/Content/Items/Jobgear/doctorgear.xml b/Subsurface/Content/Items/Jobgear/doctorgear.xml new file mode 100644 index 000000000..d7c5a2cd4 --- /dev/null +++ b/Subsurface/Content/Items/Jobgear/doctorgear.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Subsurface/Content/Items/Clothes/engigear.png b/Subsurface/Content/Items/Jobgear/engigear.png similarity index 100% rename from Subsurface/Content/Items/Clothes/engigear.png rename to Subsurface/Content/Items/Jobgear/engigear.png diff --git a/Subsurface/Content/Items/Jobgear/engigear.xml b/Subsurface/Content/Items/Jobgear/engigear.xml new file mode 100644 index 000000000..ce7f89054 --- /dev/null +++ b/Subsurface/Content/Items/Jobgear/engigear.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Subsurface/Content/Items/Jobgear/misc.xml b/Subsurface/Content/Items/Jobgear/misc.xml new file mode 100644 index 000000000..8c4629268 --- /dev/null +++ b/Subsurface/Content/Items/Jobgear/misc.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Subsurface/Content/Items/Clothes/securitygear.png b/Subsurface/Content/Items/Jobgear/securitygear.png similarity index 100% rename from Subsurface/Content/Items/Clothes/securitygear.png rename to Subsurface/Content/Items/Jobgear/securitygear.png diff --git a/Subsurface/Content/Items/Jobgear/securitygear.xml b/Subsurface/Content/Items/Jobgear/securitygear.xml new file mode 100644 index 000000000..1fb1e62e4 --- /dev/null +++ b/Subsurface/Content/Items/Jobgear/securitygear.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Subsurface/Content/Items/Reactor/reactor.xml b/Subsurface/Content/Items/Reactor/reactor.xml index caa3ed36a..c1d0cab82 100644 --- a/Subsurface/Content/Items/Reactor/reactor.xml +++ b/Subsurface/Content/Items/Reactor/reactor.xml @@ -23,6 +23,7 @@ + diff --git a/Subsurface/Content/Items/Tools/tools.png b/Subsurface/Content/Items/Tools/tools.png index a1b58f6490969802a30ce50c3a7a0cdbe87387ab..2df75e0023b3b525d646c8c95221987b802a7795 100644 GIT binary patch delta 6729 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 delta 7729 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 Y)TGy)*{*fH2tppp@*kj;vL=E514>}#DF6Tf diff --git a/Subsurface/Content/Items/Tools/tools.xml b/Subsurface/Content/Items/Tools/tools.xml index 0c2a1c926..07a3b0dbf 100644 --- a/Subsurface/Content/Items/Tools/tools.xml +++ b/Subsurface/Content/Items/Tools/tools.xml @@ -165,7 +165,6 @@ - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Subsurface/Content/Items/Weapons/weapons.xml b/Subsurface/Content/Items/Weapons/weapons.xml index b3b9450b4..02975be2a 100644 --- a/Subsurface/Content/Items/Weapons/weapons.xml +++ b/Subsurface/Content/Items/Weapons/weapons.xml @@ -175,7 +175,7 @@ tags="weapon" description="HONK"> - + diff --git a/Subsurface/Data/ContentPackages/Vanilla 0.3.xml b/Subsurface/Data/ContentPackages/Vanilla 0.3.xml index 7c02ddc28..a2fcd44e4 100644 --- a/Subsurface/Data/ContentPackages/Vanilla 0.3.xml +++ b/Subsurface/Data/ContentPackages/Vanilla 0.3.xml @@ -4,7 +4,11 @@ - + + + + + diff --git a/Subsurface/Source/Characters/CharacterHUD.cs b/Subsurface/Source/Characters/CharacterHUD.cs index e13f11d7c..3c7b9c839 100644 --- a/Subsurface/Source/Characters/CharacterHUD.cs +++ b/Subsurface/Source/Characters/CharacterHUD.cs @@ -62,10 +62,12 @@ namespace Barotrauma { var item = character.Inventory.Items[i]; if (item == null || CharacterInventory.limbSlots[i]==LimbSlot.Any) continue; - var statusHUD = item.GetComponent(); - if (statusHUD == null) continue; - - statusHUD.DrawHUD(spriteBatch, character); + //var statusHUD = item.GetComponent(); + //if (statusHUD == null) continue; + foreach (ItemComponent ic in item.components) + { + if (ic.DrawHudWhenEquipped) ic.DrawHUD(spriteBatch, character); + } } } diff --git a/Subsurface/Source/Items/Components/ItemComponent.cs b/Subsurface/Source/Items/Components/ItemComponent.cs index 25b986577..fdf50d5bc 100644 --- a/Subsurface/Source/Items/Components/ItemComponent.cs +++ b/Subsurface/Source/Items/Components/ItemComponent.cs @@ -111,6 +111,13 @@ namespace Barotrauma.Items.Components set { canBePicked = value; } } + [HasDefaultValue(false, false)] + public bool DrawHudWhenEquipped + { + get; + private set; + } + [HasDefaultValue(false, false)] public bool CanBeSelected { diff --git a/Subsurface/Source/Items/Components/Machines/Radar.cs b/Subsurface/Source/Items/Components/Machines/Radar.cs index 31dd944ca..368963422 100644 --- a/Subsurface/Source/Items/Components/Machines/Radar.cs +++ b/Subsurface/Source/Items/Components/Machines/Radar.cs @@ -3,8 +3,6 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Xml.Linq; using Voronoi2; @@ -16,7 +14,7 @@ namespace Barotrauma.Items.Components private float pingState; - private Sprite pingCircle, screenOverlay; + private readonly Sprite pingCircle, screenOverlay; private GUITickBox isActiveTickBox; @@ -30,6 +28,13 @@ namespace Barotrauma.Items.Components set { range = MathHelper.Clamp(value, 0.0f, 100000.0f); } } + [HasDefaultValue(false, false)] + public bool DetectSubmarineWalls + { + get; + set; + } + public Radar(Item item, XElement element) : base(item, element) { @@ -71,7 +76,7 @@ namespace Barotrauma.Items.Components if (radarBlips[i].FadeTimer <= 0.0f) radarBlips.RemoveAt(i); } - if (voltage >= minVoltage) + if (voltage >= minVoltage || powerConsumption <= 0.0f) { pingState = pingState + deltaTime * 0.5f; if (pingState>1.0f) @@ -87,7 +92,7 @@ namespace Barotrauma.Items.Components pingState = 0.0f; } - voltage -= deltaTime; + Voltage -= deltaTime; } public override bool Use(float deltaTime, Character character = null) @@ -101,7 +106,7 @@ namespace Barotrauma.Items.Components GuiFrame.Update(1.0f / 60.0f); GuiFrame.Draw(spriteBatch); - if (voltage < minVoltage) return; + if (voltage < minVoltage && powerConsumption > 0.0f) return; int radius = GuiFrame.Rect.Height / 2 - 30; DrawRadar(spriteBatch, new Rectangle((int)GuiFrame.Center.X - radius, (int)GuiFrame.Center.Y - radius, radius * 2, radius * 2)); @@ -113,23 +118,59 @@ namespace Barotrauma.Items.Components if (!IsActive) return; - float pingRadius = (rect.Width / 2) * pingState; - pingCircle.Draw(spriteBatch, center, Color.White * (1.0f-pingState), 0.0f, (rect.Width/pingCircle.size.X)*pingState); - + float pingRadius = (rect.Width / 2.0f) * pingState; + pingCircle.Draw(spriteBatch, center, Color.White * (1.0f - pingState), 0.0f, (rect.Width / pingCircle.size.X) * pingState); + float radius = rect.Width / 2.0f; - float displayScale = radius/range; + float displayScale = radius / range; + if (DetectSubmarineWalls) + { + for (int i = 0; i < Submarine.Loaded.HullVertices.Count; i++) + { + Vector2 start = ConvertUnits.ToDisplayUnits(Submarine.Loaded.HullVertices[i]); + Vector2 end = ConvertUnits.ToDisplayUnits(Submarine.Loaded.HullVertices[(i + 1) % Submarine.Loaded.HullVertices.Count]); + + if (item.CurrentHull!=null) + { + start += Rand.Vector(500.0f); + end += Rand.Vector(500.0f); + } + + CreateBlipsForLine( + start + Submarine.Loaded.WorldPosition, + end + Submarine.Loaded.WorldPosition, + radius, displayScale, 2.0f); + } + + } + else + { + float simScale = ConvertUnits.ToSimUnits(displayScale); + + Vector2 offset = ConvertUnits.ToSimUnits(Submarine.Loaded.WorldPosition - item.WorldPosition); + + for (int i = 0; i < Submarine.Loaded.HullVertices.Count; i++) + { + Vector2 start = (Submarine.Loaded.HullVertices[i] + offset) * simScale; + start.Y = -start.Y; + Vector2 end = (Submarine.Loaded.HullVertices[(i + 1) % Submarine.Loaded.HullVertices.Count] + offset) * simScale; + end.Y = -end.Y; + + GUI.DrawLine(spriteBatch, center + start, center + end, Color.Green); + + } + } - float simScale = 1.5f; + - if (Level.Loaded != null) + if (Level.Loaded != null && (item.CurrentHull==null || !DetectSubmarineWalls)) { List cells = Level.Loaded.GetCells(item.WorldPosition, 7); foreach (VoronoiCell cell in cells) { - foreach (GraphEdge edge in cell.edges) { if (!edge.isSolid) continue; @@ -140,59 +181,15 @@ namespace Barotrauma.Items.Components Vector2.Normalize(edge.point1 - edge.point2), Vector2.Normalize(cell.Center-item.WorldPosition)); - //if (Math.Abs(facingDot) > 0.5f) continue; - - //facingDot = 1.0f;// MathHelper.Clamp(facingDot, -1.0f, 1.0f); - - float length = (edge.point1 - edge.point2).Length(); - for (float x = 0; x < length; x += Rand.Range(300.0f, 400.0f)) - { - Vector2 point = edge.point1 + Vector2.Normalize(edge.point2 - edge.point1) * x; - point += cell.Translation; - - float pointDist = Vector2.Distance(item.WorldPosition, point) * displayScale; - - if (pointDist > radius) continue; - if (pointDist < prevPingRadius || pointDist > pingRadius) continue; - - - float step = 3.0f * (Math.Abs(facingDot) + 1.0f); - float alpha = Rand.Range(1.5f, 2.0f); - for (float z = 0; z < radius - pointDist; z += step) - { - - var blip = new RadarBlip( - point + Rand.Vector(150.0f) + Vector2.Normalize(point-item.WorldPosition) * z / displayScale, - alpha); - - radarBlips.Add(blip); - step += 0.5f; - alpha -= (z == 0) ? 0.5f : 0.1f; - } - - } + CreateBlipsForLine(edge.point1 + cell.Translation, edge.point2+cell.Translation, radius, displayScale, 3.0f * (Math.Abs(facingDot) + 1.0f)); } } - - for (int i = 0; i < Submarine.Loaded.HullVertices.Count; i++) - { - Vector2 start = (Submarine.Loaded.HullVertices[i] - ConvertUnits.ToSimUnits(item.Position - Submarine.HiddenSubPosition)) * simScale; - start.Y = -start.Y; - Vector2 end = (Submarine.Loaded.HullVertices[(i + 1) % Submarine.Loaded.HullVertices.Count] - ConvertUnits.ToSimUnits(item.Position - Submarine.HiddenSubPosition)) * simScale; - end.Y = -end.Y; - - Vector2 diff = end - start; - for (float x = 0; x < diff.Length(); x += 4.0f) - { - GUI.DrawLine(spriteBatch, center + start, center + end, Color.Green); - } - } - } foreach (Character c in Character.CharacterList) { if (c.AnimController.CurrentHull != null) continue; + if (DetectSubmarineWalls && c.AnimController.CurrentHull == null && item.CurrentHull != null) continue; foreach (Limb limb in c.AnimController.Limbs) { @@ -272,7 +269,42 @@ namespace Barotrauma.Items.Components prevPos = pos; } + } + private void CreateBlipsForLine(Vector2 point1, Vector2 point2, float radius, float displayScale, float step) + { + float pingRadius = radius * pingState; + + float length = (point1 - point2).Length(); + + Vector2 lineDir = (point2 - point1) / length; + + for (float x = 0; x < length; x += Rand.Range(300.0f, 400.0f)) + { + Vector2 point = point1 + lineDir * x; + //point += cell.Translation; + + float pointDist = Vector2.Distance(item.WorldPosition, point) * displayScale; + + if (pointDist > radius) continue; + if (pointDist < prevPingRadius || pointDist > pingRadius) continue; + + + //float step = 3.0f * (Math.Abs(facingDot) + 1.0f); + float alpha = Rand.Range(1.5f, 2.0f); + for (float z = 0; z < radius - pointDist; z += step) + { + + var blip = new RadarBlip( + point + Rand.Vector(150.0f) + Vector2.Normalize(point - item.WorldPosition) * z / displayScale, + alpha); + + radarBlips.Add(blip); + step += 0.5f; + alpha -= (z == 0) ? 0.5f : 0.1f; + } + + } } private void DrawBlip(SpriteBatch spriteBatch, RadarBlip blip, Vector2 center, Color color, float radius) diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Subsurface/Source/Items/Components/Machines/Reactor.cs index 8f6e18cd5..fa835f642 100644 --- a/Subsurface/Source/Items/Components/Machines/Reactor.cs +++ b/Subsurface/Source/Items/Components/Machines/Reactor.cs @@ -225,7 +225,7 @@ namespace Barotrauma.Items.Components fissionRate = Math.Min(fissionRate, AvailableFuel); - float heat = 100 * fissionRate * (AvailableFuel/2000.0f); + float heat = 80 * fissionRate * (AvailableFuel/2000.0f); float heatDissipation = 50 * coolingRate + Math.Max(ExtraCooling, 5.0f); float deltaTemp = (((heat - heatDissipation) * 5) - temperature) / 10000.0f; @@ -288,9 +288,12 @@ namespace Barotrauma.Items.Components } else if (autoTemp) { - fissionRate = Math.Min(load / 200.0f, shutDownTemp); - //float target = Math.Min(targetTemp, load); - CoolingRate = coolingRate + (temperature - Math.Min(load, shutDownTemp) + deltaTemp)*0.1f; + //take deltaTemp into account to slow down the change in temperature when getting closer to the desired value + float target = temperature + deltaTemp * 100.0f; + + //-1.0f in order to gradually turn down both rates when the target temperature is reached + FissionRate += (MathHelper.Clamp(load - target, -10.0f, 10.0f) - 1.0f) * deltaTime; + CoolingRate += (MathHelper.Clamp(target - load, -5.0f, 5.0f) - 1.0f) * deltaTime; } //fission rate can't be lowered below a certain amount if the core is too hot diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index ef7b6d4ff..90f39e1f2 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -18,7 +18,7 @@ namespace Barotrauma public enum ActionType { - Always, OnPicked, OnWearing, OnContaining, OnContained, OnActive, OnUse, OnFailure, OnBroken, OnFire + Always, OnPicked, OnWearing, OnContaining, OnContained, OnActive, OnUse, OnFailure, OnBroken, OnFire, InWater } class Item : MapEntity, IDamageable, IPropertyObject @@ -646,7 +646,7 @@ namespace Barotrauma ic.WasUsed = false; if (Container != null) ic.ApplyStatusEffects(ActionType.OnContained, deltaTime); - + if (!ic.IsActive) continue; if (condition > 0.0f) @@ -660,7 +660,11 @@ namespace Barotrauma { ic.UpdateBroken(deltaTime, cam); } - } + } + + + inWater = IsInWater(); + if (inWater) ApplyStatusEffects(ActionType.InWater, deltaTime); if (body == null || !body.Enabled) return; @@ -681,8 +685,6 @@ namespace Barotrauma body.MoveToTargetPosition(); - inWater = IsInWater(); - if (!inWater || Container != null || body == null) return; if (body.LinearVelocity != Vector2.Zero && body.LinearVelocity.Length() > 1000.0f) @@ -692,7 +694,6 @@ namespace Barotrauma ApplyWaterForces(); - //TODO: make sure items stay in sync between clients before letting flowing water move items if(CurrentHull != null) CurrentHull.ApplyFlowForces(deltaTime, this); } diff --git a/Subsurface/Source/Map/Levels/LevelRenderer.cs b/Subsurface/Source/Map/Levels/LevelRenderer.cs index 577ce74a3..fe526f726 100644 --- a/Subsurface/Source/Map/Levels/LevelRenderer.cs +++ b/Subsurface/Source/Map/Levels/LevelRenderer.cs @@ -156,35 +156,34 @@ namespace Barotrauma public void Draw(SpriteBatch spriteBatch) { - Vector2 pos = new Vector2(0.0f, -level.Size.Y);// level.EndPosition; - - var cells = level.GetCells(GameMain.GameScreen.Cam.WorldViewCenter, 2); - foreach (VoronoiCell cell in cells) + if (GameMain.DebugDraw) { - GUI.DrawRectangle(spriteBatch, new Vector2(cell.Center.X - 10.0f, -cell.Center.Y-10.0f), new Vector2(20.0f, 20.0f), Color.Cyan, true); + var cells = level.GetCells(GameMain.GameScreen.Cam.WorldViewCenter, 2); + foreach (VoronoiCell cell in cells) + { + GUI.DrawRectangle(spriteBatch, new Vector2(cell.Center.X - 10.0f, -cell.Center.Y-10.0f), new Vector2(20.0f, 20.0f), Color.Cyan, true); - GUI.DrawLine(spriteBatch, - new Vector2(cell.edges[0].point1.X, -cell.edges[0].point1.Y), - new Vector2(cell.Center.X, -cell.Center.Y), - Color.White); + GUI.DrawLine(spriteBatch, + new Vector2(cell.edges[0].point1.X, -cell.edges[0].point1.Y), + new Vector2(cell.Center.X, -cell.Center.Y), + Color.White); - foreach (GraphEdge edge in cell.edges) - { - //GUI.DrawLine(spriteBatch, - // new Vector2(edge.point1.X, -edge.point1.Y), - // new Vector2(cell.Center.X, -cell.Center.Y), - // Color.White); + foreach (GraphEdge edge in cell.edges) + { + GUI.DrawLine(spriteBatch, new Vector2(edge.point1.X, -edge.point1.Y), + new Vector2(edge.point2.X, -edge.point2.Y), Color.White); + } - GUI.DrawLine(spriteBatch, new Vector2(edge.point1.X, -edge.point1.Y), - new Vector2(edge.point2.X, -edge.point2.Y), Color.White); - } - - foreach (Vector2 point in cell.bodyVertices) - { - GUI.DrawRectangle(spriteBatch, new Vector2(point.X, -point.Y), new Vector2(10.0f, 10.0f), Color.White, true); - } + foreach (Vector2 point in cell.bodyVertices) + { + GUI.DrawRectangle(spriteBatch, new Vector2(point.X, -point.Y), new Vector2(10.0f, 10.0f), Color.White, true); + } + } } + + Vector2 pos = new Vector2(0.0f, -level.Size.Y);// level.EndPosition; + if (GameMain.GameScreen.Cam.WorldView.Y < -pos.Y - 512) return; pos.X = GameMain.GameScreen.Cam.WorldView.X -512.0f; @@ -197,8 +196,6 @@ namespace Barotrauma Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 0.0f); - - }