Park/ParkSign.cs
/// <summary>
/// A park sign that shows the name of the park on the entranceway. Updates to get the park's name and open/closed status.
/// </summary>
public sealed class ParkSign : Component, IParkEvents
{
	[Property] private SignPanel Panel { get; set; }

	void IParkEvents.OnNameChanged( string name ) => UpdateText();
	void IParkEvents.OnParkOpened() => UpdateText();
	void IParkEvents.OnParkClosed() => UpdateText();

	protected override void OnEnabled()
	{
		base.OnEnabled();

		UpdateText();
	}

	public void UpdateText()
	{
		if ( !Panel.IsValid() ) return;

		var park = ParkManager.Instance;
		if ( !park.IsOpen() )
		{
			Panel.Text = "CLOSED";
			Panel.Color = Color.Red;
		}
		else
		{
			Panel.Text = park.Name;
			Panel.Color = Color.White;
		}
	}
}