diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj index b4383195e..abdbe0bb7 100644 --- a/Subsurface/Barotrauma.csproj +++ b/Subsurface/Barotrauma.csproj @@ -1177,6 +1177,39 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest diff --git a/Subsurface/Content/Characters/Moloch/moloch.xml b/Subsurface/Content/Characters/Moloch/moloch.xml index a1bcb33b2..17f78f8f3 100644 --- a/Subsurface/Content/Characters/Moloch/moloch.xml +++ b/Subsurface/Content/Characters/Moloch/moloch.xml @@ -9,7 +9,7 @@ - + diff --git a/Subsurface/Content/Items/Button/button.xml b/Subsurface/Content/Items/Button/button.xml index 3971265a6..0f4a2f65b 100644 --- a/Subsurface/Content/Items/Button/button.xml +++ b/Subsurface/Content/Items/Button/button.xml @@ -25,7 +25,7 @@ - diff --git a/Subsurface/Content/Items/Electricity/signalitems.xml b/Subsurface/Content/Items/Electricity/signalitems.xml index 6a828cdfe..f07443f88 100644 --- a/Subsurface/Content/Items/Electricity/signalitems.xml +++ b/Subsurface/Content/Items/Electricity/signalitems.xml @@ -123,7 +123,7 @@ - @@ -158,7 +158,7 @@ - @@ -192,7 +192,7 @@ - @@ -226,7 +226,8 @@ - + @@ -258,7 +259,7 @@ - @@ -289,7 +290,7 @@ - @@ -320,7 +321,7 @@ - @@ -354,7 +355,7 @@ - @@ -386,7 +387,7 @@ - diff --git a/Subsurface/Content/Items/Reactor/reactor.xml b/Subsurface/Content/Items/Reactor/reactor.xml index e2c291d3a..caa3ed36a 100644 --- a/Subsurface/Content/Items/Reactor/reactor.xml +++ b/Subsurface/Content/Items/Reactor/reactor.xml @@ -62,7 +62,7 @@ - + @@ -81,7 +81,7 @@ - + diff --git a/Subsurface/Content/Sounds/Water/Splash0.ogg b/Subsurface/Content/Sounds/Water/Splash0.ogg new file mode 100644 index 000000000..e5f50e7d5 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash0.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash1.ogg b/Subsurface/Content/Sounds/Water/Splash1.ogg new file mode 100644 index 000000000..b7f09d2bf Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash1.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash2.ogg b/Subsurface/Content/Sounds/Water/Splash2.ogg new file mode 100644 index 000000000..359b7c44f Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash2.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash3.ogg b/Subsurface/Content/Sounds/Water/Splash3.ogg new file mode 100644 index 000000000..d7435eee2 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash3.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash4.ogg b/Subsurface/Content/Sounds/Water/Splash4.ogg new file mode 100644 index 000000000..9b18307d4 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash4.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash5.ogg b/Subsurface/Content/Sounds/Water/Splash5.ogg new file mode 100644 index 000000000..8fa7528e9 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash5.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash6.ogg b/Subsurface/Content/Sounds/Water/Splash6.ogg new file mode 100644 index 000000000..c972e2846 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash6.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash7.ogg b/Subsurface/Content/Sounds/Water/Splash7.ogg new file mode 100644 index 000000000..190664044 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash7.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash8.ogg b/Subsurface/Content/Sounds/Water/Splash8.ogg new file mode 100644 index 000000000..883767bd3 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash8.ogg differ diff --git a/Subsurface/Content/Sounds/Water/Splash9.ogg b/Subsurface/Content/Sounds/Water/Splash9.ogg new file mode 100644 index 000000000..6231a0ad7 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/Splash9.ogg differ diff --git a/Subsurface/Content/Sounds/Water/splashLoop.ogg b/Subsurface/Content/Sounds/Water/splashLoop.ogg new file mode 100644 index 000000000..90fea1234 Binary files /dev/null and b/Subsurface/Content/Sounds/Water/splashLoop.ogg differ diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Subsurface/Source/Characters/Animation/Ragdoll.cs index d08e1f80c..f43ac934f 100644 --- a/Subsurface/Source/Characters/Animation/Ragdoll.cs +++ b/Subsurface/Source/Characters/Animation/Ragdoll.cs @@ -35,6 +35,8 @@ namespace Barotrauma protected double onFloorTimer; + private float splashSoundTimer; + //the movement speed of the ragdoll public Vector2 movement; //the target speed towards which movement is interpolated @@ -382,7 +384,9 @@ namespace Barotrauma } avgVelocity = avgVelocity / Limbs.Count(); - + + if (character.Submarine == null && f2.Body.UserData is Submarine) avgVelocity -= (f2.Body.UserData as Submarine).Velocity; + float impact = Vector2.Dot(avgVelocity, -normal); Limb l = (Limb)f1.Body.UserData; @@ -396,7 +400,7 @@ namespace Barotrauma { if (!character.IsNetworkPlayer) { - character.AddDamage(CauseOfDeath.Damage, impact - l.impactTolerance * 0.1f); + character.AddDamage(CauseOfDeath.Damage, impact - l.impactTolerance * 0.1f, null); strongestImpact = Math.Max(strongestImpact, impact - l.impactTolerance); } @@ -610,6 +614,8 @@ namespace Barotrauma FindLowestLimb(); FindHull(); + + splashSoundTimer -= deltaTime; //ragdoll isn't in any room -> it's in the water if (currentHull == null) @@ -678,11 +684,18 @@ namespace Barotrauma limb.LinearVelocity*0.001f, 0.0f, limbHull); - - //if the Character dropped into water, create a wave if (limb.LinearVelocity.Y<0.0f) { + if (splashSoundTimer <= 0.0f) + { + SoundPlayer.PlaySplashSound(limb.WorldPosition, Math.Abs(limb.LinearVelocity.Y) + Rand.Range(-5.0f, 0.0f)); + splashSoundTimer = 0.5f; + } + + + + //1.0 when the limb is parallel to the surface of the water // = big splash and a large impact float parallel = (float)Math.Abs(Math.Sin(limb.Rotation)); diff --git a/Subsurface/Source/Characters/Limb.cs b/Subsurface/Source/Characters/Limb.cs index d1e8b1684..4b1bf1018 100644 --- a/Subsurface/Source/Characters/Limb.cs +++ b/Subsurface/Source/Characters/Limb.cs @@ -210,7 +210,7 @@ namespace Barotrauma body.CollidesWith = Physics.CollisionAll & ~Physics.CollisionCharacter & ~Physics.CollisionMisc; } - impactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", character.IsHumanoid ? 10.0f : 50.0f); + impactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", 10.0f); body.UserData = this; diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs index d16e443e1..82ac269d5 100644 --- a/Subsurface/Source/DebugConsole.cs +++ b/Subsurface/Source/DebugConsole.cs @@ -274,7 +274,7 @@ namespace Barotrauma case "heal": if (Character.Controlled != null) { - Character.Controlled.AddDamage(CauseOfDeath.Damage, -Character.Controlled.MaxHealth); + Character.Controlled.AddDamage(CauseOfDeath.Damage, -Character.Controlled.MaxHealth, null); Character.Controlled.Oxygen = 100.0f; Character.Controlled.Bleeding = 0.0f; } diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Subsurface/Source/Items/CharacterInventory.cs index 71a9c912d..6791f1133 100644 --- a/Subsurface/Source/Items/CharacterInventory.cs +++ b/Subsurface/Source/Items/CharacterInventory.cs @@ -68,9 +68,7 @@ namespace Barotrauma protected override void DropItem(Item item) { - if (item.body == null) return; - - bool enabled = item.body.Enabled; + bool enabled = item.body!=null && item.body.Enabled; item.Drop(character); if (!enabled) diff --git a/Subsurface/Source/Items/Components/Door.cs b/Subsurface/Source/Items/Components/Door.cs index 7aaedf08b..a291996d2 100644 --- a/Subsurface/Source/Items/Components/Door.cs +++ b/Subsurface/Source/Items/Components/Door.cs @@ -31,6 +31,8 @@ namespace Barotrauma.Items.Components private bool isStuck; + private float lastReceivedMessage; + private float stuck; public float Stuck { @@ -429,22 +431,48 @@ namespace Barotrauma.Items.Components public override void ReceiveSignal(string signal, Connection connection, Item sender, float power=0.0f) { - if (isStuck) return; + if (isStuck || GameMain.Client != null) return; if (connection.Name=="toggle") { - isOpen = !isOpen; - PlaySound(ActionType.OnUse, item.WorldPosition); + SetState(!isOpen, false); } else if (connection.Name == "set_state") { - bool newState = (signal!="0"); - if (isOpen!=newState) PlaySound(ActionType.OnUse, item.WorldPosition); - isOpen = newState; + SetState(signal != "0", false); } + item.NewComponentEvent(this, false, true); + } + + private void SetState(bool state, bool isNetWorkMessage) + { + if (GameMain.Client != null && !isNetWorkMessage) return; + + if (isStuck || isOpen == state) return; + + PlaySound(ActionType.OnUse, item.WorldPosition); + + isOpen = state; + //opening a partially stuck door makes it less stuck - if (isOpen) stuck = MathHelper.Clamp(stuck-30.0f, 0.0f, 100.0f); + if (isOpen) stuck = MathHelper.Clamp(stuck - 30.0f, 0.0f, 100.0f); + } + + public override bool FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) + { + message.Write(isOpen); + + return true; + } + + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message, float sendingTime) + { + if (sendingTime < lastReceivedMessage) return; + + lastReceivedMessage = sendingTime; + + SetState(message.ReadBoolean(), true); } } } diff --git a/Subsurface/Source/Items/Components/Holdable/Holdable.cs b/Subsurface/Source/Items/Components/Holdable/Holdable.cs index 97770fc74..668ce26f1 100644 --- a/Subsurface/Source/Items/Components/Holdable/Holdable.cs +++ b/Subsurface/Source/Items/Components/Holdable/Holdable.cs @@ -13,7 +13,7 @@ namespace Barotrauma.Items.Components private List prevRequiredItems; string prevMsg; - + //the distance from the holding characters elbow to center of the physics body of the item protected Vector2 holdPos; @@ -72,7 +72,7 @@ namespace Barotrauma.Items.Components [HasDefaultValue(0.0f, false)] public float HoldAngle { - get { return MathHelper.ToDegrees(holdAngle); } + get { return MathHelper.ToDegrees(holdAngle); } set { holdAngle = MathHelper.ToRadians(value); } } @@ -101,7 +101,7 @@ namespace Barotrauma.Items.Components Msg = ""; } - if (attachedByDefault || (Screen.Selected == GameMain.EditMapScreen && Submarine.Loaded!=null)) Use(1.0f); + if (attachedByDefault || (Screen.Selected == GameMain.EditMapScreen && Submarine.Loaded != null)) Use(1.0f); //holdAngle = ToolBox.GetAttributeFloat(element, "holdangle", 0.0f); @@ -110,12 +110,15 @@ namespace Barotrauma.Items.Components public override void Drop(Character dropper) { + + if (body != null) item.body = body; + if (item.body != null) item.body.Enabled = true; IsActive = false; if (picker == null) { - if (dropper==null) return; + if (dropper == null) return; picker = dropper; } if (picker.Inventory == null) return; @@ -138,7 +141,7 @@ namespace Barotrauma.Items.Components if (item.body == null) { - if (body!=null) + if (body != null) { item.body = body; } @@ -151,7 +154,7 @@ namespace Barotrauma.Items.Components if (!item.body.Enabled) { Limb rightHand = picker.AnimController.GetLimb(LimbType.RightHand); - item.SetTransform(rightHand.SimPosition, 0.0f); + item.SetTransform(rightHand.SimPosition, 0.0f); } if (picker.TrySelectItem(item)) @@ -166,7 +169,7 @@ namespace Barotrauma.Items.Components if (picker == null) return; picker.DeselectItem(item); - + item.body.Enabled = false; IsActive = false; } @@ -189,7 +192,7 @@ namespace Barotrauma.Items.Components } attached = false; - if (body!=null) item.body = body; + if (body != null) item.body = body; //item.body.Enabled = true; return true; @@ -197,13 +200,13 @@ namespace Barotrauma.Items.Components public override bool Use(float deltaTime, Character character = null) { - if (!attachable || item.body==null) return true; + if (!attachable || item.body == null) return true; if (character != null && !character.IsKeyDown(InputType.Aim)) return false; item.Drop(); var containedItems = item.ContainedItems; - if (containedItems!=null) + if (containedItems != null) { foreach (Item contained in containedItems) { @@ -231,12 +234,12 @@ namespace Barotrauma.Items.Components } public override void Update(float deltaTime, Camera cam) - { + { if (!item.body.Enabled) return; if (!picker.HasSelectedItem(item)) IsActive = false; ApplyStatusEffects(ActionType.OnActive, deltaTime, picker); - + if (item.body.Dir != picker.AnimController.Dir) Flip(item); AnimController ac = picker.AnimController; @@ -246,8 +249,8 @@ namespace Barotrauma.Items.Components //item.sprite.Depth = picker.AnimController.GetLimb(LimbType.RightHand).sprite.Depth + 0.01f; ac.HoldItem(deltaTime, item, handlePos, holdPos, aimPos, picker.IsKeyDown(InputType.Aim), holdAngle); - } - + } + protected void Flip(Item item) { handlePos[0].X = -handlePos[0].X; @@ -267,7 +270,7 @@ namespace Barotrauma.Items.Components } else { - if (item.Inventory!=null) + if (item.Inventory != null) { if (body != null) { @@ -300,7 +303,7 @@ namespace Barotrauma.Items.Components } catch - { + { return; } diff --git a/Subsurface/Source/Items/Components/Holdable/Pickable.cs b/Subsurface/Source/Items/Components/Holdable/Pickable.cs index df5a0adc1..3589ba016 100644 --- a/Subsurface/Source/Items/Components/Holdable/Pickable.cs +++ b/Subsurface/Source/Items/Components/Holdable/Pickable.cs @@ -1,4 +1,7 @@ -using System; +using Barotrauma.Networking; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System; using System.Collections.Generic; using System.Xml.Linq; @@ -10,6 +13,9 @@ namespace Barotrauma.Items.Components protected List allowedSlots; + private float pickTimer; + + public List AllowedSlots { get { return allowedSlots; } @@ -50,20 +56,49 @@ namespace Barotrauma.Items.Components public override bool Pick(Character picker) { - if (picker == null) return false; - if (picker.Inventory == null) return false; + //return if someone is already trying to pick the item + if (pickTimer>0.0f) return false; + if (picker == null || picker.Inventory == null) return false; - if (picker.Inventory.TryPutItem(item, allowedSlots, picker==Character.Controlled)) + if (PickingTime>0.0f) { - if (!picker.HasSelectedItem(item) && item.body!=null) item.body.Enabled = false; + CoroutineManager.StartCoroutine(WaitForPick(picker, PickingTime)); + + //create a networkevent here, because the item doesn't count as picked yet and the character won't create one + new NetworkEvent(NetworkEventType.PickItem, picker.ID, true, + new int[] + { + item.ID, + picker.IsKeyHit(InputType.Select) ? 1 : 0, + picker.IsKeyHit(InputType.Use) ? 1 : 0 + }); + + + return false; + } + else + { + return OnPicked(picker); + } + + + } + + private bool OnPicked(Character picker) + { + if (picker.Inventory.TryPutItem(item, allowedSlots, picker == Character.Controlled)) + { + if (!picker.HasSelectedItem(item) && item.body != null) item.body.Enabled = false; this.picker = picker; for (int i = item.linkedTo.Count - 1; i >= 0; i--) + { item.linkedTo[i].RemoveLinked(item); + } item.linkedTo.Clear(); var connectionPanel = item.GetComponent(); - if (connectionPanel!=null) + if (connectionPanel != null) { foreach (Connection c in connectionPanel.Connections) { @@ -72,7 +107,7 @@ namespace Barotrauma.Items.Components if (w == null) continue; w.Item.Drop(picker); - w.Item.SetTransform(item.SimPosition, 0.0f); + w.Item.SetTransform(picker.SimPosition, 0.0f); } } } @@ -90,6 +125,63 @@ namespace Barotrauma.Items.Components return false; } + private IEnumerable WaitForPick(Character picker, float requiredTime) + { + var leftHand = picker.AnimController.GetLimb(LimbType.LeftHand); + var rightHand = picker.AnimController.GetLimb(LimbType.RightHand); + + + pickTimer = 0.0f; + while (pickTimer < requiredTime) + { + if (picker.IsKeyHit(InputType.Aim) || !item.IsInPickRange(picker.WorldPosition)) + { + StopPicking(picker); + yield return CoroutineStatus.Success; + } + + picker.AnimController.Anim = AnimController.Animation.UsingConstruction; + + picker.AnimController.TargetMovement = Vector2.Zero; + + leftHand.Disabled = true; + leftHand.pullJoint.Enabled = true; + leftHand.pullJoint.WorldAnchorB = item.SimPosition + Vector2.UnitY * (float)Math.Sin(pickTimer*10.0f)*0.1f; + + rightHand.Disabled = true; + rightHand.pullJoint.Enabled = true; + rightHand.pullJoint.WorldAnchorB = item.SimPosition + Vector2.UnitY * (float)Math.Sin(pickTimer*10.0f) * 0.1f; + + pickTimer += CoroutineManager.DeltaTime; + + yield return CoroutineStatus.Running; + } + + StopPicking(picker); + + OnPicked(picker); + + yield return CoroutineStatus.Success; + } + + private void StopPicking(Character picker) + { + picker.AnimController.Anim = AnimController.Animation.None; + pickTimer = 0.0f; + } + + + public override void Draw(SpriteBatch spriteBatch, bool editing = false) + { + if (pickTimer <= 0.0f) return; + + float progressBarWidth = 100.0f; + + GUI.DrawProgressBar(spriteBatch, item.DrawPosition + new Vector2(-progressBarWidth/2.0f, 50.0f), new Vector2(progressBarWidth, 15.0f), + pickTimer / PickingTime, + Color.Lerp(Color.Red, Color.Green, pickTimer / PickingTime)); + } + public override void Drop(Character dropper) { if (picker == null) diff --git a/Subsurface/Source/Items/Components/ItemComponent.cs b/Subsurface/Source/Items/Components/ItemComponent.cs index eaa6d88a7..cd6e4e2b4 100644 --- a/Subsurface/Source/Items/Components/ItemComponent.cs +++ b/Subsurface/Source/Items/Components/ItemComponent.cs @@ -67,6 +67,13 @@ namespace Barotrauma.Items.Components public ItemComponent Parent; + [HasDefaultValue(0.0f, false)] + public float PickingTime + { + get; + private set; + } + public readonly Dictionary properties; public Dictionary ObjectProperties { diff --git a/Subsurface/Source/Items/ItemInventory.cs b/Subsurface/Source/Items/ItemInventory.cs index 2588697b1..694f731c8 100644 --- a/Subsurface/Source/Items/ItemInventory.cs +++ b/Subsurface/Source/Items/ItemInventory.cs @@ -16,7 +16,7 @@ namespace Barotrauma protected override void DropItem(Item item) { item.Drop(); - item.body.Enabled = true; + if (item.body != null) item.body.Enabled = true; item.SetTransform(container.Item.SimPosition, 0.0f); } diff --git a/Subsurface/Source/Map/SubmarineBody.cs b/Subsurface/Source/Map/SubmarineBody.cs index 381f08f59..116675693 100644 --- a/Subsurface/Source/Map/SubmarineBody.cs +++ b/Subsurface/Source/Map/SubmarineBody.cs @@ -159,7 +159,7 @@ namespace Barotrauma body.SleepingAllowed = false; body.IgnoreGravity = true; body.OnCollision += OnCollision; - //body.UserData = this; + body.UserData = submarine; } diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 3c9bef4e3..c5cd7fc62 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -25,7 +25,7 @@ namespace Barotrauma.Networking private bool started; private NetServer server; - private NetPeerConfiguration config; + private NetPeerConfiguration config; private DateTime sparseUpdateTimer; private DateTime refreshMasterTimer; diff --git a/Subsurface/Source/Sounds/SoundPlayer.cs b/Subsurface/Source/Sounds/SoundPlayer.cs index 66f666de7..e5e410de5 100644 --- a/Subsurface/Source/Sounds/SoundPlayer.cs +++ b/Subsurface/Source/Sounds/SoundPlayer.cs @@ -10,11 +10,13 @@ using System.Collections.Generic; namespace Barotrauma { - public enum DamageSoundType { + public enum DamageSoundType + { None, StructureBlunt, StructureSlash, LimbBlunt, LimbSlash, LimbArmor, - Implode, Pressure } + Implode, Pressure + } public struct DamageSound { @@ -53,6 +55,8 @@ namespace Barotrauma { public static Sound[] flowSounds = new Sound[3]; + public static Sound[] SplashSounds = new Sound[10]; + public static float MusicVolume = 1.0f; private const float MusicLerpSpeed = 0.1f; @@ -60,6 +64,7 @@ namespace Barotrauma private static Sound[] waterAmbiences = new Sound[2]; private static int[] waterAmbienceIndexes = new int[2]; + private static DamageSound[] damageSounds; private static BackgroundMusic currentMusic; @@ -97,6 +102,12 @@ namespace Barotrauma flowSounds[2] = Sound.Load("Content/Sounds/Water/FlowLarge.ogg", false); yield return CoroutineStatus.Running; + for (int i = 0; i < 10; i++ ) + { + SplashSounds[i] = Sound.Load("Content/Sounds/Water/Splash"+(i)+".ogg", false); + yield return CoroutineStatus.Running; + } + XDocument doc = ToolBox.TryLoadXml("Content/Sounds/sounds.xml"); if (doc == null) yield return CoroutineStatus.Failure; @@ -282,6 +293,13 @@ namespace Barotrauma } } + public static void PlaySplashSound(Vector2 worldPosition, float strength) + { + int splashIndex = MathHelper.Clamp((int)(strength + Rand.Range(-2,2)), 0, SplashSounds.Length-1); + + SplashSounds[splashIndex].Play(1.0f, 800.0f, worldPosition); + } + public static void PlayDamageSound(DamageSoundType damageType, float damage, PhysicsBody body) { Vector2 bodyPosition = body.DrawPosition; diff --git a/Subsurface_Solution.sln b/Subsurface_Solution.sln index 9f1d2096f..742e21adf 100644 --- a/Subsurface_Solution.sln +++ b/Subsurface_Solution.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.23107.0 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Barotrauma", "Subsurface\Barotrauma.csproj", "{008C0F83-E914-4966-9135-EA885059EDD8}" EndProject diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index 614a01d49..09dc59b9c 100644 Binary files a/Subsurface_Solution.v12.suo and b/Subsurface_Solution.v12.suo differ