HQ/HqDeciding.cs
namespace PlanetMeat;

[Group( "Planet Meat - HQ" ), Title( "HQ Deciding" ), Icon( "save" )]
public sealed class HqDeciding : Component
{
	public static bool ShowIntro { get; private set; }
	public static bool IsFreshStart { get; private set; }

	[Property] private float SaveInterval { get; set; } = 5.0f;
	private TimeUntil UntilNextSave { get; set; }

	protected override void OnStart()
	{
		base.OnStart();
		ShowIntro = Agenda.Current.Phase == Agenda.Phases.Startup;
		UntilNextSave = SaveInterval;

		if ( Career.Current.NeedsLoad )
		{
			Career.Current.LoadSave();
			IsFreshStart = Career.Current.IsFreshSave;
		}
		else
		{
			IsFreshStart = false;
			Research.Current.BakeCatalogue();
			Save();
		}

		HqNavigator.View = IsFreshStart ? HqNavigator.Views.Mission : HqNavigator.Views.None;
	}

	private static void Save() => Career.Current.SaveProgress();

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

		if ( !IsFreshStart )
		{
			if ( ShowIntro && (Input.Keyboard.Pressed( "space" ) || Input.Pressed( "SkipIntro" )) )
				ShowIntro = false;

			if ( !IsFreshStart && UntilNextSave )
			{
				Save();
				UntilNextSave = SaveInterval;
			}
		}
	}
}