// Copyright 2025 https://yuewu.dev/en All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Runtime/Launch/Resources/Version.h" #include "SmartObjectRuntime.h" #include "SmartObjectSubsystem.h" #include "SmartObjectTypes.h" #if ENGINE_MINOR_VERSION >= 6 #include "SmartObjectRequestTypes.h" #endif #include "Engine/DataTable.h" #include "UObject/Object.h" #include "GGS_InteractionStructLibrary.generated.h" class UGGS_InteractionSystemComponent; class UAbilitySystemComponent; class UGGS_InteractionDefinition; /** * Structure wrapping an interaction definition for smart object interaction. * 封装智能对象交互的交互定义结构。 */ USTRUCT(DisplayName="Interaction Entrance") struct GENERICGAMESYSTEM_API FGGS_SmartObjectInteractionEntranceData : public FSmartObjectDefinitionData { GENERATED_BODY() /** * Interaction definition containing static data for player interaction. * 包含玩家交互静态数据的交互定义。 * @note Replicated across the network. * @注意 通过网络同步。 */ UPROPERTY(EditAnywhere, Category="Interaction", meta=(DisplayName="Definition")) TSoftObjectPtr DefinitionDA{nullptr}; }; /** * Structure representing an interaction option. * 表示交互选项的结构。 */ USTRUCT(BlueprintType) struct GENERICGAMESYSTEM_API FGGS_InteractionOption { GENERATED_BODY() /** * Interaction definition associated with this option. * 与此选项关联的交互定义。 */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Interaction") TObjectPtr Definition{nullptr}; /** * Smart object request result for this option. Not replicated. * 此选项的智能对象请求结果。未网络同步。 */ UPROPERTY(EditAnywhere, BlueprintReadWrite, NotReplicated, Category="Interaction") FSmartObjectRequestResult RequestResult; /** * Smart object behavior definition for this option. * 此选项的智能对象行为定义。 */ UPROPERTY(EditAnywhere, BlueprintReadWrite, NotReplicated, Category="Interaction") TObjectPtr BehaviorDefinition; /** * Index of the associated smart object slot, used for UI sorting. * 关联智能对象槽的索引,用于UI排序。 */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Interaction") int32 SlotIndex{-1}; /** * State of the associated smart object slot, used for UI input rules. * 关联智能对象槽的状态,用于UI输入规则。 */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Interaction") ESmartObjectSlotState SlotState{ESmartObjectSlotState::Free}; /** * Equality operator for comparing interaction options. * 交互选项的相等比较运算符。 */ friend bool operator==(const FGGS_InteractionOption& Lhs, const FGGS_InteractionOption& RHS); /** * Inequality operator for comparing interaction options. * 交互选项的不等比较运算符。 */ friend bool operator!=(const FGGS_InteractionOption& Lhs, const FGGS_InteractionOption& RHS); /** * Less-than operator for sorting interaction options by slot index. * 按槽索引排序交互选项的比较运算符。 */ friend bool operator<(const FGGS_InteractionOption& Lhs, const FGGS_InteractionOption& RHS); /** * Converts the interaction option to a string representation. * 将交互选项转换为字符串表示。 * @return String representation of the option. 选项的字符串表示。 */ FString ToString() const; };