(3dc4135ce) v0.9.5.1
This commit is contained in:
@@ -44,8 +44,9 @@ namespace Barotrauma.Items.Components
|
||||
public bool WasUsed;
|
||||
|
||||
public readonly Dictionary<ActionType, List<StatusEffect>> statusEffectLists;
|
||||
|
||||
|
||||
public Dictionary<RelatedItem.RelationType, List<RelatedItem>> requiredItems;
|
||||
public readonly List<RelatedItem> DisabledRequiredItems = new List<RelatedItem>();
|
||||
|
||||
public List<Skill> requiredSkills;
|
||||
|
||||
@@ -271,19 +272,7 @@ namespace Barotrauma.Items.Components
|
||||
break;
|
||||
case "requireditem":
|
||||
case "requireditems":
|
||||
RelatedItem ri = RelatedItem.Load(subElement, item.Name);
|
||||
if (ri != null)
|
||||
{
|
||||
if (!requiredItems.ContainsKey(ri.Type))
|
||||
{
|
||||
requiredItems.Add(ri.Type, new List<RelatedItem>());
|
||||
}
|
||||
requiredItems[ri.Type].Add(ri);
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugConsole.ThrowError("Error in item config \"" + item.ConfigFile + "\" - component " + GetType().ToString() + " requires an item with no identifiers.");
|
||||
}
|
||||
SetRequiredItems(subElement);
|
||||
break;
|
||||
case "requiredskill":
|
||||
case "requiredskills":
|
||||
@@ -323,6 +312,34 @@ namespace Barotrauma.Items.Components
|
||||
}
|
||||
}
|
||||
|
||||
public void SetRequiredItems(XElement element)
|
||||
{
|
||||
bool returnEmpty = false;
|
||||
#if CLIENT
|
||||
returnEmpty = Screen.Selected == GameMain.SubEditorScreen;
|
||||
#endif
|
||||
RelatedItem ri = RelatedItem.Load(element, returnEmpty, item.Name);
|
||||
if (ri != null)
|
||||
{
|
||||
if (ri.Identifiers.Length == 0)
|
||||
{
|
||||
DisabledRequiredItems.Add(ri);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!requiredItems.ContainsKey(ri.Type))
|
||||
{
|
||||
requiredItems.Add(ri.Type, new List<RelatedItem>());
|
||||
}
|
||||
requiredItems[ri.Type].Add(ri);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugConsole.ThrowError("Error in item config \"" + item.ConfigFile + "\" - component " + GetType().ToString() + " requires an item with no identifiers.");
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Move(Vector2 amount) { }
|
||||
|
||||
/// <summary>a Character has picked the item</summary>
|
||||
@@ -762,6 +779,12 @@ namespace Barotrauma.Items.Components
|
||||
componentElement.Add(newElement);
|
||||
}
|
||||
}
|
||||
foreach (RelatedItem ri in DisabledRequiredItems)
|
||||
{
|
||||
XElement newElement = new XElement("requireditem");
|
||||
ri.Save(newElement);
|
||||
componentElement.Add(newElement);
|
||||
}
|
||||
|
||||
|
||||
SerializableProperty.SerializeProperties(this, componentElement);
|
||||
@@ -783,12 +806,16 @@ namespace Barotrauma.Items.Components
|
||||
var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
||||
requiredItems.Clear();
|
||||
|
||||
bool returnEmptyRequirements = false;
|
||||
#if CLIENT
|
||||
returnEmptyRequirements = Screen.Selected == GameMain.SubEditorScreen;
|
||||
#endif
|
||||
foreach (XElement subElement in element.Elements())
|
||||
{
|
||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||
{
|
||||
case "requireditem":
|
||||
RelatedItem newRequiredItem = RelatedItem.Load(subElement, item.Name);
|
||||
RelatedItem newRequiredItem = RelatedItem.Load(subElement, returnEmptyRequirements, item.Name);
|
||||
if (newRequiredItem == null) continue;
|
||||
|
||||
var prevRequiredItem = prevRequiredItems.ContainsKey(newRequiredItem.Type) ?
|
||||
|
||||
Reference in New Issue
Block a user