From 9a33be5092526eb4829e9a732047f2cf7dba58c6 Mon Sep 17 00:00:00 2001 From: "PCYPC\\pcy35" Date: Mon, 20 Nov 2023 21:01:21 +0900 Subject: [PATCH] =?UTF-8?q?[=EB=B0=95=EC=B9=98=EC=98=81]=20=EC=86=8C?= =?UTF-8?q?=EB=AA=A8=ED=92=88=20=EC=95=84=EC=9D=B4=ED=85=9C=20Base=20?= =?UTF-8?q?=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config/DefaultEngine.ini | 2 ++ .../Input/Actions/IA_UseItem.uasset | Bin 0 -> 1371 bytes Content/CombatSystem/Input/IMC_Default.uasset | Bin 22353 -> 23002 bytes Source/D1/Actor/BaseConsumable.cpp | 5 +++ Source/D1/Actor/BaseConsumable.h | 17 ++++++++++ Source/D1/Actor/BaseEquippable.cpp | 4 +++ Source/D1/Actor/BaseEquippable.h | 12 +++++++- Source/D1/CombatPlayerCharacter.cpp | 29 +++++++++++++++++- Source/D1/CombatPlayerCharacter.h | 14 ++++++--- Source/D1/Interface/CombatInterface.cpp | 5 +++ Source/D1/Interface/CombatInterface.h | 3 +- 11 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 Content/CombatSystem/Input/Actions/IA_UseItem.uasset create mode 100644 Source/D1/Actor/BaseConsumable.cpp create mode 100644 Source/D1/Actor/BaseConsumable.h diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 698bc190..b1c2dcf5 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -151,4 +151,6 @@ ManualIPAddress= +PropertyRedirects=(OldName="/Script/D1.MasterAI.RightWeaponCollisionComponent",NewName="/Script/D1.MasterAI.MainCollisionComponent") +PropertyRedirects=(OldName="/Script/D1.MasterAI.LeftWeaponCollisionComponent",NewName="/Script/D1.MasterAI.SubCollisionComponent") +PropertyRedirects=(OldName="/Script/D1.CombatPlayerCharacter.Weapon",NewName="/Script/D1.CombatPlayerCharacter.StartingEquipment") ++PropertyRedirects=(OldName="/Script/D1.CombatPlayerCharacter.StartingEquipment",NewName="/Script/D1.CombatPlayerCharacter.EquippedItems") ++PropertyRedirects=(OldName="/Script/D1.CombatPlayerCharacter.EquippedItems",NewName="/Script/D1.CombatPlayerCharacter.StartingEquipments") diff --git a/Content/CombatSystem/Input/Actions/IA_UseItem.uasset b/Content/CombatSystem/Input/Actions/IA_UseItem.uasset new file mode 100644 index 0000000000000000000000000000000000000000..49473caecf73b192bb7edfaee6b560c083c08109 GIT binary patch literal 1371 zcmX@utTpe)|Ns9Jm>C$jm>3v70%;In1md?D8=ky$n(~GFmf<4D-EMjsK(Sja3=BFz zTHie}H&x#`KQ}3{B)GD;BsEvxGq0euMBg#FBr`v+Sl`nzKD0R16DR>x&A`A7#DyS3 zfuJ5}k0OvZH+D5QFm!P>u{3gWGIBL@bhB`DwsbRhbTb2rI-0^21JyIg104pm8?5<0 z)RE7DGzfnO;>F!2jvETf+!m=#X)mA3{Yd1R#M%#Q&bzM;n|4M|LAd~AH^>~2Ls)?< zMh1sNJ&Zy?p0;+VtEqNSYEEimajLGVo)K7{fnn{pCLHoWO<-_5mFXvlAqRArIx9pB zMgqh1KPa$3c4{NZftY^zd8rIvn2++x0yzPR$=QkNsXqD1i8+~7iJ;K)1BPvJL1J<$ zgHTCj2dTk*jZ^Qm2+&~t;N+srf)ZdP6{UvyCuOB3moWVB)U^{sl5@?=NX$!4O##Op z!_{@C->?B?opTb4iy2DFD<*AKtiCXhQu_3kVFCxCs52cwItCcu_Te< zNyC=O96$l6#~6y;J46K#e7L%~I!jWa5eW=&2>1&OHIQC(fUfQjP#rtEA|M~84&)#h zfQiBQAQ~oytPYgA(7`{TJ;-99&;bEZxPSrz1VFKj3xHA`G}SWzjY2UCqz7G$3u+K3 z)i^@g&ydVVHV-Ndr_jxUOJHGu%t4Pxw77l^45M>Ut3k@qq?Ld|uoQ-piu8~Z2gn~F zKZPacl%|GM7NjzOV%I4@ADG$lz%K9uruec{NQ$#XG7~A)>Vaj|3EHL(E+F`Uh7bbC r!KesSOt2(62rMS2e_Pt1XMN-%$WJn8Hk9472xK|6U(*084pI*QiCYoF literal 0 HcmV?d00001 diff --git a/Content/CombatSystem/Input/IMC_Default.uasset b/Content/CombatSystem/Input/IMC_Default.uasset index 9480ed8d2ffc22b8a30e227b779e6eeb42987058..174a13f3749be11c50db47f85626152d51d082b5 100644 GIT binary patch literal 23002 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 Cfq|(2 literal 22353 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 diff --git a/Source/D1/Actor/BaseConsumable.cpp b/Source/D1/Actor/BaseConsumable.cpp new file mode 100644 index 00000000..d4150710 --- /dev/null +++ b/Source/D1/Actor/BaseConsumable.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Actor/BaseConsumable.h" + diff --git a/Source/D1/Actor/BaseConsumable.h b/Source/D1/Actor/BaseConsumable.h new file mode 100644 index 00000000..bc97e057 --- /dev/null +++ b/Source/D1/Actor/BaseConsumable.h @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Actor/BaseEquippable.h" +#include "BaseConsumable.generated.h" + +/** + * + */ +UCLASS() +class D1_API ABaseConsumable : public ABaseEquippable +{ + GENERATED_BODY() + +}; diff --git a/Source/D1/Actor/BaseEquippable.cpp b/Source/D1/Actor/BaseEquippable.cpp index 9996f4bf..8786a0ac 100644 --- a/Source/D1/Actor/BaseEquippable.cpp +++ b/Source/D1/Actor/BaseEquippable.cpp @@ -61,4 +61,8 @@ bool ABaseEquippable::GetIsEquipped() return bIsEquipped; } +void ABaseEquippable::UseItem() +{ +} + diff --git a/Source/D1/Actor/BaseEquippable.h b/Source/D1/Actor/BaseEquippable.h index fad5949f..d2a23240 100644 --- a/Source/D1/Actor/BaseEquippable.h +++ b/Source/D1/Actor/BaseEquippable.h @@ -3,11 +3,12 @@ #pragma once #include "CoreMinimal.h" +#include "GameplayTagAssetInterface.h" #include "GameFramework/Actor.h" #include "BaseEquippable.generated.h" UCLASS() -class D1_API ABaseEquippable : public AActor +class D1_API ABaseEquippable : public AActor, public IGameplayTagAssetInterface { GENERATED_BODY() @@ -23,6 +24,12 @@ public: virtual void OnUnequipped(); virtual void SetIsEquipped(bool IsEquipped); virtual bool GetIsEquipped(); + virtual void UseItem(); + +protected: + // Inherited via IGameplayTagAssetInterface + virtual void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const override { TagContainer = OwnedGameplayTags; } + protected: UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = "true")) TObjectPtr DefaultSceneRoot; @@ -37,4 +44,7 @@ protected: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Initialization") FName AttachSocketName; +private: + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GameplayTags", meta = (AllowPrivateAccess = "true")) + FGameplayTagContainer OwnedGameplayTags; }; diff --git a/Source/D1/CombatPlayerCharacter.cpp b/Source/D1/CombatPlayerCharacter.cpp index 73c53924..7784d55c 100644 --- a/Source/D1/CombatPlayerCharacter.cpp +++ b/Source/D1/CombatPlayerCharacter.cpp @@ -124,7 +124,7 @@ void ACombatPlayerCharacter::BeginPlay() FActorSpawnParameters spawnParam; spawnParam.Owner = this; spawnParam.Instigator = this; - for (auto Equipment : StartingEquipment) + for (auto Equipment : StartingEquipments) { ABaseEquippable* SpawnItem = Cast(GetWorld()->SpawnActor(Equipment, &GetActorTransform(), spawnParam)); if (SpawnItem) @@ -255,6 +255,9 @@ void ACombatPlayerCharacter::SetupPlayerInputComponent(class UInputComponent* Pl //Block EnhancedInputComponent->BindAction(BlockAction, ETriggerEvent::Triggered, this, &ACombatPlayerCharacter::Blocking); EnhancedInputComponent->BindAction(BlockAction, ETriggerEvent::Completed, this, &ACombatPlayerCharacter::StopBlocking); + + //Use Item + EnhancedInputComponent->BindAction(UseItemAction, ETriggerEvent::Started, this, &ACombatPlayerCharacter::UseItem); } } @@ -362,6 +365,25 @@ float ACombatPlayerCharacter::PerformAttack(FGameplayTag AttackType, int32 Attac return attackDuration; } +bool ACombatPlayerCharacter::UseItemByTag(FGameplayTag ItemTag) +{ + for (auto Item : EquippedItems) + { + if(IsValid(Item)) + { + IGameplayTagAssetInterface* TagItem = Cast(Item); + if(!TagItem) + continue; + if(TagItem->HasMatchingGameplayTag(ItemTag)) + { + Item->UseItem(); + return true; + } + } + } + return false; +} + void ACombatPlayerCharacter::SetMovementSpeedMode(EMovementSpeedMode NewSpeedMode) { if (NewSpeedMode == MovementSpeedMode) @@ -557,6 +579,11 @@ void ACombatPlayerCharacter::StopBlocking(const FInputActionValue& Value) CombatComponent->SetBlockingState(false); } +void ACombatPlayerCharacter::UseItem(const FInputActionValue& Value) +{ + +} + void ACombatPlayerCharacter::CharacterStateBegin(FGameplayTag CharState) { if (FGameplayTag::EmptyTag == CharState) diff --git a/Source/D1/CombatPlayerCharacter.h b/Source/D1/CombatPlayerCharacter.h index b7ce4f15..19c9ad87 100644 --- a/Source/D1/CombatPlayerCharacter.h +++ b/Source/D1/CombatPlayerCharacter.h @@ -76,6 +76,9 @@ class ACombatPlayerCharacter : public ACharacter, public ICombatInterface, publi UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) UInputAction* BlockAction; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) + UInputAction* UseItemAction; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Input, meta = (AllowPrivateAccess = "true")) float ChargeAttackTime; @@ -128,6 +131,7 @@ public: virtual EMovementSpeedMode GetCombatMovementSpeedMode() override { return GetMovementSpeedMode(); } virtual float PerformAction(FGameplayTag ActionTag, FGameplayTag StateTag, int32 MontageIndex, bool bRandomIndex = false); virtual float PerformAttack(FGameplayTag AttackType, int32 AttackIndex, bool bRandomIndex = false); + virtual bool UseItemByTag(FGameplayTag ItemTag) override; // Inherited via IGameplayTagAssetInterface virtual void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const override { TagContainer = OwnedGameplayTags; } @@ -152,6 +156,7 @@ protected: void ToggleLockOn(const FInputActionValue& Value); void Blocking(const FInputActionValue& Value); void StopBlocking(const FInputActionValue& Value); + void UseItem(const FInputActionValue& Value); private://Delegate void CharacterStateBegin(FGameplayTag CharState); @@ -206,11 +211,12 @@ public: TObjectPtr StatsComponent; UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components", meta=(AllowPrivateAccess="true")) TObjectPtr TargetingComponent; - - //TODO : 방패 착용 후 Toggle Event 시 Weapon의 소켓이 안바뀌는 버그 + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Equipment", meta = (AllowPrivateAccess = "true")) - TArray> StartingEquipment; - + TArray> StartingEquipments; + UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Equipment", meta = (AllowPrivateAccess = "true")) + TArray> EquippedItems; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Hit", meta = (AllowPrivateAccess = "true")) FName PelvisBoneName; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Hit", meta = (AllowPrivateAccess = "true")) diff --git a/Source/D1/Interface/CombatInterface.cpp b/Source/D1/Interface/CombatInterface.cpp index b7f151d2..486649de 100644 --- a/Source/D1/Interface/CombatInterface.cpp +++ b/Source/D1/Interface/CombatInterface.cpp @@ -14,3 +14,8 @@ float ICombatInterface::PerformAttack(FGameplayTag AttackType, int32 AttackIndex { return 0.f; } + +bool ICombatInterface::UseItemByTag(FGameplayTag ItemTag) +{ + return false; +} diff --git a/Source/D1/Interface/CombatInterface.h b/Source/D1/Interface/CombatInterface.h index e896eec6..97205534 100644 --- a/Source/D1/Interface/CombatInterface.h +++ b/Source/D1/Interface/CombatInterface.h @@ -52,6 +52,7 @@ public: virtual float PerformAction(FGameplayTag ActionTag, FGameplayTag StateTag = FCombatGameplayTags::Get().Character_State_GeneralActionState, int32 MontageIndex = 0, bool bRandomIndex = false); UFUNCTION(Category="CombatActions") virtual float PerformAttack(FGameplayTag AttackType, int32 AttackIndex, bool bRandomIndex = false); - + UFUNCTION(Category="CombatActions") + virtual bool UseItemByTag(FGameplayTag ItemTag); };