Unstable 1.1.14.0
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
#nullable enable
|
||||
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
partial class EventLogAction : EventAction
|
||||
{
|
||||
[Serialize("", IsPropertySaveable.Yes)]
|
||||
public Identifier Id { get; set; }
|
||||
|
||||
[Serialize("", IsPropertySaveable.Yes)]
|
||||
public string Text { get; set; }
|
||||
|
||||
[Serialize("", IsPropertySaveable.Yes)]
|
||||
public Identifier TargetTag { get; set; }
|
||||
|
||||
public bool ShowInServerLog { get; set; }
|
||||
|
||||
private readonly XElement? textElement;
|
||||
|
||||
public EventLogAction(ScriptedEvent parentEvent, ContentXElement element) : base(parentEvent, element)
|
||||
{
|
||||
if (Id == Identifier.Empty)
|
||||
{
|
||||
DebugConsole.ThrowError($"Error in event \"{parentEvent.Prefab.Identifier}\". {nameof(EventLogAction)} with no id.");
|
||||
}
|
||||
//append the target tag so logs targeted to different players don't interfere with each other even if they use the same Id
|
||||
Id = (Id.ToString() + TargetTag).ToIdentifier();
|
||||
|
||||
foreach (var elem in element.Elements())
|
||||
{
|
||||
if (elem.Name.LocalName.Equals("text", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
textElement = elem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Text ??= string.Empty;
|
||||
if (textElement == null)
|
||||
{
|
||||
if (Text.IsNullOrEmpty())
|
||||
{
|
||||
DebugConsole.ThrowError($"Error in event \"{parentEvent.Prefab.Identifier}\". {nameof(EventLogAction)} with no text set ({element}).");
|
||||
}
|
||||
else
|
||||
{
|
||||
Text = TextManager.Get(Text).Fallback(Text).Value;
|
||||
}
|
||||
}
|
||||
ShowInServerLog = element.GetAttributeBool(nameof(ShowInServerLog), ParentEvent is TraitorEvent);
|
||||
}
|
||||
|
||||
private bool isFinished;
|
||||
|
||||
public override bool IsFinished(ref string goTo)
|
||||
{
|
||||
return isFinished;
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
{
|
||||
isFinished = false;
|
||||
}
|
||||
|
||||
|
||||
public LocalizedString GetDisplayText()
|
||||
{
|
||||
LocalizedString text = Text;
|
||||
if (textElement != null)
|
||||
{
|
||||
LocalizedString tempDescription = string.Empty;
|
||||
TextManager.ConstructDescription(ref tempDescription, textElement, ParentEvent.GetTextForReplacementElement);
|
||||
text = tempDescription.Value;
|
||||
}
|
||||
return ParentEvent.ReplaceVariablesInEventText(text);
|
||||
}
|
||||
|
||||
public override void Update(float deltaTime)
|
||||
{
|
||||
if (isFinished) { return; }
|
||||
AddEntryProjSpecific(GameMain.GameSession?.EventManager?.EventLog, GetDisplayText().Value);
|
||||
isFinished = true;
|
||||
}
|
||||
|
||||
partial void AddEntryProjSpecific(EventLog? eventLog, string displayText);
|
||||
|
||||
public override string ToDebugString()
|
||||
{
|
||||
return $"{ToolBox.GetDebugSymbol(isFinished)} {nameof(EventLogAction)} -> (Id: {Id})";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user