a75a560...814f6c9
commit 814f6c9dd4d48b3931e1d3bcb1918ff79324c1d4 Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Wed Mar 20 19:33:18 2019 +0200 Fixed multiplayer campaign setup UI showing the client's subs instead of the server's (see #1311) commit 4a3e485dea85aa21037b13fd1b86af4a4ec1a5fd Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 19:16:17 2019 +0200 Move new texts in the end of the localization file. commit 5a8af99afe5aad0b2f5343ca6f923d8c7eb19e68 Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 19:05:43 2019 +0200 Recreate the editing gui window when resetting the entities with the "resetall" command. commit 0048e6dcb9699e5b1e434ace867bc8f426cdae28 Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 19:04:42 2019 +0200 Fix resetting to prefab. commit 88be0923761f5ac2c895364c8ad0e11fe9a66576 Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 18:40:13 2019 +0200 Fix item components not being loaded properly. commit 6f970d54ed800eff25ae3643b03c0020336c8621 Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 18:21:25 2019 +0200 Add a console command for resetting all items and structures to the prefabs. commit bd561ef43391a2e4251bef18a8738b233f540961 Merge: e8843c30c a75a56088 Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 17:47:14 2019 +0200 Merge branch 'dev' of https://github.com/Regalis11/Barotrauma-development into dev commit e8843c30cdb966832236ec361494e4c886130590 Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 17:46:38 2019 +0200 Implement item and structure instance resetting to prefab. Add buttons in the subeditor. Allow to save the msg text in the editor.
This commit is contained in:
@@ -51,6 +51,8 @@ namespace Barotrauma.Items.Components
|
||||
|
||||
public ItemComponent Parent;
|
||||
|
||||
public readonly XElement originalElement;
|
||||
|
||||
protected const float CorrectionDelay = 1.0f;
|
||||
protected CoroutineHandle delayedCorrectionCoroutine;
|
||||
protected float correctionTimer;
|
||||
@@ -64,11 +66,7 @@ namespace Barotrauma.Items.Components
|
||||
set;
|
||||
}
|
||||
|
||||
public readonly Dictionary<string, SerializableProperty> properties;
|
||||
public Dictionary<string, SerializableProperty> SerializableProperties
|
||||
{
|
||||
get { return properties; }
|
||||
}
|
||||
public Dictionary<string, SerializableProperty> SerializableProperties { get; protected set; }
|
||||
|
||||
public virtual bool IsActive
|
||||
{
|
||||
@@ -194,7 +192,7 @@ namespace Barotrauma.Items.Components
|
||||
get { return name; }
|
||||
}
|
||||
|
||||
[Editable, Serialize("", false)]
|
||||
[Editable, Serialize("", true)]
|
||||
public string Msg
|
||||
{
|
||||
get { return msg; }
|
||||
@@ -210,8 +208,9 @@ namespace Barotrauma.Items.Components
|
||||
public ItemComponent(Item item, XElement element)
|
||||
{
|
||||
this.item = item;
|
||||
originalElement = element;
|
||||
name = element.Name.ToString();
|
||||
properties = SerializableProperty.GetProperties(this);
|
||||
SerializableProperties = SerializableProperty.GetProperties(this);
|
||||
requiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>();
|
||||
requiredSkills = new List<Skill>();
|
||||
|
||||
@@ -245,18 +244,9 @@ namespace Barotrauma.Items.Components
|
||||
DebugConsole.ThrowError("Invalid pick key in " + element + "!", e);
|
||||
}
|
||||
|
||||
properties = SerializableProperty.DeserializeProperties(this, element);
|
||||
#if CLIENT
|
||||
string msg = TextManager.Get(Msg, true);
|
||||
if (msg != null)
|
||||
{
|
||||
foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
|
||||
{
|
||||
msg = msg.Replace("[" + inputType.ToString().ToLowerInvariant() + "]", GameMain.Config.KeyBind(inputType).ToString());
|
||||
}
|
||||
Msg = msg;
|
||||
}
|
||||
#endif
|
||||
SerializableProperties = SerializableProperty.DeserializeProperties(this, element);
|
||||
ParseMsg();
|
||||
|
||||
foreach (XElement subElement in element.Elements())
|
||||
{
|
||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||
@@ -318,7 +308,6 @@ namespace Barotrauma.Items.Components
|
||||
item.AddComponent(ic);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -623,87 +612,13 @@ namespace Barotrauma.Items.Components
|
||||
public virtual void Load(XElement componentElement)
|
||||
{
|
||||
if (componentElement == null) return;
|
||||
|
||||
foreach (XAttribute attribute in componentElement.Attributes())
|
||||
{
|
||||
if (!properties.TryGetValue(attribute.Name.ToString().ToLowerInvariant(), out SerializableProperty property)) continue;
|
||||
if (!SerializableProperties.TryGetValue(attribute.Name.ToString().ToLowerInvariant(), out SerializableProperty property)) continue;
|
||||
property.TrySetValue(this, attribute.Value);
|
||||
}
|
||||
#if CLIENT
|
||||
string msg = TextManager.Get(Msg, true);
|
||||
if (msg != null)
|
||||
{
|
||||
foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
|
||||
{
|
||||
msg = msg.Replace("[" + inputType.ToString().ToLowerInvariant() + "]", GameMain.Config.KeyBind(inputType).ToString());
|
||||
}
|
||||
Msg = msg;
|
||||
}
|
||||
#endif
|
||||
var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
||||
bool overrideRequiredItems = false;
|
||||
|
||||
foreach (XElement subElement in componentElement.Elements())
|
||||
{
|
||||
foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
|
||||
{
|
||||
case "requireditem":
|
||||
if (!overrideRequiredItems) requiredItems.Clear();
|
||||
overrideRequiredItems = true;
|
||||
|
||||
RelatedItem newRequiredItem = RelatedItem.Load(subElement, item.Name);
|
||||
if (newRequiredItem == null) continue;
|
||||
|
||||
var prevRequiredItem = prevRequiredItems.ContainsKey(newRequiredItem.Type) ?
|
||||
prevRequiredItems[newRequiredItem.Type].Find(ri => ri.JoinedIdentifiers == newRequiredItem.JoinedIdentifiers) : null;
|
||||
if (prevRequiredItem != null)
|
||||
{
|
||||
newRequiredItem.statusEffects = prevRequiredItem.statusEffects;
|
||||
newRequiredItem.Msg = prevRequiredItem.Msg;
|
||||
}
|
||||
|
||||
if (!requiredItems.ContainsKey(newRequiredItem.Type))
|
||||
{
|
||||
requiredItems[newRequiredItem.Type] = new List<RelatedItem>();
|
||||
}
|
||||
requiredItems[newRequiredItem.Type].Add(newRequiredItem);
|
||||
break;
|
||||
}
|
||||
Msg = msg;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Only door override required items
|
||||
//var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
||||
//bool overrideRequiredItems = false;
|
||||
|
||||
//foreach (XElement subElement in componentElement.Elements())
|
||||
//{
|
||||
// switch (subElement.Name.ToString().ToLowerInvariant())
|
||||
// {
|
||||
// case "requireditem":
|
||||
// if (!overrideRequiredItems) requiredItems.Clear();
|
||||
// overrideRequiredItems = true;
|
||||
|
||||
// RelatedItem newRequiredItem = RelatedItem.Load(subElement, item.Name);
|
||||
// if (newRequiredItem == null) continue;
|
||||
|
||||
// var prevRequiredItem = prevRequiredItems.ContainsKey(newRequiredItem.Type) ?
|
||||
// prevRequiredItems[newRequiredItem.Type].Find(ri => ri.JoinedIdentifiers == newRequiredItem.JoinedIdentifiers) : null;
|
||||
// if (prevRequiredItem != null)
|
||||
// {
|
||||
// newRequiredItem.statusEffects = prevRequiredItem.statusEffects;
|
||||
// newRequiredItem.Msg = prevRequiredItem.Msg;
|
||||
// }
|
||||
|
||||
// if (!requiredItems.ContainsKey(newRequiredItem.Type))
|
||||
// {
|
||||
// requiredItems[newRequiredItem.Type] = new List<RelatedItem>();
|
||||
// }
|
||||
// requiredItems[newRequiredItem.Type].Add(newRequiredItem);
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
ParseMsg();
|
||||
OverrideRequiredItems(componentElement);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -794,5 +709,47 @@ namespace Barotrauma.Items.Components
|
||||
parentElement.Add(componentElement);
|
||||
return componentElement;
|
||||
}
|
||||
|
||||
public virtual void Reset()
|
||||
{
|
||||
SerializableProperties = SerializableProperty.DeserializeProperties(this, originalElement);
|
||||
ParseMsg();
|
||||
OverrideRequiredItems(originalElement);
|
||||
}
|
||||
|
||||
private void OverrideRequiredItems(XElement element)
|
||||
{
|
||||
var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
||||
bool overrideRequiredItems = false;
|
||||
foreach (XElement subElement in element.Elements())
|
||||
{
|
||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||
{
|
||||
case "requireditem":
|
||||
if (!overrideRequiredItems) requiredItems.Clear();
|
||||
overrideRequiredItems = true;
|
||||
|
||||
RelatedItem newRequiredItem = RelatedItem.Load(subElement, item.Name);
|
||||
if (newRequiredItem == null) continue;
|
||||
|
||||
var prevRequiredItem = prevRequiredItems.ContainsKey(newRequiredItem.Type) ?
|
||||
prevRequiredItems[newRequiredItem.Type].Find(ri => ri.JoinedIdentifiers == newRequiredItem.JoinedIdentifiers) : null;
|
||||
if (prevRequiredItem != null)
|
||||
{
|
||||
newRequiredItem.statusEffects = prevRequiredItem.statusEffects;
|
||||
newRequiredItem.Msg = prevRequiredItem.Msg;
|
||||
}
|
||||
|
||||
if (!requiredItems.ContainsKey(newRequiredItem.Type))
|
||||
{
|
||||
requiredItems[newRequiredItem.Type] = new List<RelatedItem>();
|
||||
}
|
||||
requiredItems[newRequiredItem.Type].Add(newRequiredItem);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
partial void ParseMsg();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user