Park/Rides/Queues/QueueSign.cs
using HC3;
using HC3.UI;
/// <summary>
/// A sign that is placed at the entrance of a queue to display the ride's name and open/closed status.
/// </summary>
public sealed class QueueSign : Component, IInspectable
{
[Property] private SignPanel Panel { get; set; }
public BasicRide Ride { get; private set; }
public void SetRide( BasicRide ride )
{
Ride = ride;
Ride.OnTitleChanged += OnTitleChanged;
Ride.OnOpenStateChanged += OnOpenStateChanged;
UpdateText();
}
private void OnTitleChanged( string s ) => UpdateText();
private void OnOpenStateChanged( OpenState state ) => UpdateText();
protected override void OnDisabled()
{
base.OnDisabled();
if ( Ride.IsValid() )
{
Ride.OnTitleChanged -= OnTitleChanged;
Ride.OnOpenStateChanged -= OnOpenStateChanged;
}
}
public void UpdateText()
{
if ( !Panel.IsValid() ) return;
if ( !Ride.IsAvailable() )
{
Panel.Text = "CLOSED";
Panel.Color = Color.Red;
}
else
{
Panel.Text = Ride.Title;
Panel.Color = Color.White;
}
}
Window IInspectable.Select()
{
if ( !Ride.IsValid() ) return null;
var inspector = new BuildingInspector();
inspector.Building = Ride;
return inspector;
}
}