SoundBoardBootstrap.cs

Component that initializes and runs the soundboard systems each scene. OnStart initializes preload, play tracker and achievements, logs counts of pad catalogs, and touches generated data. OnUpdate calls per-frame Tick on preload, manager, achievements and coop relay. OnDestroy flushes play tracker and syncs achievements.

File Access
namespace SSoundboard;

/// <summary>Scene tick: preload pump + playback/loop manager + co-op relay.</summary>
public sealed class SoundBoardBootstrap : Component
{
	protected override void OnStart()
	{
		SoundPreloadService.Initialize();
		SoundPlayTracker.EnsureLoaded();
		// Touch catalogs early — proves generated pad lists loaded.
		Log.Info(
			$"[S&Soundboard] Boards ready — arnold={SoundBoardData.ArnoldPads.Count}, "
			+ $"meme={SoundBoardData.MemePads.Count}, gas={SoundBoardData.GasPads.Count}, "
			+ $"tabs={SoundBoardData.Boards.Count}"
		);
		SoundBoardAchievements.ResyncPlatformFromCookies();
	}

	protected override void OnUpdate()
	{
		SoundPreloadService.Tick();
		SoundBoardManager.Tick();
		SoundBoardAchievements.Tick();
		// Highlight expire + host relay when a multiplayer session is already live.
		SoundBoardCoop.Tick();
	}

	protected override void OnDestroy()
	{
		// Persist press counts; re-queue any still-unsynced platform unlocks for next boot.
		SoundPlayTracker.Flush();
		SoundBoardAchievements.FullSyncFromProgress( forceRequeue: false );
	}
}