Handheld sonars only consume batteries when they're on, endworms aren't "flipped" when they turn around, every limb is checked in SubmarineBody.DisplaceCharacters (instead of just reflimb)

This commit is contained in:
Regalis
2016-04-24 20:31:26 +03:00
parent d4816c3ee9
commit c08029dea8
8 changed files with 52 additions and 32 deletions
@@ -17,7 +17,7 @@ namespace Barotrauma
private bool rotateTowardsMovement;
private bool flip;
private bool mirror, flip;
private float flipTimer;
@@ -29,7 +29,8 @@ namespace Barotrauma
waveAmplitude = ConvertUnits.ToSimUnits(ToolBox.GetAttributeFloat(element, "waveamplitude", 0.0f));
waveLength = ConvertUnits.ToSimUnits(ToolBox.GetAttributeFloat(element, "wavelength", 0.0f));
flip = ToolBox.GetAttributeBool(element, "flip", false);
flip = ToolBox.GetAttributeBool(element, "flip", true);
mirror = ToolBox.GetAttributeBool(element, "mirror", false);
float footRot = ToolBox.GetAttributeFloat(element,"footrotation", float.NaN);
if (float.IsNaN(footRot))
@@ -82,7 +83,7 @@ namespace Barotrauma
}
}
if (flip)
if (mirror)
{
if (!character.IsNetworkPlayer)
{
@@ -117,6 +118,8 @@ namespace Barotrauma
}
//if (stunTimer > gameTime.TotalGameTime.TotalMilliseconds) return;
if (!flip) return;
flipTimer += deltaTime;
if (TargetDir != dir)
@@ -124,7 +127,7 @@ namespace Barotrauma
if (flipTimer>1.0f || character.IsNetworkPlayer)
{
Flip();
if (flip) Mirror();
if (mirror) Mirror();
flipTimer = 0.0f;
}
}
@@ -112,8 +112,8 @@ namespace Barotrauma
set
{
if (!MathUtils.IsValid(value)) return;
targetMovement.X = MathHelper.Clamp(value.X, -3.0f, 3.0f);
targetMovement.Y = MathHelper.Clamp(value.Y, -3.0f, 3.0f);
targetMovement.X = MathHelper.Clamp(value.X, -5.0f, 5.0f);
targetMovement.Y = MathHelper.Clamp(value.Y, -5.0f, 5.0f);
}
}
@@ -152,6 +152,8 @@ namespace Barotrauma
get { return headInWater; }
}
public readonly bool CanEnterSubmarine;
public Hull CurrentHull
{
get { return currentHull; }
@@ -213,6 +215,8 @@ namespace Barotrauma
torsoPosition = ToolBox.GetAttributeFloat(element, "torsoposition", 50.0f);
torsoPosition = ConvertUnits.ToSimUnits(torsoPosition);
torsoAngle = MathHelper.ToRadians(ToolBox.GetAttributeFloat(element, "torsoangle", 0.0f));
CanEnterSubmarine = ToolBox.GetAttributeBool(element, "canentersubmarine", true);
foreach (XElement subElement in element.Elements())
{
@@ -272,6 +276,8 @@ namespace Barotrauma
if (refLimb == null) refLimb = GetLimb(LimbType.Head);
if (refLimb == null) DebugConsole.ThrowError("Character ''" + character + "'' doesn't have a head or torso!");
UpdateCollisionCategories();
foreach (var joint in limbJoints)
{
@@ -550,6 +556,11 @@ namespace Barotrauma
public void FindHull(Vector2? worldPosition = null, bool setSubmarine = true)
{
if (!CanEnterSubmarine)
{
return;
}
Vector2 findPos = worldPosition==null ? refLimb.WorldPosition : (Vector2)worldPosition;
Hull newHull = Hull.FindHull(findPos, currentHull);
@@ -747,7 +758,7 @@ namespace Barotrauma
}
}
if (lerp)
if (lerp)
{
limb.body.TargetPosition = movePos;
limb.body.MoveToTargetPosition(Vector2.Distance(limb.SimPosition, movePos) < 10.0f);