RedLightGreenLight.cs
using Sandbox;

public sealed class RedLightGreenLight : Component
{
	public enum GameState
	{
		Green,
		Red,
	}

	public GameState State { get; set; }

	float timer = 0f;
	static float minWait = 2f;
	static float maxWait = 6f;

	float stateDuration = Game.Random.Float(minWait, maxWait);

	protected override void OnStart()
	{

	}

	protected override void OnUpdate()
	{
		timer += Time.Delta;

		// State Change
		if (timer >= stateDuration)
		{
			if (State == GameState.Green)
				State = GameState.Red;
			else if (State == GameState.Red) 
				State = GameState.Green;

			timer = 0f;
			stateDuration = Game.Random.Float(minWait, maxWait);
		}
	}
}