states/BaseState.cs
using Sandbox;

namespace Facepunch.BombRoyale;

public abstract class BaseState : Component
{
	public virtual int TimeLeft => 0;
	public virtual string Name => string.Empty;
	public virtual bool IsPaused => false;

	protected virtual void OnEnter() { }

	protected virtual void OnLeave() { }

	protected override void OnAwake()
	{
		StateSystem.Active = this;
		OnEnter();
		
		base.OnAwake();
	}

	protected override void OnDestroy()
	{
		if ( StateSystem.Active == this )
			StateSystem.Active = null;
		
		OnLeave();
		
		base.OnDestroy();
	}
}