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.
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 );
}
}