diff --git a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs index 0809000d4..06b255839 100644 --- a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs +++ b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs @@ -716,12 +716,20 @@ namespace Barotrauma } trigger = character.SelectedConstruction.TransformTrigger(trigger); + bool notClimbing = false; + if (character.IsNetworkPlayer) + { + notClimbing = character.IsKeyDown(InputType.Left) || character.IsKeyDown(InputType.Right); + } + else + { + notClimbing = targetMovement.X != 0.0f; + } + //stop climbing if: - // - going too fast (can't grab a ladder while falling) // - moving sideways // - reached the top or bottom of the ladder - if (Math.Abs(torso.LinearVelocity.Y) > 5.0f || - TargetMovement.X != 0.0f || + if (notClimbing || (TargetMovement.Y < 0.0f && ConvertUnits.ToSimUnits(trigger.Height) + handPos.Y < HeadPosition * 1.5f) || (TargetMovement.Y > 0.0f && handPos.Y > 0.1f)) { diff --git a/Subsurface/Source/Map/Lights/ConvexHull.cs b/Subsurface/Source/Map/Lights/ConvexHull.cs index 7a3a315c6..fe8b0692e 100644 --- a/Subsurface/Source/Map/Lights/ConvexHull.cs +++ b/Subsurface/Source/Map/Lights/ConvexHull.cs @@ -133,7 +133,7 @@ namespace Barotrauma.Lights public void Move(Vector2 amount) { - cachedShadows.Clear(); + ClearCachedShadows(); for (int i = 0; i < vertices.Count(); i++) { @@ -145,13 +145,34 @@ namespace Barotrauma.Lights public void SetVertices(Vector2[] points) { - cachedShadows.Clear(); + ClearCachedShadows(); vertices = points; CalculateDimensions(); } + private void RemoveCachedShadow(Lights.LightSource light) + { + CachedShadow shadow = null; + cachedShadows.TryGetValue(light, out shadow); + + if (shadow != null) + { + shadow.Dispose(); + cachedShadows.Remove(light); + } + } + + private void ClearCachedShadows() + { + foreach (KeyValuePair cachedShadow in cachedShadows) + { + cachedShadow.Value.Dispose(); + } + cachedShadows.Clear(); + } + public bool Intersects(Rectangle rect) { Rectangle transformedBounds = boundingBox; @@ -309,7 +330,7 @@ namespace Barotrauma.Lights else { cachedShadow = new CachedShadow(shadowVertices, penumbraVertices, light.Position, shadowVertexCount, 0); - cachedShadows.Remove(light); + RemoveCachedShadow(light); cachedShadows.Add(light, cachedShadow); } } @@ -373,11 +394,7 @@ namespace Barotrauma.Lights public void Remove() { - foreach (KeyValuePair cachedShadow in cachedShadows) - { - cachedShadow.Value.Dispose(); - } - cachedShadows.Clear(); + ClearCachedShadows(); list.Remove(this); } diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index b02b4c92d..f2d4859a1 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -55,7 +55,7 @@ namespace Barotrauma public string Name { get { return name; } - set { name = value; } + //set { name = value; } } public static Vector2 LastPickedPosition @@ -482,6 +482,8 @@ namespace Barotrauma public bool SaveAs(string filePath) { + name = System.IO.Path.GetFileNameWithoutExtension(filePath); + XDocument doc = new XDocument(new XElement("Submarine")); doc.Root.Add(new XAttribute("name", name)); @@ -632,7 +634,7 @@ namespace Barotrauma XDocument doc = OpenDoc(filePath); if (doc == null) return; - name = ToolBox.GetAttributeString(doc.Root, "name", name); + //name = ToolBox.GetAttributeString(doc.Root, "name", name); foreach (XElement element in doc.Root.Elements()) { diff --git a/Subsurface/Source/Program.cs b/Subsurface/Source/Program.cs index 1da42ebc8..33441588a 100644 --- a/Subsurface/Source/Program.cs +++ b/Subsurface/Source/Program.cs @@ -28,11 +28,10 @@ namespace Barotrauma { using (var game = new GameMain()) { -#if !DEBUG +#if !DEBUG try { #endif - game.Run(); #if !DEBUG } @@ -92,7 +91,7 @@ namespace Barotrauma #if WINDOWS MessageBox.Show( "A crash report (''crashreport.txt'') was saved in the root folder of the game."+ " If you'd like to help fix this bug, please post the report on the Undertow Games forums.", - "Oops! Subsurface just crashed.", MessageBoxButtons.OK, MessageBoxIcon.Error); + "Oops! Barotrauma just crashed.", MessageBoxButtons.OK, MessageBoxIcon.Error); #endif Sounds.SoundManager.Dispose(); diff --git a/Subsurface/Source/Screens/EditMapScreen.cs b/Subsurface/Source/Screens/EditMapScreen.cs index b43963d04..b34b2255a 100644 --- a/Subsurface/Source/Screens/EditMapScreen.cs +++ b/Subsurface/Source/Screens/EditMapScreen.cs @@ -274,10 +274,10 @@ namespace Barotrauma return false; } - if (Submarine.Loaded!=null) - { - Submarine.Loaded.Name = nameBox.Text; - } + //if (Submarine.Loaded!=null) + //{ + // Submarine.Loaded.Name = nameBox.Text; + //} Submarine.SaveCurrent(nameBox.Text + ".sub"); @@ -326,15 +326,15 @@ namespace Barotrauma return true; } - private bool ChangeSubName(GUITextBox textBox, string text) - { - if (Submarine.Loaded != null) Submarine.Loaded.Name = text; - textBox.Deselect(); + //private bool ChangeSubName(GUITextBox textBox, string text) + //{ + // if (Submarine.Loaded != null) Submarine.Loaded.Name = text; + // textBox.Deselect(); - textBox.Text = text; + // textBox.Text = text; - return true; - } + // return true; + //} private bool SelectPrefab(GUIComponent component, object obj) {