(23df6915f) Added: Possibility of having a status effect trigger if a requiredItem is missing
This commit is contained in:
@@ -449,11 +449,12 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
float depth = ActiveSprite.Depth - 0.0000015f;
|
float depth = ActiveSprite.Depth - 0.0000015f;
|
||||||
|
|
||||||
DamagedSprite.Draw(spriteBatch,
|
// TODO: enable when the damage overlay textures have been remade.
|
||||||
new Vector2(body.DrawPosition.X, -body.DrawPosition.Y),
|
//DamagedSprite.Draw(spriteBatch,
|
||||||
color * Math.Min(damageOverlayStrength, 1.0f), ActiveSprite.Origin,
|
// new Vector2(body.DrawPosition.X, -body.DrawPosition.Y),
|
||||||
-body.DrawRotation,
|
// color * Math.Min(damageOverlayStrength, 1.0f), ActiveSprite.Origin,
|
||||||
1.0f, spriteEffect, depth);
|
// -body.DrawRotation,
|
||||||
|
// 1.0f, spriteEffect, depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GameMain.DebugDraw)
|
if (GameMain.DebugDraw)
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ namespace Barotrauma
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
const float CharacterWaitOnSwitch = 10.0f;
|
const float CharacterWaitOnSwitch = 10.0f;
|
||||||
|
|
||||||
private readonly List<CharacterInfo> characterInfos = new List<CharacterInfo>();
|
private List<CharacterInfo> characterInfos = new List<CharacterInfo>();
|
||||||
private readonly List<Character> characters = new List<Character>();
|
private List<Character> characters = new List<Character>();
|
||||||
|
|
||||||
private Point screenResolution;
|
private Point screenResolution;
|
||||||
|
|
||||||
|
|||||||
@@ -256,18 +256,6 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (c.Info == null || c.Inventory == null) { continue; }
|
if (c.Info == null || c.Inventory == null) { continue; }
|
||||||
var inventoryElement = new XElement("inventory");
|
var inventoryElement = new XElement("inventory");
|
||||||
|
|
||||||
// Recharge headset batteries
|
|
||||||
var headset = c.Inventory.FindItemByIdentifier("headset");
|
|
||||||
if (headset != null)
|
|
||||||
{
|
|
||||||
var battery = headset.OwnInventory.FindItemByTag("loadable");
|
|
||||||
if (battery != null)
|
|
||||||
{
|
|
||||||
battery.Condition = battery.MaxCondition;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c.SaveInventory(c.Inventory, inventoryElement);
|
c.SaveInventory(c.Inventory, inventoryElement);
|
||||||
c.Info.InventoryData = inventoryElement;
|
c.Info.InventoryData = inventoryElement;
|
||||||
c.Inventory?.DeleteAllItems();
|
c.Inventory?.DeleteAllItems();
|
||||||
|
|||||||
@@ -620,7 +620,6 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (DraggingItemToWorld &&
|
if (DraggingItemToWorld &&
|
||||||
Character.Controlled.FocusedItem?.OwnInventory != null &&
|
Character.Controlled.FocusedItem?.OwnInventory != null &&
|
||||||
Character.Controlled.FocusedItem.OwnInventory.CanBePut(draggingItem) &&
|
|
||||||
Character.Controlled.FocusedItem.OwnInventory.TryPutItem(draggingItem, Character.Controlled))
|
Character.Controlled.FocusedItem.OwnInventory.TryPutItem(draggingItem, Character.Controlled))
|
||||||
{
|
{
|
||||||
GUI.PlayUISound(GUISoundType.PickItem);
|
GUI.PlayUISound(GUISoundType.PickItem);
|
||||||
|
|||||||
@@ -142,27 +142,24 @@ namespace Barotrauma
|
|||||||
backgroundPos.Y = -backgroundPos.Y;
|
backgroundPos.Y = -backgroundPos.Y;
|
||||||
backgroundPos *= 0.05f;
|
backgroundPos *= 0.05f;
|
||||||
|
|
||||||
if (level.GenerationParams.BackgroundTopSprite != null)
|
|
||||||
|
if (backgroundPos.Y < 1024)
|
||||||
{
|
{
|
||||||
int backgroundSize = (int)level.GenerationParams.BackgroundTopSprite.size.Y;
|
if (backgroundPos.Y < 0 && level.GenerationParams.BackgroundTopSprite != null)
|
||||||
if (backgroundPos.Y < backgroundSize)
|
|
||||||
{
|
{
|
||||||
if (backgroundPos.Y < 0)
|
var backgroundTop = level.GenerationParams.BackgroundTopSprite;
|
||||||
{
|
backgroundTop.SourceRect = new Rectangle((int)backgroundPos.X, (int)backgroundPos.Y, 1024, (int)Math.Min(-backgroundPos.Y, 1024));
|
||||||
var backgroundTop = level.GenerationParams.BackgroundTopSprite;
|
backgroundTop.DrawTiled(spriteBatch, Vector2.Zero, new Vector2(GameMain.GraphicsWidth, Math.Min(-backgroundPos.Y, GameMain.GraphicsHeight)),
|
||||||
backgroundTop.SourceRect = new Rectangle((int)backgroundPos.X, (int)backgroundPos.Y, backgroundSize, (int)Math.Min(-backgroundPos.Y, backgroundSize));
|
color: level.BackgroundTextureColor);
|
||||||
backgroundTop.DrawTiled(spriteBatch, Vector2.Zero, new Vector2(GameMain.GraphicsWidth, Math.Min(-backgroundPos.Y, GameMain.GraphicsHeight)),
|
}
|
||||||
color: level.BackgroundTextureColor);
|
if (backgroundPos.Y > -1024 && level.GenerationParams.BackgroundSprite != null)
|
||||||
}
|
{
|
||||||
if (-backgroundPos.Y < GameMain.GraphicsHeight && level.GenerationParams.BackgroundSprite != null)
|
var background = level.GenerationParams.BackgroundSprite;
|
||||||
{
|
background.SourceRect = new Rectangle((int)backgroundPos.X, (int)Math.Max(backgroundPos.Y, 0), 1024, 1024);
|
||||||
var background = level.GenerationParams.BackgroundSprite;
|
background.DrawTiled(spriteBatch,
|
||||||
background.SourceRect = new Rectangle((int)backgroundPos.X, (int)Math.Max(backgroundPos.Y, 0), backgroundSize, backgroundSize);
|
(backgroundPos.Y < 0) ? new Vector2(0.0f, (int)-backgroundPos.Y) : Vector2.Zero,
|
||||||
background.DrawTiled(spriteBatch,
|
new Vector2(GameMain.GraphicsWidth, (int)Math.Ceiling(1024 - backgroundPos.Y)),
|
||||||
(backgroundPos.Y < 0) ? new Vector2(0.0f, (int)-backgroundPos.Y) : Vector2.Zero,
|
color: level.BackgroundTextureColor);
|
||||||
new Vector2(GameMain.GraphicsWidth, (int)Math.Min(Math.Ceiling(backgroundSize - backgroundPos.Y), backgroundSize)),
|
|
||||||
color: level.BackgroundTextureColor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -483,26 +483,6 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (selectedList.Contains(entity)) { return; }
|
if (selectedList.Contains(entity)) { return; }
|
||||||
selectedList.Add(entity);
|
selectedList.Add(entity);
|
||||||
HandleDoorGapLinks(entity,
|
|
||||||
onGapFound: (door, gap) =>
|
|
||||||
{
|
|
||||||
door.RefreshLinkedGap();
|
|
||||||
if (!selectedList.Contains(gap))
|
|
||||||
{
|
|
||||||
selectedList.Add(gap);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onDoorFound: (door, gap) =>
|
|
||||||
{
|
|
||||||
if (!selectedList.Contains(door.Item))
|
|
||||||
{
|
|
||||||
selectedList.Add(door.Item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void HandleDoorGapLinks(MapEntity entity, Action<Door, Gap> onGapFound, Action<Door, Gap> onDoorFound)
|
|
||||||
{
|
|
||||||
if (entity is Item i)
|
if (entity is Item i)
|
||||||
{
|
{
|
||||||
var door = i.GetComponent<Door>();
|
var door = i.GetComponent<Door>();
|
||||||
@@ -511,26 +491,31 @@ namespace Barotrauma
|
|||||||
var gap = door.LinkedGap;
|
var gap = door.LinkedGap;
|
||||||
if (gap != null)
|
if (gap != null)
|
||||||
{
|
{
|
||||||
onGapFound(door, gap);
|
door.RefreshLinkedGap();
|
||||||
|
if (!selectedList.Contains(gap))
|
||||||
|
{
|
||||||
|
selectedList.Add(gap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (entity is Gap gap)
|
|
||||||
{
|
|
||||||
var door = gap.ConnectedDoor;
|
|
||||||
if (door != null)
|
|
||||||
{
|
|
||||||
onDoorFound(door, gap);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RemoveSelection(MapEntity entity)
|
public static void RemoveSelection(MapEntity entity)
|
||||||
{
|
{
|
||||||
selectedList.Remove(entity);
|
selectedList.Remove(entity);
|
||||||
HandleDoorGapLinks(entity,
|
if (entity is Item i)
|
||||||
onGapFound: (door, gap) => selectedList.Remove(gap),
|
{
|
||||||
onDoorFound: (door, gap) => selectedList.Remove(door.Item));
|
var door = i.GetComponent<Door>();
|
||||||
|
if (door != null)
|
||||||
|
{
|
||||||
|
var gap = door.LinkedGap;
|
||||||
|
if (gap != null)
|
||||||
|
{
|
||||||
|
selectedList.Remove(gap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static partial void UpdateAllProjSpecific(float deltaTime)
|
static partial void UpdateAllProjSpecific(float deltaTime)
|
||||||
@@ -600,11 +585,12 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public static void UpdateEditor(Camera cam)
|
public static void UpdateEditor(Camera cam)
|
||||||
{
|
{
|
||||||
|
FilteredSelectedList.Clear();
|
||||||
if (highlightedListBox != null) highlightedListBox.UpdateManually((float)Timing.Step);
|
if (highlightedListBox != null) highlightedListBox.UpdateManually((float)Timing.Step);
|
||||||
|
|
||||||
if (editingHUD != null)
|
if (editingHUD != null)
|
||||||
{
|
{
|
||||||
if (FilteredSelectedList.Count == 0 || editingHUD.UserData != FilteredSelectedList[0])
|
if (selectedList.Count == 0 || editingHUD.UserData != selectedList[0])
|
||||||
{
|
{
|
||||||
foreach (GUIComponent component in editingHUD.Children)
|
foreach (GUIComponent component in editingHUD.Children)
|
||||||
{
|
{
|
||||||
@@ -615,7 +601,7 @@ namespace Barotrauma
|
|||||||
editingHUD = null;
|
editingHUD = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FilteredSelectedList.Clear();
|
|
||||||
if (selectedList.Count == 0) return;
|
if (selectedList.Count == 0) return;
|
||||||
foreach (var e in selectedList)
|
foreach (var e in selectedList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -441,43 +441,36 @@ namespace Barotrauma
|
|||||||
characterPreviewFrame = null;
|
characterPreviewFrame = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (characterList != null)
|
if (Campaign is SinglePlayerCampaign)
|
||||||
{
|
{
|
||||||
if (Campaign is SinglePlayerCampaign)
|
var hireableCharacters = location.GetHireableCharacters();
|
||||||
|
foreach (GUIComponent child in characterList.Content.Children.ToList())
|
||||||
{
|
{
|
||||||
var hireableCharacters = location.GetHireableCharacters();
|
if (child.UserData is CharacterInfo character)
|
||||||
foreach (GUIComponent child in characterList.Content.Children.ToList())
|
|
||||||
{
|
{
|
||||||
if (child.UserData is CharacterInfo character)
|
if (GameMain.GameSession.CrewManager.GetCharacterInfos().Contains(character)) { continue; }
|
||||||
{
|
|
||||||
if (GameMain.GameSession.CrewManager != null)
|
|
||||||
{
|
|
||||||
if (GameMain.GameSession.CrewManager.GetCharacterInfos().Contains(character)) { continue; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (child.UserData as string == "mycrew" || child.UserData as string == "hire")
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
characterList.RemoveChild(child);
|
|
||||||
}
|
}
|
||||||
if (!hireableCharacters.Any())
|
else if (child.UserData as string == "mycrew" || child.UserData as string == "hire")
|
||||||
{
|
{
|
||||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), characterList.Content.RectTransform), TextManager.Get("HireUnavailable"), textAlignment: Alignment.Center)
|
continue;
|
||||||
{
|
|
||||||
CanBeFocused = false
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
else
|
characterList.RemoveChild(child);
|
||||||
|
}
|
||||||
|
if (!hireableCharacters.Any())
|
||||||
|
{
|
||||||
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), characterList.Content.RectTransform), TextManager.Get("HireUnavailable"), textAlignment: Alignment.Center)
|
||||||
{
|
{
|
||||||
foreach (CharacterInfo c in hireableCharacters)
|
CanBeFocused = false
|
||||||
{
|
};
|
||||||
var frame = c.CreateCharacterFrame(characterList.Content, c.Name + " (" + c.Job.Name + ")", c);
|
}
|
||||||
new GUITextBlock(new RectTransform(Vector2.One, frame.RectTransform, Anchor.TopRight), c.Salary.ToString(), textAlignment: Alignment.CenterRight);
|
else
|
||||||
}
|
{
|
||||||
|
foreach (CharacterInfo c in hireableCharacters)
|
||||||
|
{
|
||||||
|
var frame = c.CreateCharacterFrame(characterList.Content, c.Name + " (" + c.Job.Name + ")", c);
|
||||||
|
new GUITextBlock(new RectTransform(Vector2.One, frame.RectTransform, Anchor.TopRight), c.Salary.ToString(), textAlignment: Alignment.CenterRight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
characterList.UpdateScrollBarSize();
|
|
||||||
}
|
}
|
||||||
characterList.UpdateScrollBarSize();
|
characterList.UpdateScrollBarSize();
|
||||||
|
|
||||||
|
|||||||
@@ -948,11 +948,7 @@ namespace Barotrauma
|
|||||||
new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("HostServerButton"), textAlignment: Alignment.Center, font: GUI.LargeFont) { ForceUpperCase = true };
|
new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("HostServerButton"), textAlignment: Alignment.Center, font: GUI.LargeFont) { ForceUpperCase = true };
|
||||||
|
|
||||||
var label = new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("ServerName"), textAlignment: textAlignment);
|
var label = new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("ServerName"), textAlignment: textAlignment);
|
||||||
serverNameBox = new GUITextBox(new RectTransform(textFieldSize, label.RectTransform, Anchor.CenterRight), textAlignment: textAlignment)
|
serverNameBox = new GUITextBox(new RectTransform(textFieldSize, label.RectTransform, Anchor.CenterRight), textAlignment: textAlignment);
|
||||||
{
|
|
||||||
MaxTextLength = NetConfig.ServerNameMaxLength,
|
|
||||||
OverflowClip = true
|
|
||||||
};
|
|
||||||
|
|
||||||
label = new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("ServerPort"), textAlignment: textAlignment);
|
label = new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("ServerPort"), textAlignment: textAlignment);
|
||||||
portBox = new GUITextBox(new RectTransform(textFieldSize, label.RectTransform, Anchor.CenterRight), textAlignment: textAlignment)
|
portBox = new GUITextBox(new RectTransform(textFieldSize, label.RectTransform, Anchor.CenterRight), textAlignment: textAlignment)
|
||||||
|
|||||||
@@ -335,12 +335,8 @@ namespace Barotrauma
|
|||||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.03f), rightInfoColumn.RectTransform), style: null);
|
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.03f), rightInfoColumn.RectTransform), style: null);
|
||||||
|
|
||||||
//server info ------------------------------------------------------------------
|
//server info ------------------------------------------------------------------
|
||||||
|
|
||||||
ServerName = new GUITextBox(new RectTransform(new Vector2(infoColumnContainer.RectTransform.RelativeSize.X, 0.05f), infoFrameContent.RectTransform))
|
ServerName = new GUITextBox(new RectTransform(new Vector2(0.3f, 0.05f), infoFrameContent.RectTransform));
|
||||||
{
|
|
||||||
MaxTextLength = NetConfig.ServerNameMaxLength,
|
|
||||||
OverflowClip = true
|
|
||||||
};
|
|
||||||
ServerName.OnDeselected += (textBox, key) =>
|
ServerName.OnDeselected += (textBox, key) =>
|
||||||
{
|
{
|
||||||
GameMain.Client.ServerSettings.ClientAdminWrite(ServerSettings.NetFlags.Name);
|
GameMain.Client.ServerSettings.ClientAdminWrite(ServerSettings.NetFlags.Name);
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
public bool CompareTo(string ipCompare)
|
public bool CompareTo(string ipCompare)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(IP)) { return false; }
|
|
||||||
if (!IsRangeBan)
|
if (!IsRangeBan)
|
||||||
{
|
{
|
||||||
return ipCompare == IP;
|
return ipCompare == IP;
|
||||||
@@ -50,7 +49,6 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
public bool CompareTo(IPAddress ipCompare)
|
public bool CompareTo(IPAddress ipCompare)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(IP)) { return false; }
|
|
||||||
if (ipCompare.IsIPv4MappedToIPv6 && CompareTo(ipCompare.MapToIPv4().ToString()))
|
if (ipCompare.IsIPv4MappedToIPv6 && CompareTo(ipCompare.MapToIPv4().ToString()))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -93,10 +93,6 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
name = name.Replace(":", "");
|
name = name.Replace(":", "");
|
||||||
name = name.Replace(";", "");
|
name = name.Replace(";", "");
|
||||||
if (name.Length > NetConfig.ServerNameMaxLength)
|
|
||||||
{
|
|
||||||
name = name.Substring(0, NetConfig.ServerNameMaxLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
|
||||||
|
|||||||
@@ -1295,6 +1295,15 @@
|
|||||||
<Content Include="$(MSBuildThisFileDirectory)Content\Characters\Fractalguardian\fractalguardian.png">
|
<Content Include="$(MSBuildThisFileDirectory)Content\Characters\Fractalguardian\fractalguardian.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="$(MSBuildThisFileDirectory)Content\Characters\Human\damagedhead.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="$(MSBuildThisFileDirectory)Content\Characters\Human\damagedlegs.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="$(MSBuildThisFileDirectory)Content\Characters\Human\damagedtorso.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="$(MSBuildThisFileDirectory)Content\Characters\Human\firstnames_female.txt">
|
<Content Include="$(MSBuildThisFileDirectory)Content\Characters\Human\firstnames_female.txt">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
|||||||
@@ -1553,7 +1553,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public void Use(float deltaTime, Character character = null, Limb targetLimb = null)
|
public void Use(float deltaTime, Character character = null, Limb targetLimb = null)
|
||||||
{
|
{
|
||||||
if (RequireAimToUse && (character == null || !character.IsKeyDown(InputType.Aim)))
|
if (RequireAimToUse && !character.IsKeyDown(InputType.Aim))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
public bool IsOptional { get; set; }
|
public bool IsOptional { get; set; }
|
||||||
|
public bool MatchOnEmpty { get; set; }
|
||||||
|
|
||||||
public bool IgnoreInEditor { get; set; }
|
public bool IgnoreInEditor { get; set; }
|
||||||
|
|
||||||
private string[] excludedIdentifiers;
|
private string[] excludedIdentifiers;
|
||||||
@@ -99,6 +100,11 @@ namespace Barotrauma
|
|||||||
var containedItems = parentItem.ContainedItems;
|
var containedItems = parentItem.ContainedItems;
|
||||||
if (containedItems == null) return false;
|
if (containedItems == null) return false;
|
||||||
|
|
||||||
|
if (MatchOnEmpty && !containedItems.Any(ci => ci != null))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Item contained in containedItems)
|
foreach (Item contained in containedItems)
|
||||||
{
|
{
|
||||||
if (contained.Condition > 0.0f && MatchesItem(contained)) return true;
|
if (contained.Condition > 0.0f && MatchesItem(contained)) return true;
|
||||||
@@ -222,6 +228,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
ri.IsOptional = element.GetAttributeBool("optional", false);
|
ri.IsOptional = element.GetAttributeBool("optional", false);
|
||||||
ri.IgnoreInEditor = element.GetAttributeBool("ignoreineditor", false);
|
ri.IgnoreInEditor = element.GetAttributeBool("ignoreineditor", false);
|
||||||
|
ri.MatchOnEmpty = element.GetAttributeBool("matchonempty", false);
|
||||||
return ri;
|
return ri;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -424,6 +424,7 @@ namespace Barotrauma
|
|||||||
public virtual bool HasRequiredConditions(List<ISerializableEntity> targets)
|
public virtual bool HasRequiredConditions(List<ISerializableEntity> targets)
|
||||||
{
|
{
|
||||||
if (!propertyConditionals.Any()) return true;
|
if (!propertyConditionals.Any()) return true;
|
||||||
|
if (requiredItems.All(ri => ri.MatchOnEmpty) && targets.Count == 0) return true;
|
||||||
switch (conditionalComparison)
|
switch (conditionalComparison)
|
||||||
{
|
{
|
||||||
case PropertyConditional.Comparison.Or:
|
case PropertyConditional.Comparison.Or:
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user