Using filename as sub name, disposing convexhull vertexbuffers when removing, canceling networkplayer ladder climbing only if movement key pressed

This commit is contained in:
Regalis
2016-01-29 00:08:17 +02:00
parent f5c2dbf22a
commit a1770427a0
5 changed files with 53 additions and 27 deletions

View File

@@ -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))
{

View File

@@ -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<LightSource, CachedShadow> 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<LightSource, CachedShadow> cachedShadow in cachedShadows)
{
cachedShadow.Value.Dispose();
}
cachedShadows.Clear();
ClearCachedShadows();
list.Remove(this);
}

View File

@@ -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())
{

View File

@@ -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();

View File

@@ -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)
{