v0.3.4.2: fixed section bodies not being restored after repairing a wall/window, fixed servers letting all clients in despite a wrong password, game version or content package
This commit is contained in:
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.3.4.1")]
|
[assembly: AssemblyVersion("0.3.4.2")]
|
||||||
[assembly: AssemblyFileVersion("0.3.4.1")]
|
[assembly: AssemblyFileVersion("0.3.4.2")]
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ namespace Barotrauma
|
|||||||
float sectionDamage = wall.SectionDamage(sectionIndex);
|
float sectionDamage = wall.SectionDamage(sectionIndex);
|
||||||
for (int i = sectionIndex - 2; i <= sectionIndex + 2; i++)
|
for (int i = sectionIndex - 2; i <= sectionIndex + 2; i++)
|
||||||
{
|
{
|
||||||
if (wall.SectionHasHole(i))
|
if (wall.SectionBodyDisabled(i))
|
||||||
{
|
{
|
||||||
sectionIndex = i;
|
sectionIndex = i;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -472,8 +472,10 @@ namespace Barotrauma
|
|||||||
foreach (var gap in ConnectedGaps.Where(gap => gap.Open > 0))
|
foreach (var gap in ConnectedGaps.Where(gap => gap.Open > 0))
|
||||||
{
|
{
|
||||||
var pos = gap.Position - body.Position;
|
var pos = gap.Position - body.Position;
|
||||||
|
var distance = MathHelper.Max(Vector2.DistanceSquared(body.Position, gap.Position)/1000,1f);
|
||||||
|
|
||||||
pos.Normalize();
|
pos.Normalize();
|
||||||
body.body.ApplyForce((pos * gap.LerpedFlowForce) * deltaTime);
|
body.body.ApplyForce((pos * (gap.LerpedFlowForce/distance)) * deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,13 +259,13 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (prefab.CastShadow)
|
if (prefab.CastShadow)
|
||||||
{
|
{
|
||||||
GeneateConvexHull();
|
GenerateConvexHull();
|
||||||
}
|
}
|
||||||
|
|
||||||
InsertToList();
|
InsertToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GeneateConvexHull()
|
private void GenerateConvexHull()
|
||||||
{
|
{
|
||||||
// If not null and not empty , remove the hulls from the system
|
// If not null and not empty , remove the hulls from the system
|
||||||
if(_convexHulls != null && _convexHulls.Any())
|
if(_convexHulls != null && _convexHulls.Any())
|
||||||
@@ -452,13 +452,16 @@ namespace Barotrauma
|
|||||||
sections[sectionIndex].isHighLighted = true;
|
sections[sectionIndex].isHighLighted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SectionHasHole(int sectionIndex)
|
public bool SectionBodyDisabled(int sectionIndex)
|
||||||
{
|
{
|
||||||
if (sectionIndex < 0 || sectionIndex >= sections.Length) return false;
|
if (sectionIndex < 0 || sectionIndex >= sections.Length) return false;
|
||||||
|
|
||||||
return (sections[sectionIndex].damage>=prefab.MaxHealth);
|
return (sections[sectionIndex].damage>=prefab.MaxHealth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sections that are leaking have a gap placed on them
|
||||||
|
/// </summary>
|
||||||
public bool SectionIsLeaking(int sectionIndex)
|
public bool SectionIsLeaking(int sectionIndex)
|
||||||
{
|
{
|
||||||
if (sectionIndex < 0 || sectionIndex >= sections.Length) return false;
|
if (sectionIndex < 0 || sectionIndex >= sections.Length) return false;
|
||||||
@@ -528,7 +531,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
float damageAmount = attack.GetStructureDamage(deltaTime);
|
float damageAmount = attack.GetStructureDamage(deltaTime);
|
||||||
|
|
||||||
if (playSound && !SectionHasHole(i))
|
if (playSound && !SectionBodyDisabled(i))
|
||||||
{
|
{
|
||||||
DamageSoundType damageSoundType = (attack.DamageType == DamageType.Blunt) ? DamageSoundType.StructureBlunt : DamageSoundType.StructureSlash;
|
DamageSoundType damageSoundType = (attack.DamageType == DamageType.Blunt) ? DamageSoundType.StructureBlunt : DamageSoundType.StructureSlash;
|
||||||
SoundPlayer.PlayDamageSound(damageSoundType, damageAmount, position);
|
SoundPlayer.PlayDamageSound(damageSoundType, damageAmount, position);
|
||||||
@@ -561,7 +564,7 @@ namespace Barotrauma
|
|||||||
sections[sectionIndex].gap.Remove();
|
sections[sectionIndex].gap.Remove();
|
||||||
sections[sectionIndex].gap = null;
|
sections[sectionIndex].gap = null;
|
||||||
if(CastShadow)
|
if(CastShadow)
|
||||||
GeneateConvexHull();
|
GenerateConvexHull();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -575,20 +578,20 @@ namespace Barotrauma
|
|||||||
gapRect.Height += 20;
|
gapRect.Height += 20;
|
||||||
sections[sectionIndex].gap = new Gap(gapRect, !isHorizontal, Submarine);
|
sections[sectionIndex].gap = new Gap(gapRect, !isHorizontal, Submarine);
|
||||||
if(CastShadow)
|
if(CastShadow)
|
||||||
GeneateConvexHull();
|
GenerateConvexHull();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sections[sectionIndex].gap != null)
|
if (sections[sectionIndex].gap != null)
|
||||||
sections[sectionIndex].gap.Open = (float)Math.Pow(((damage / prefab.MaxHealth)-0.5)*2.0, 2.0);
|
sections[sectionIndex].gap.Open = (float)Math.Pow(((damage / prefab.MaxHealth)-0.5)*2.0, 2.0);
|
||||||
|
|
||||||
bool hadHole = SectionHasHole(sectionIndex);
|
bool hadHole = SectionBodyDisabled(sectionIndex);
|
||||||
sections[sectionIndex].damage = MathHelper.Clamp(damage, 0.0f, prefab.MaxHealth);
|
sections[sectionIndex].damage = MathHelper.Clamp(damage, 0.0f, prefab.MaxHealth);
|
||||||
|
|
||||||
bool hasHole = SectionHasHole(sectionIndex);
|
bool hasHole = SectionBodyDisabled(sectionIndex);
|
||||||
|
|
||||||
if (hadHole == hasHole) return;
|
if (hadHole == hasHole) return;
|
||||||
if (hasHole) Explosion.ApplyExplosionForces(sections[sectionIndex].gap.WorldPosition, 500.0f, 5.0f, 0.0f, 0.0f);
|
//if (hasHole) Explosion.ApplyExplosionForces(sections[sectionIndex].gap.WorldPosition, 500.0f, 5.0f, 0.0f, 0.0f);
|
||||||
UpdateSections();
|
UpdateSections();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -600,11 +603,18 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
bodies.Clear();
|
bodies.Clear();
|
||||||
var mergedSections = new List<WallSection>();
|
var mergedSections = new List<WallSection>();
|
||||||
foreach (var section in sections)
|
for (int i = 0; i < sections.Count(); i++ )
|
||||||
{
|
{
|
||||||
if(section.gap == null)
|
var section = sections[i];
|
||||||
|
|
||||||
|
if (!SectionBodyDisabled(i))
|
||||||
|
{
|
||||||
mergedSections.Add(section);
|
mergedSections.Add(section);
|
||||||
if (section.gap == null || mergedSections.Count <= 0) continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mergedSections.Count <= 0) continue;
|
||||||
|
|
||||||
Rectangle mergedRect;
|
Rectangle mergedRect;
|
||||||
if (isHorizontal)
|
if (isHorizontal)
|
||||||
mergedRect = new Rectangle(mergedSections.Min(x => x.rect.Left), mergedSections.Max(x => x.rect.Top),
|
mergedRect = new Rectangle(mergedSections.Min(x => x.rect.Left), mergedSections.Max(x => x.rect.Top),
|
||||||
|
|||||||
@@ -374,7 +374,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (structure.IsPlatform || structure.StairDirection != Direction.None) return -1;
|
if (structure.IsPlatform || structure.StairDirection != Direction.None) return -1;
|
||||||
int sectionIndex = structure.FindSectionIndex(ConvertUnits.ToDisplayUnits(point));
|
int sectionIndex = structure.FindSectionIndex(ConvertUnits.ToDisplayUnits(point));
|
||||||
if (sectionIndex > -1 && structure.SectionHasHole(sectionIndex)) return -1;
|
if (sectionIndex > -1 && structure.SectionBodyDisabled(sectionIndex)) return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fraction < closestFraction)
|
if (fraction < closestFraction)
|
||||||
|
|||||||
@@ -291,7 +291,7 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
if (denyMessage == "Password required!" || denyMessage == "Wrong password!")
|
if (denyMessage == "Password required!" || denyMessage == "Wrong password!")
|
||||||
{
|
{
|
||||||
GameMain.ServerListScreen.JoinServer(serverIP, true);
|
GameMain.ServerListScreen.JoinServer(serverIP, true, denyMessage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -631,7 +631,7 @@ namespace Barotrauma.Networking
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if !DEBUG
|
||||||
if (!string.IsNullOrWhiteSpace(password) && string.IsNullOrWhiteSpace(userPassword))
|
if (!string.IsNullOrWhiteSpace(password) && string.IsNullOrWhiteSpace(userPassword))
|
||||||
{
|
{
|
||||||
inc.SenderConnection.Deny("Password required!");
|
inc.SenderConnection.Deny("Password required!");
|
||||||
|
|||||||
@@ -299,18 +299,18 @@ namespace Barotrauma
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void JoinServer(string ip, bool hasPassword)
|
public void JoinServer(string ip, bool hasPassword, string msg = "Password required")
|
||||||
{
|
{
|
||||||
CoroutineManager.StartCoroutine(ConnectToServer(ip, hasPassword));
|
CoroutineManager.StartCoroutine(ConnectToServer(ip, hasPassword, msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<object> ConnectToServer(string ip, bool hasPassword)
|
private IEnumerable<object> ConnectToServer(string ip, bool hasPassword, string msg = "Password required")
|
||||||
{
|
{
|
||||||
string selectedPassword = "";
|
string selectedPassword = "";
|
||||||
|
|
||||||
if (hasPassword)
|
if (hasPassword)
|
||||||
{
|
{
|
||||||
var msgBox = new GUIMessageBox("Password required:", "", new string[] { "OK", "Cancel" });
|
var msgBox = new GUIMessageBox(msg, "", new string[] { "OK", "Cancel" });
|
||||||
var passwordBox = new GUITextBox(new Rectangle(0,40,150,25), Alignment.TopLeft, GUI.Style, msgBox.children[0]);
|
var passwordBox = new GUITextBox(new Rectangle(0,40,150,25), Alignment.TopLeft, GUI.Style, msgBox.children[0]);
|
||||||
passwordBox.UserData = "password";
|
passwordBox.UserData = "password";
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
---------------------------------------------------------------------------------------------------------
|
||||||
|
v0.3.4.2
|
||||||
|
---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
- fixed characters passing through walls/windows that have already been repaired
|
||||||
|
- fixed the spawn command in Linux version
|
||||||
|
- fixed clients being able to join servers with the wrong password
|
||||||
|
|
||||||
---------------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------------
|
||||||
v0.3.4.1
|
v0.3.4.1
|
||||||
---------------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------------
|
||||||
@@ -12,7 +20,6 @@ of messages received from different clients and discard valid messages
|
|||||||
- mantises don't bleed
|
- mantises don't bleed
|
||||||
- fixed crashing when swapping some specific equipped items with another item in the inventory
|
- fixed crashing when swapping some specific equipped items with another item in the inventory
|
||||||
- fixed deconstructor, fabricator and railgun connection panels closing immediately after opening
|
- fixed deconstructor, fabricator and railgun connection panels closing immediately after opening
|
||||||
- fixed newly created subs being saved to the root folder instead of the Submarines folder
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------------
|
||||||
v0.3.4.0
|
v0.3.4.0
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ Credits:
|
|||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
Programming, graphics, sounds, game design - Joonas Rikkonen ("Regalis")
|
Programming, graphics, sounds, game design - Joonas Rikkonen ("Regalis")
|
||||||
Graphics - James Bear ("Moonsaber99")
|
Graphics - James Bear ("Moonsaber99")
|
||||||
Programming - Sebastian Broberg
|
Programming - Sebastian Broberg
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user