// © 2025 Naked People Team. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "BodyPart.h" #include "ClothingSlotType.h" #include "Engine/DataAsset.h" #include "NakedDesire/Player/PrivateBodyPartType.h" #include "NakedDesire/Progression/ProgressionPath.h" #include "ClothingItem.generated.h" UENUM(BlueprintType) enum class EGarmentContainerSlotType : uint8 { S UMETA(DisplayName = "Small"), M UMETA(DisplayName = "Medium"), L UMETA(DisplayName = "Large"), }; USTRUCT(BlueprintType) struct NAKEDDESIRE_API FGarmentContainerSlot { GENERATED_BODY() UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) EGarmentContainerSlotType SlotType = EGarmentContainerSlotType::S; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (ClampMin = 1)) int32 Count = 1; }; UCLASS(BlueprintType) class NAKEDDESIRE_API UClothingItem : public UPrimaryDataAsset { GENERATED_BODY() public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) FText Name; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) UTexture2D* Icon; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) EClothingSlotType SlotType; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) USkeletalMesh* SkeletalMesh; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) TMap Materials; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) UStaticMesh* StaticMesh; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) int BasePrice; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) TArray CoveredBodyParts; // TODO: Add coverage per body part UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (EditCondition = "SlotType == EClothingSlotType::Shoes", Category = "Shoes")) float ShoesOffset = 0.0f; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) bool UseLeaderPose = false; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) EProgressionPath ProgressionPath; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) TArray CanExpose; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) bool IsRestrictive; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) float Coverage = 1.0f; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) bool IsUnderwear; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) TArray ContainerSlots; };