Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Events/EventActions/UIHighlightAction.cs
2024-04-24 18:09:05 +03:00

70 lines
2.7 KiB
C#

namespace Barotrauma;
/// <summary>
/// Highlights an UI element of some kind. Generally used in tutorials.
/// </summary>
partial class UIHighlightAction : EventAction
{
public enum ElementId
{
None,
RepairButton,
PumpSpeedSlider,
PassiveSonarIndicator,
ActiveSonarIndicator,
SonarModeSwitch,
DirectionalSonarFrame,
SteeringModeSwitch,
MaintainPosTickBox,
AutoTempSwitch,
PowerButton,
FissionRateSlider,
TurbineOutputSlider,
DeconstructButton,
RechargeSpeedSlider,
CPRButton,
CloseButton,
MessageBoxCloseButton
}
[Serialize(ElementId.None, IsPropertySaveable.Yes, description: "An arbitrary identifier that must match the userdata of the UI element. The userdatas of the element are hard-coded, so this option is generally intended for the developers' use.")]
public ElementId Id { get; set; }
[Serialize("", IsPropertySaveable.Yes, description: "If the element's userdata is an entity or an entity prefab, it's identifier must match this value.")]
public Identifier EntityIdentifier { get; set; }
[Serialize(OrderCategory.Emergency, IsPropertySaveable.Yes, description: "If the element's userdata is an order category, it must match this.")]
public OrderCategory OrderCategory { get; set; }
[Serialize("", IsPropertySaveable.Yes, description: "If the element's userdata is an order, it must match this identifier.")]
public Identifier OrderIdentifier { get; set; }
[Serialize("", IsPropertySaveable.Yes, description: "If the element's userdata is an order with options, it must match this.")]
public Identifier OrderOption { get; set; }
[Serialize("", IsPropertySaveable.Yes, description: "If the element's userdata is an order, the order must target an entity with this tag.")]
public Identifier OrderTargetTag { get; set; }
[Serialize(true, IsPropertySaveable.Yes, description: "Should the element bounce up an down in addition to being highlighted.")]
public bool Bounce { get; set; }
[Serialize(false, IsPropertySaveable.Yes, description: "Should the action highlight the first matching element it finds, or all of them?")]
public bool HighlightMultiple { get; set; }
private bool isFinished;
public UIHighlightAction(ScriptedEvent parentEvent, ContentXElement element) : base(parentEvent, element) { }
public override void Update(float deltaTime)
{
if (isFinished) { return; }
UpdateProjSpecific();
isFinished = true;
}
partial void UpdateProjSpecific();
public override bool IsFinished(ref string goToLabel) => isFinished;
public override void Reset() => isFinished = false;
}