Initial commit: Item Interaction Ecosystem plugin (UE5.7)
Server-authoritative, data-driven item/inventory/interaction/carry/equipment/ world-slot/placement/crafting framework. 8 modules, compiles against UE 5.7. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
53
Source/ItemPlacement/Private/PlacementInteractionActions.cpp
Normal file
53
Source/ItemPlacement/Private/PlacementInteractionActions.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
// Copyright ExByte Studios. Item Interaction Ecosystem.
|
||||
|
||||
#include "PlacementInteractionActions.h"
|
||||
#include "PlacementPreviewComponent.h"
|
||||
#include "ItemNativeTags.h"
|
||||
#include "GameFramework/Character.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
UPlacementPreviewComponent* GetPlacement(const FInteractionContext& Context)
|
||||
{
|
||||
return Context.Character ? Context.Character->FindComponentByClass<UPlacementPreviewComponent>() : nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
UInteractionAction_StartPlacement::UInteractionAction_StartPlacement()
|
||||
{
|
||||
ActionTag = ItemEcosystemTags::Action_Place;
|
||||
Mode = EItemInteractionMode::StartPlacement;
|
||||
Priority = 300;
|
||||
DisplayText = NSLOCTEXT("ItemPlacement", "Place", "Place");
|
||||
}
|
||||
void UInteractionAction_StartPlacement::Execute_Implementation(const FInteractionContext& Context)
|
||||
{
|
||||
if (UPlacementPreviewComponent* P = GetPlacement(Context))
|
||||
{
|
||||
const FGuid Id = Context.bHasTargetItem ? Context.TargetItem.InstanceId
|
||||
: (Context.bHasHeldItem ? Context.HeldItem.InstanceId : FGuid());
|
||||
if (Id.IsValid()) { P->StartPlacement(Id); }
|
||||
}
|
||||
}
|
||||
|
||||
UInteractionAction_ConfirmPlacement::UInteractionAction_ConfirmPlacement()
|
||||
{
|
||||
Mode = EItemInteractionMode::ConfirmPlacement;
|
||||
Priority = 1000;
|
||||
DisplayText = NSLOCTEXT("ItemPlacement", "Confirm", "Confirm");
|
||||
}
|
||||
void UInteractionAction_ConfirmPlacement::Execute_Implementation(const FInteractionContext& Context)
|
||||
{
|
||||
if (UPlacementPreviewComponent* P = GetPlacement(Context)) { P->ConfirmPlacement(); }
|
||||
}
|
||||
|
||||
UInteractionAction_CancelPlacement::UInteractionAction_CancelPlacement()
|
||||
{
|
||||
Mode = EItemInteractionMode::CancelPlacement;
|
||||
Priority = 1000;
|
||||
DisplayText = NSLOCTEXT("ItemPlacement", "Cancel", "Cancel");
|
||||
}
|
||||
void UInteractionAction_CancelPlacement::Execute_Implementation(const FInteractionContext& Context)
|
||||
{
|
||||
if (UPlacementPreviewComponent* P = GetPlacement(Context)) { P->CancelPlacement(); }
|
||||
}
|
||||
Reference in New Issue
Block a user