// © 2025 Naked People Team. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "NakedDesireGameInstance.generated.h"

class UStartingSaveData;
class UCommissionBoardConfig;
class UNPCDirectorConfig;
class ULossPresentationConfig;
class UAudioSettingsConfig;

UCLASS()
class NAKEDDESIRE_API UNakedDesireGameInstance : public UGameInstance
{
	GENERATED_BODY()

public:
	UPROPERTY(EditDefaultsOnly, Category = "Save")
	TObjectPtr<UStartingSaveData> StartingSaveData;

	// Hand-authored commission pool the UMissionSubsystem offers (§13).
	UPROPERTY(EditDefaultsOnly, Category = "Commissions")
	TObjectPtr<UCommissionBoardConfig> CommissionBoard;

	// Crowd population tuning the UNPCDirectorSubsystem uses (§10.2, §17.1).
	UPROPERTY(EditDefaultsOnly, Category = "NPC")
	TObjectPtr<UNPCDirectorConfig> NPCDirector;

	// Cutscene-per-loss-cause map the USessionLossResolver plays before teleporting home (§4.4).
	UPROPERTY(EditDefaultsOnly, Category = "Session")
	TObjectPtr<ULossPresentationConfig> LossPresentation;

	// SoundMix / SoundClass routing the UAudioSettingsSubsystem drives from the audio settings sliders.
	UPROPERTY(EditDefaultsOnly, Category = "Audio")
	TObjectPtr<UAudioSettingsConfig> AudioConfig;
};