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

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "NakedDesireGameMode.generated.h"

class AItemPickup;
class UClothingItemInstance;
class UMissionsConfig;
class AWardrobe;

UCLASS(minimalapi)
class ANakedDesireGameMode : public AGameModeBase
{
	GENERATED_BODY()

	UPROPERTY()
	AWardrobe* Wardrobe = nullptr;
	
	UPROPERTY(EditDefaultsOnly)
	UMissionsConfig* MissionsConfig;
	
public:
	int NoticeCount = 0;
	
	void RestartGame();
	
	UFUNCTION(BlueprintPure, BlueprintImplementableEvent)
	FTimecode GetCurrentTime() const;

	UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
	void SetCurrentTime(FTimecode TimeCode);

	UFUNCTION(BlueprintPure)
	AWardrobe* GetWardrobe() const;

	UFUNCTION(BlueprintImplementableEvent)
	void EndGameEmbarrassed();

	UFUNCTION(BlueprintCallable)
	void BuyItem(UClothingItemInstance* ClothingItemInstance);
	
	UFUNCTION(BlueprintCallable)
	void OnHourChanged(int32 Hour);

protected:
	virtual void BeginPlay() override;
	
private:
	void RefreshDailyMissions();
	
	UPROPERTY(EditDefaultsOnly, Category = "Items")
	TSubclassOf<AItemPickup> ItemPickupClass;
};



