This commit is contained in:
2026-05-24 20:50:34 +03:00
parent 321683941e
commit 799fc8a4ae
25 changed files with 266 additions and 218 deletions
+42 -8
View File
@@ -6,10 +6,47 @@
#include "BodyPart.h"
#include "ClothingSlotType.h"
#include "Engine/DataAsset.h"
#include "NakedDesire/Player/PrivateBodyPartType.h"
#include "NakedDesire/Progression/ProgressionPath.h"
#include "ClothingItem.generated.h"
USTRUCT(BlueprintType)
struct NAKEDDESIRE_API FBodyPartCoverage
{
GENERATED_BODY()
UPROPERTY()
float Coverage = 1.0f;
UPROPERTY()
EBodyPart BodyPart = EBodyPart::Ass;
};
UENUM(BlueprintType)
enum class ERestrictionType : uint8
{
BlockRun = 0,
BlockCrouch = 1,
BlockPhoneUsage = 2,
BlockItemPickup = 3,
BlockMasturbate = 4,
BlockBoobsExpose = 5,
BlockVaginaExpose = 6,
BlockAnalExpose = 7,
BlockSlotChange = 8,
};
USTRUCT(BlueprintType)
struct NAKEDDESIRE_API FClothingRestriction
{
GENERATED_BODY()
UPROPERTY()
ERestrictionType RestrictionType = ERestrictionType::BlockRun;
UPROPERTY()
EClothingSlotType AffectedSlot = EClothingSlotType::Anal;
};
UENUM(BlueprintType)
enum class EGarmentContainerSlotType : uint8
{
@@ -58,9 +95,9 @@ public:
int BasePrice;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<EPrivateBodyPartType> CoveredBodyParts; // TODO: Add coverage per body part
TArray<FBodyPartCoverage> CoveredBodyParts;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (EditCondition = "SlotType == EClothingSlotType::Shoes", Category = "Shoes"))
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (EditCondition = "SlotType == EClothingSlotType::Footwear", Category = "Shoes"))
float ShoesOffset = 0.0f;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
@@ -72,15 +109,12 @@ public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<EBodyPart> CanExpose;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool IsRestrictive;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
float Coverage = 1.0f;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool IsUnderwear;
TArray<FGarmentContainerSlot> ContainerSlots;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FGarmentContainerSlot> ContainerSlots;
TArray<FClothingRestriction> Restrictions;
};
@@ -11,11 +11,11 @@ UClothingManager::UClothingManager()
PrimaryComponentTick.bCanEverTick = false;
}
bool UClothingManager::IsBodyTypeExposed(const EPrivateBodyPartType PrivateBodyPartType)
bool UClothingManager::IsBodyTypeExposed(const EBodyPart BodyPart)
{
for (const auto& ClothingSlot : ClothingSlots)
{
if (ClothingSlot.ClothingItemInstance && ClothingSlot.ClothingItemInstance->GetClothingItem()->CoveredBodyParts.Contains(PrivateBodyPartType))
if (ClothingSlot.ClothingItemInstance) // TODO: Add covered body part resolution
{
return false;
}
@@ -74,7 +74,7 @@ void UClothingManager::HydrateClothing(UGlobalSaveGameData* SaveGameData)
float UClothingManager::GetHeelHeight()
{
if (FClothingSlotData ClothingSlotData; GetClothingSlotData(EClothingSlotType::Shoes, ClothingSlotData))
if (FClothingSlotData ClothingSlotData; GetClothingSlotData(EClothingSlotType::Footwear, ClothingSlotData))
{
if (ClothingSlotData.ClothingItemInstance)
{
@@ -173,5 +173,5 @@ bool UClothingManager::IsClothingTypeOn(const EClothingSlotType ClothingType)
bool UClothingManager::IsPartiallyNaked()
{
return IsBodyTypeExposed(EPrivateBodyPartType::BackBottom) || IsBodyTypeExposed(EPrivateBodyPartType::FrontBottom) || IsBodyTypeExposed(EPrivateBodyPartType::FrontTop);
return IsBodyTypeExposed(EBodyPart::Ass) || IsBodyTypeExposed(EBodyPart::Genitals) || IsBodyTypeExposed(EBodyPart::Boobs);
}
@@ -3,13 +3,11 @@
#pragma once
#include "CoreMinimal.h"
#include "BodyPart.h"
#include "ClothingSlotData.h"
#include "Components/ActorComponent.h"
#include "NakedDesire/Player/PrivateBodyPartType.h"
#include "ClothingManager.generated.h"
// TODO: Check clothing colors
class UGlobalSaveGameData;
class AClothingPickup;
class UClothingItemInstance;
@@ -53,7 +51,7 @@ public:
bool IsPartiallyNaked();
UFUNCTION(BlueprintCallable)
bool IsBodyTypeExposed(EPrivateBodyPartType PrivateBodyPartType);
bool IsBodyTypeExposed(EBodyPart BodyPart);
UFUNCTION(BlueprintCallable)
void TakeClothing(UClothingItemInstance* ClothingItemInstance);
+11 -7
View File
@@ -7,18 +7,22 @@
UENUM(BlueprintType)
enum class EClothingSlotType : uint8
{
Nipples,
Anal,
Vagina,
Nipples UMETA(ToolTip = "Sex Toy slot only"),
Anal UMETA(ToolTip = "Sex Toy slot only"),
Vagina UMETA(ToolTip = "Sex Toy slot only"),
Head,
Neck,
Face,
Eyes,
Body,
BodySuit,
Top,
Bottom,
Bra,
Panties,
UnderwearTop,
UnderwearBottom,
Socks,
Shoes,
Footwear,
Outerwear,
WristRestraint,
AnkleRestraint,
NeckRestraint,
};