(81babbeac) Added Linux System.Windows.Forms
This commit is contained in:
Binary file not shown.
@@ -247,6 +247,9 @@
|
|||||||
<None Include="System.Configuration.dll">
|
<None Include="System.Configuration.dll">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="Accessibility.dll">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
<None Include="System.Core.dll">
|
<None Include="System.Core.dll">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
@@ -268,6 +271,12 @@
|
|||||||
<None Include="System.Security.dll">
|
<None Include="System.Security.dll">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="System.Windows.Forms.dll">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="System.Windows.Forms.dll.config">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
<None Include="System.Xml.dll">
|
<None Include="System.Xml.dll">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
|||||||
@@ -606,7 +606,7 @@ namespace Barotrauma
|
|||||||
.ThenByDescending(a => a.Strength).FirstOrDefault();
|
.ThenByDescending(a => a.Strength).FirstOrDefault();
|
||||||
if (affliction.DamagePerSecond > 0 || affliction.Strength > 0)
|
if (affliction.DamagePerSecond > 0 || affliction.Strength > 0)
|
||||||
{
|
{
|
||||||
var limbHealth = GetMatchingLimbHealth(affliction);
|
var limbHealth = GetMathingLimbHealth(affliction);
|
||||||
if (limbHealth != null)
|
if (limbHealth != null)
|
||||||
{
|
{
|
||||||
selectedLimbIndex = limbHealths.IndexOf(limbHealth);
|
selectedLimbIndex = limbHealths.IndexOf(limbHealth);
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,11 @@
|
|||||||
|
<configuration>
|
||||||
|
<dllmap dll="gdiplus" target="libgdiplus.so.0"/>
|
||||||
|
<dllmap dll="X11" target="libX11.so.6"/>
|
||||||
|
<dllmap dll="libX11" target="libX11.so.6"/>
|
||||||
|
<dllmap dll="libXcursor" target="libXcursor.so.1"/>
|
||||||
|
<dllmap dll="libglib-2.0.so" target="libglib-2.0.so.0"/>
|
||||||
|
<dllmap dll="libgobject-2.0.so" target="libgobject-2.0.so.0"/>
|
||||||
|
<dllmap dll="libgdk-x11-2.0.so" target="libgdk-x11-2.0.so.0"/>
|
||||||
|
<dllmap dll="libgtk-x11-2.0.so" target="libgtk-x11-2.0.so.0"/>
|
||||||
|
<dllmap dll="libgdk_pixbuf-2.0.so" target="libgdk_pixbuf-2.0.so.0"/>
|
||||||
|
</configuration>
|
||||||
@@ -202,18 +202,22 @@ namespace Barotrauma
|
|||||||
if (run || speedMultiplier <= 0.0f) targetMovement *= speedMultiplier;
|
if (run || speedMultiplier <= 0.0f) targetMovement *= speedMultiplier;
|
||||||
Character.ResetSpeedMultiplier(); // Reset, items will set the value before the next update
|
Character.ResetSpeedMultiplier(); // Reset, items will set the value before the next update
|
||||||
Character.AnimController.TargetMovement = targetMovement;
|
Character.AnimController.TargetMovement = targetMovement;
|
||||||
|
|
||||||
if (!NeedsDivingGear(Character.CurrentHull))
|
if (!NeedsDivingGear(Character.CurrentHull))
|
||||||
{
|
{
|
||||||
bool oxygenLow = Character.OxygenAvailable < CharacterHealth.LowOxygenThreshold;
|
bool oxygenLow = Character.OxygenAvailable < CharacterHealth.LowOxygenThreshold;
|
||||||
bool highPressure = Character.CurrentHull == null || Character.CurrentHull.LethalPressure > 0 && Character.PressureProtection <= 0;
|
bool highPressure = Character.CurrentHull == null || Character.CurrentHull.LethalPressure > 0 && Character.PressureProtection <= 0;
|
||||||
bool shouldKeepTheGearOn = !ObjectiveManager.IsCurrentObjective<AIObjectiveIdle>();
|
bool shouldKeepTheGearOn = !ObjectiveManager.IsCurrentObjective<AIObjectiveIdle>();
|
||||||
bool removeDivingSuit = oxygenLow && !highPressure;
|
|
||||||
if (!removeDivingSuit)
|
// Don't allow to drop the diving suit in water or while climbing or if the current path has stairs
|
||||||
{
|
bool removeDivingSuit =
|
||||||
bool targetHasNoSuit = objectiveManager.CurrentOrder is AIObjectiveGoTo gtObj && gtObj.mimic && !HasDivingSuit(gtObj.Target as Character);
|
(oxygenLow && !highPressure) ||
|
||||||
bool canDropTheSuit = Character.CurrentHull.WaterPercentage < 1 && !Character.IsClimbing && steeringManager == insideSteering && !PathSteering.InStairs;
|
(!shouldKeepTheGearOn &&
|
||||||
removeDivingSuit = (!shouldKeepTheGearOn || targetHasNoSuit) && canDropTheSuit;
|
Character.CurrentHull.WaterPercentage < 1 &&
|
||||||
}
|
!Character.IsClimbing &&
|
||||||
|
steeringManager == insideSteering &&
|
||||||
|
!PathSteering.InStairs);
|
||||||
|
|
||||||
if (removeDivingSuit)
|
if (removeDivingSuit)
|
||||||
{
|
{
|
||||||
var divingSuit = Character.Inventory.FindItemByIdentifier("divingsuit") ?? Character.Inventory.FindItemByTag("divingsuit");
|
var divingSuit = Character.Inventory.FindItemByIdentifier("divingsuit") ?? Character.Inventory.FindItemByTag("divingsuit");
|
||||||
@@ -223,8 +227,7 @@ namespace Barotrauma
|
|||||||
divingSuit.Drop(Character);
|
divingSuit.Drop(Character);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool targetHasNoMask = objectiveManager.CurrentOrder is AIObjectiveGoTo gotoObjective && gotoObjective.mimic && !HasDivingMask(gotoObjective.Target as Character);
|
bool takeMaskOff = oxygenLow || (!shouldKeepTheGearOn && Character.CurrentHull.WaterPercentage < 20);
|
||||||
bool takeMaskOff = oxygenLow || (!shouldKeepTheGearOn && Character.CurrentHull.WaterPercentage < 20) || targetHasNoMask;
|
|
||||||
if (takeMaskOff)
|
if (takeMaskOff)
|
||||||
{
|
{
|
||||||
var mask = Character.Inventory.FindItemByIdentifier("divingmask");
|
var mask = Character.Inventory.FindItemByIdentifier("divingmask");
|
||||||
|
|||||||
+1
-2
@@ -36,8 +36,7 @@ namespace Barotrauma
|
|||||||
[Serialize(1.0f, true), Editable(MIN_SCALE, MAX_SCALE, DecimalCount = 3)]
|
[Serialize(1.0f, true), Editable(MIN_SCALE, MAX_SCALE, DecimalCount = 3)]
|
||||||
public float JointScale { get; set; }
|
public float JointScale { get; set; }
|
||||||
|
|
||||||
// Don't show in the editor, because shouldn't be edited in runtime. Requires that the limb scale and the collider sizes are adjusted. TODO: automatize.
|
[Serialize(1f, true), Editable(DecimalCount = 2)]
|
||||||
[Serialize(1f, false)]
|
|
||||||
public float TextureScale { get; set; }
|
public float TextureScale { get; set; }
|
||||||
|
|
||||||
[Serialize(45f, true), Editable(0f, 1000f)]
|
[Serialize(45f, true), Editable(0f, 1000f)]
|
||||||
|
|||||||
@@ -232,13 +232,13 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
private LimbHealth GetMatchingLimbHealth(Limb limb) => limbHealths[limb.HealthIndex];
|
private LimbHealth GetMatchingLimbHealth(Limb limb) => limbHealths[limb.HealthIndex];
|
||||||
private LimbHealth GetMatchingLimbHealth(Affliction affliction) => GetMatchingLimbHealth(Character.AnimController.GetLimb(affliction.Prefab.IndicatorLimb));
|
private LimbHealth GetMathingLimbHealth(Affliction affliction) => GetMatchingLimbHealth(Character.AnimController.GetLimb(affliction.Prefab.IndicatorLimb));
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the limb afflictions and non-limbspecific afflictions that are set to be displayed on this limb.
|
/// Returns the limb afflictions and non-limbspecific afflictions that are set to be displayed on this limb.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private IEnumerable<Affliction> GetMatchingAfflictions(LimbHealth limb, Func<Affliction, bool> predicate)
|
private IEnumerable<Affliction> GetMatchingAfflictions(LimbHealth limb, Func<Affliction, bool> predicate)
|
||||||
=> limb.Afflictions.Where(predicate).Union(afflictions.Where(a => predicate(a) && GetMatchingLimbHealth(a) == limb));
|
=> limb.Afflictions.Where(predicate).Union(afflictions.Where(a => predicate(a) && GetMathingLimbHealth(a) == limb));
|
||||||
|
|
||||||
public Affliction GetAffliction(string afflictionType, bool allowLimbAfflictions = true)
|
public Affliction GetAffliction(string afflictionType, bool allowLimbAfflictions = true)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -40,9 +40,6 @@ namespace Barotrauma.Items.Components
|
|||||||
[Serialize(false, false)]
|
[Serialize(false, false)]
|
||||||
public bool RepairThroughWalls { get; set; }
|
public bool RepairThroughWalls { get; set; }
|
||||||
|
|
||||||
[Serialize(false, false)]
|
|
||||||
public bool RepairMultiple { get; set; }
|
|
||||||
|
|
||||||
public Vector2 TransformedBarrelPos
|
public Vector2 TransformedBarrelPos
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -161,22 +158,12 @@ namespace Barotrauma.Items.Components
|
|||||||
private void Repair(Vector2 rayStart, Vector2 rayEnd, float deltaTime, Character user, float degreeOfSuccess, List<Body> ignoredBodies)
|
private void Repair(Vector2 rayStart, Vector2 rayEnd, float deltaTime, Character user, float degreeOfSuccess, List<Body> ignoredBodies)
|
||||||
{
|
{
|
||||||
var collisionCategories = Physics.CollisionWall | Physics.CollisionCharacter | Physics.CollisionItem | Physics.CollisionLevel | Physics.CollisionRepair;
|
var collisionCategories = Physics.CollisionWall | Physics.CollisionCharacter | Physics.CollisionItem | Physics.CollisionLevel | Physics.CollisionRepair;
|
||||||
if (RepairMultiple)
|
if (RepairThroughWalls)
|
||||||
{
|
{
|
||||||
var bodies = Submarine.PickBodies(rayStart, rayEnd, ignoredBodies, collisionCategories, ignoreSensors: false, allowInsideFixture: true);
|
var bodies = Submarine.PickBodies(rayStart, rayEnd, ignoredBodies, collisionCategories, ignoreSensors: false, allowInsideFixture: true);
|
||||||
Type lastHitType = null;
|
|
||||||
foreach (Body body in bodies)
|
foreach (Body body in bodies)
|
||||||
{
|
{
|
||||||
Type bodyType = body.UserData?.GetType();
|
FixBody(user, deltaTime, degreeOfSuccess, body);
|
||||||
if (!RepairThroughWalls && bodyType != null && bodyType != lastHitType)
|
|
||||||
{
|
|
||||||
//stop the ray if it already hit a door/wall and is now about to hit some other type of entity
|
|
||||||
if (lastHitType == typeof(Item) || lastHitType == typeof(Structure)) { break; }
|
|
||||||
}
|
|
||||||
if (FixBody(user, deltaTime, degreeOfSuccess, body))
|
|
||||||
{
|
|
||||||
if (bodyType != null) { lastHitType = bodyType; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -215,19 +202,19 @@ namespace Barotrauma.Items.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool FixBody(Character user, float deltaTime, float degreeOfSuccess, Body targetBody)
|
private void FixBody(Character user, float deltaTime, float degreeOfSuccess, Body targetBody)
|
||||||
{
|
{
|
||||||
if (targetBody?.UserData == null) { return false; }
|
if (targetBody?.UserData == null) { return; }
|
||||||
|
|
||||||
pickedPosition = Submarine.LastPickedPosition;
|
pickedPosition = Submarine.LastPickedPosition;
|
||||||
|
|
||||||
if (targetBody.UserData is Structure targetStructure)
|
if (targetBody.UserData is Structure targetStructure)
|
||||||
{
|
{
|
||||||
if (!fixableEntities.Contains("structure") && !fixableEntities.Contains(targetStructure.Prefab.Identifier)) { return false; }
|
if (!fixableEntities.Contains("structure") && !fixableEntities.Contains(targetStructure.Prefab.Identifier)) return;
|
||||||
if (targetStructure.IsPlatform) { return false; }
|
if (targetStructure.IsPlatform) return;
|
||||||
|
|
||||||
int sectionIndex = targetStructure.FindSectionIndex(ConvertUnits.ToDisplayUnits(pickedPosition));
|
int sectionIndex = targetStructure.FindSectionIndex(ConvertUnits.ToDisplayUnits(pickedPosition));
|
||||||
if (sectionIndex < 0) { return false; }
|
if (sectionIndex < 0) return;
|
||||||
|
|
||||||
FixStructureProjSpecific(user, deltaTime, targetStructure, sectionIndex);
|
FixStructureProjSpecific(user, deltaTime, targetStructure, sectionIndex);
|
||||||
targetStructure.AddDamage(sectionIndex, -StructureFixAmount * degreeOfSuccess, user);
|
targetStructure.AddDamage(sectionIndex, -StructureFixAmount * degreeOfSuccess, user);
|
||||||
@@ -252,14 +239,12 @@ namespace Barotrauma.Items.Components
|
|||||||
targetCharacter.LastDamageSource = item;
|
targetCharacter.LastDamageSource = item;
|
||||||
ApplyStatusEffectsOnTarget(user, deltaTime, ActionType.OnUse, new List<ISerializableEntity>() { targetCharacter });
|
ApplyStatusEffectsOnTarget(user, deltaTime, ActionType.OnUse, new List<ISerializableEntity>() { targetCharacter });
|
||||||
FixCharacterProjSpecific(user, deltaTime, targetCharacter);
|
FixCharacterProjSpecific(user, deltaTime, targetCharacter);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
else if (targetBody.UserData is Limb targetLimb)
|
else if (targetBody.UserData is Limb targetLimb)
|
||||||
{
|
{
|
||||||
targetLimb.character.LastDamageSource = item;
|
targetLimb.character.LastDamageSource = item;
|
||||||
ApplyStatusEffectsOnTarget(user, deltaTime, ActionType.OnUse, new List<ISerializableEntity>() { targetLimb.character, targetLimb });
|
ApplyStatusEffectsOnTarget(user, deltaTime, ActionType.OnUse, new List<ISerializableEntity>() { targetLimb.character, targetLimb });
|
||||||
FixCharacterProjSpecific(user, deltaTime, targetLimb.character);
|
FixCharacterProjSpecific(user, deltaTime, targetLimb.character);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
else if (targetBody.UserData is Item targetItem)
|
else if (targetBody.UserData is Item targetItem)
|
||||||
{
|
{
|
||||||
@@ -284,7 +269,6 @@ namespace Barotrauma.Items.Components
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
FixItemProjSpecific(user, deltaTime, targetItem, prevCondition);
|
FixItemProjSpecific(user, deltaTime, targetItem, prevCondition);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -730,15 +730,7 @@ namespace Barotrauma
|
|||||||
return closestBody;
|
return closestBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly Dictionary<Body, float> bodyDist = new Dictionary<Body, float>();
|
public static List<Body> PickBodies(Vector2 rayStart, Vector2 rayEnd, IEnumerable<Body> ignoredBodies = null, Category? collisionCategory = null, bool ignoreSensors = true, Predicate<Fixture> customPredicate = null, bool allowInsideFixture = false)
|
||||||
private static readonly List<Body> bodies = new List<Body>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns a list of physics bodies the ray intersects with, sorted according to distance (the closest body is at the beginning of the list).
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="customPredicate">Can be used to filter the bodies based on some condition. If the predicate returns false, the body isignored.</param>
|
|
||||||
/// <param name="allowInsideFixture">Should fixtures that the start of the ray is inside be returned</param>
|
|
||||||
public static IEnumerable<Body> PickBodies(Vector2 rayStart, Vector2 rayEnd, IEnumerable<Body> ignoredBodies = null, Category? collisionCategory = null, bool ignoreSensors = true, Predicate<Fixture> customPredicate = null, bool allowInsideFixture = false)
|
|
||||||
{
|
{
|
||||||
if (Vector2.DistanceSquared(rayStart, rayEnd) < 0.00001f)
|
if (Vector2.DistanceSquared(rayStart, rayEnd) < 0.00001f)
|
||||||
{
|
{
|
||||||
@@ -746,25 +738,20 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
float closestFraction = 1.0f;
|
float closestFraction = 1.0f;
|
||||||
bodies.Clear();
|
List<Body> bodies = new List<Body>();
|
||||||
bodyDist.Clear();
|
|
||||||
GameMain.World.RayCast((fixture, point, normal, fraction) =>
|
GameMain.World.RayCast((fixture, point, normal, fraction) =>
|
||||||
{
|
{
|
||||||
if (!CheckFixtureCollision(fixture, ignoredBodies, collisionCategory, ignoreSensors, customPredicate)) { return -1; }
|
if (!CheckFixtureCollision(fixture, ignoredBodies, collisionCategory, ignoreSensors, customPredicate)) { return -1; }
|
||||||
|
|
||||||
if (fixture.Body != null)
|
if (fixture.Body != null) { bodies.Add(fixture.Body); }
|
||||||
{
|
|
||||||
bodies.Add(fixture.Body);
|
|
||||||
bodyDist[fixture.Body] = fraction;
|
|
||||||
}
|
|
||||||
if (fraction < closestFraction)
|
if (fraction < closestFraction)
|
||||||
{
|
{
|
||||||
lastPickedPosition = rayStart + (rayEnd - rayStart) * fraction;
|
lastPickedPosition = rayStart + (rayEnd - rayStart) * fraction;
|
||||||
lastPickedFraction = fraction;
|
lastPickedFraction = fraction;
|
||||||
lastPickedNormal = normal;
|
lastPickedNormal = normal;
|
||||||
}
|
}
|
||||||
//continue
|
|
||||||
return -1;
|
return fraction;
|
||||||
}, rayStart, rayEnd);
|
}, rayStart, rayEnd);
|
||||||
|
|
||||||
if (allowInsideFixture)
|
if (allowInsideFixture)
|
||||||
@@ -783,12 +770,10 @@ namespace Barotrauma
|
|||||||
lastPickedFraction = 0.0f;
|
lastPickedFraction = 0.0f;
|
||||||
lastPickedNormal = Vector2.Normalize(rayEnd - rayStart);
|
lastPickedNormal = Vector2.Normalize(rayEnd - rayStart);
|
||||||
bodies.Add(fixture.Body);
|
bodies.Add(fixture.Body);
|
||||||
bodyDist[fixture.Body] = 0.0f;
|
|
||||||
return false;
|
return false;
|
||||||
}, ref aabb);
|
}, ref aabb);
|
||||||
}
|
}
|
||||||
|
|
||||||
bodies.Sort((b1, b2) => { return bodyDist[b1].CompareTo(bodyDist[b2]); });
|
|
||||||
return bodies;
|
return bodies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user