From 659e94c752191eebf4ef77062595aa801598fa1e Mon Sep 17 00:00:00 2001 From: Caleb Buhungiro Date: Sat, 5 Jul 2025 21:51:01 +0800 Subject: [PATCH] added abilitInputID action handling --- .../Combo/Animations/AM_ComboCrunch.uasset | 4 ++-- Content/Input/GAS/IA_BasicAttack.uasset | 3 +++ Content/Input/IM_Gameplay.uasset | 4 ++-- Content/Player/CPlayerCharacter_BP.uasset | 4 ++-- .../Private/Character/CPlayerCharacter.cpp | 21 ++++++++++++++++ .../Private/GAS/CAbilitySystemComponent.cpp | 19 +++++++++++---- .../Private/GAS/CGameplayAbilityTypes.cpp | 4 ++++ .../GAS/UCAbilitySystemStatics.cpp | 3 ++- .../Public/Character/CPlayerCharacter.h | 14 ++++++++--- .../Public/GAS/CAbilitySystemComponent.h | 10 ++++---- .../Crunch/Public/GAS/CGameplayAbilityTypes.h | 24 +++++++++++++++++++ 11 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 Content/Input/GAS/IA_BasicAttack.uasset create mode 100644 Source/Crunch/Private/GAS/CGameplayAbilityTypes.cpp rename Source/Crunch/{Public => Private}/GAS/UCAbilitySystemStatics.cpp (79%) create mode 100644 Source/Crunch/Public/GAS/CGameplayAbilityTypes.h diff --git a/Content/Characters/Crunch/GameplayAbility/Combo/Animations/AM_ComboCrunch.uasset b/Content/Characters/Crunch/GameplayAbility/Combo/Animations/AM_ComboCrunch.uasset index 6ad2df3..bc69e69 100644 --- a/Content/Characters/Crunch/GameplayAbility/Combo/Animations/AM_ComboCrunch.uasset +++ b/Content/Characters/Crunch/GameplayAbility/Combo/Animations/AM_ComboCrunch.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:527e90c2f11f888a3fe13c6ae78766802ef96c6750a6378a9e4b4676045f89ef -size 10611 +oid sha256:7eaa7d066552b478515b4862e607ac12e1cc7d1e860799fd8bd2067fd4e70ac4 +size 13092 diff --git a/Content/Input/GAS/IA_BasicAttack.uasset b/Content/Input/GAS/IA_BasicAttack.uasset new file mode 100644 index 0000000..cc80f1e --- /dev/null +++ b/Content/Input/GAS/IA_BasicAttack.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da9d044f21d529c341bd7a2a214fdb357ddd1800531d867bc7a6d7775316aff0 +size 1216 diff --git a/Content/Input/IM_Gameplay.uasset b/Content/Input/IM_Gameplay.uasset index 872a411..6da6640 100644 --- a/Content/Input/IM_Gameplay.uasset +++ b/Content/Input/IM_Gameplay.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5214aaca3f4bc80a2f0a3cc042d75e02aa598320dcdc0252e7d7f6c688e77cc -size 4937 +oid sha256:4c5dd55d5c9e31df00e8e76174e0872da2c7d05bff803107edcc4615d5121382 +size 5422 diff --git a/Content/Player/CPlayerCharacter_BP.uasset b/Content/Player/CPlayerCharacter_BP.uasset index 559024f..0b47a11 100644 --- a/Content/Player/CPlayerCharacter_BP.uasset +++ b/Content/Player/CPlayerCharacter_BP.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b640ae13c56425af6299c324cd36d8e44d41bbeccbf310f8879c0c582abddfb7 -size 67485 +oid sha256:976a6300bd6c67d6f81b22658526a204b6c5e411c621e87c5b4f77b80d5a464f +size 83781 diff --git a/Source/Crunch/Private/Character/CPlayerCharacter.cpp b/Source/Crunch/Private/Character/CPlayerCharacter.cpp index ccd6913..bc1b317 100644 --- a/Source/Crunch/Private/Character/CPlayerCharacter.cpp +++ b/Source/Crunch/Private/Character/CPlayerCharacter.cpp @@ -3,6 +3,7 @@ #include "Crunch/Public/Character/CPlayerCharacter.h" +#include "AbilitySystemComponent.h" #include "Camera/CameraComponent.h" #include "Crunch/Public/Player/CPlayerController.h" #include "GameFramework/SpringArmComponent.h" @@ -52,6 +53,17 @@ void ACPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputCo EnhancedInputComp->BindAction(JumpInputAction, ETriggerEvent::Triggered, this, &ThisClass::Jump); EnhancedInputComp->BindAction(LookInputAction, ETriggerEvent::Triggered, this, &ThisClass::HandleLookInput); EnhancedInputComp->BindAction(MoveInputAction, ETriggerEvent::Triggered, this, &ThisClass::HandleMoveInput); + + for (const auto InputIdPair : GameplayAbilityInputActions) + { + EnhancedInputComp->BindAction( + InputIdPair.Value, + ETriggerEvent::Triggered, + this, + &ThisClass::HandleAbilityInput, + InputIdPair.Key + ); + } } } @@ -71,6 +83,15 @@ void ACPlayerCharacter::HandleMoveInput(const FInputActionValue& InputActionValu AddMovementInput(GetMoveFwdDir() * InputVal.Y + GetLookRightDir() * InputVal.X); } +void ACPlayerCharacter::HandleAbilityInput(const FInputActionValue& InputActionValue, ECAbilityInputID InputID) +{ + const bool bPressed{InputActionValue.Get()}; + const auto AbilitySystemComponent{GetAbilitySystemComponent()}; + bPressed + ? AbilitySystemComponent->AbilityLocalInputPressed(static_cast(InputID)) + : AbilitySystemComponent->AbilityLocalInputReleased(static_cast(InputID)); +} + FVector ACPlayerCharacter::GetLookRightDir() const { return ViewCamera->GetRightVector(); diff --git a/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp b/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp index 5e06c3c..44baebd 100644 --- a/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp +++ b/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp @@ -24,13 +24,22 @@ void UCAbilitySystemComponent::GiveInitialAbilities() { if (!GetOwner() || !GetOwner()->HasAuthority()) return; - for (const auto& AbilityClass : Abilities) + for (const auto& AbilityPairClass : Abilities) { - GiveAbility(FGameplayAbilitySpec(AbilityClass, 0, -1, nullptr)); + GiveAbility(FGameplayAbilitySpec( + AbilityPairClass.Value, + 0, + static_cast(AbilityPairClass.Key), + nullptr + )); } - - for (const auto& AbilityClass : BasicAbilities) + for (const auto& AbilityPairClass : BasicAbilities) { - GiveAbility(FGameplayAbilitySpec(AbilityClass, 1, -1, nullptr)); + GiveAbility(FGameplayAbilitySpec( + AbilityPairClass.Value, + 1, + static_cast(AbilityPairClass.Key), + nullptr + )); } } diff --git a/Source/Crunch/Private/GAS/CGameplayAbilityTypes.cpp b/Source/Crunch/Private/GAS/CGameplayAbilityTypes.cpp new file mode 100644 index 0000000..a7a6d08 --- /dev/null +++ b/Source/Crunch/Private/GAS/CGameplayAbilityTypes.cpp @@ -0,0 +1,4 @@ +// Multiplayer By Caleb + + +#include "GAS/CGameplayAbilityTypes.h" diff --git a/Source/Crunch/Public/GAS/UCAbilitySystemStatics.cpp b/Source/Crunch/Private/GAS/UCAbilitySystemStatics.cpp similarity index 79% rename from Source/Crunch/Public/GAS/UCAbilitySystemStatics.cpp rename to Source/Crunch/Private/GAS/UCAbilitySystemStatics.cpp index aa8235e..7a0f9bf 100644 --- a/Source/Crunch/Public/GAS/UCAbilitySystemStatics.cpp +++ b/Source/Crunch/Private/GAS/UCAbilitySystemStatics.cpp @@ -1,4 +1,5 @@ -#include "UCAbilitySystemStatics.h" + +#include "GAS/UCAbilitySystemStatics.h" #include "GameplayTagContainer.h" diff --git a/Source/Crunch/Public/Character/CPlayerCharacter.h b/Source/Crunch/Public/Character/CPlayerCharacter.h index a66ddf9..55d2775 100644 --- a/Source/Crunch/Public/Character/CPlayerCharacter.h +++ b/Source/Crunch/Public/Character/CPlayerCharacter.h @@ -6,6 +6,7 @@ #include "CCharacter.h" #include "CPlayerCharacter.generated.h" +enum class ECAbilityInputID : uint8; class UInputAction; class UInputMappingContext; class UCameraComponent; @@ -32,7 +33,14 @@ private: UPROPERTY(EditDefaultsOnly, Category= "View") FRotator RotationRate{FRotator(0.0f, 720.0f, 0.0f)}; + + FVector GetLookRightDir() const; + FVector GetLookFwdDir() const; + FVector GetMoveFwdDir() const; + /*************************************************************************************/ + //------------------------------ Input------------------------------------------------ + /*************************************************************************************/ UPROPERTY(EditDefaultsOnly, Category= "Input") TObjectPtr GameplayMappingContext; UPROPERTY(EditDefaultsOnly, Category= "Input") @@ -41,11 +49,11 @@ private: TObjectPtr LookInputAction; UPROPERTY(EditDefaultsOnly, Category= "Input") TObjectPtr MoveInputAction; + UPROPERTY(EditDefaultsOnly, Category= "Input") + TMap GameplayAbilityInputActions; void HandleLookInput(const FInputActionValue& InputActionValue); void HandleMoveInput(const FInputActionValue& InputActionValue); + void HandleAbilityInput(const FInputActionValue& InputActionValue, ECAbilityInputID AbilityInputID); - FVector GetLookRightDir() const; - FVector GetLookFwdDir() const; - FVector GetMoveFwdDir() const; }; diff --git a/Source/Crunch/Public/GAS/CAbilitySystemComponent.h b/Source/Crunch/Public/GAS/CAbilitySystemComponent.h index d0669d8..a21ce6a 100644 --- a/Source/Crunch/Public/GAS/CAbilitySystemComponent.h +++ b/Source/Crunch/Public/GAS/CAbilitySystemComponent.h @@ -7,6 +7,8 @@ #include "CAbilitySystemComponent.generated.h" +enum class ECAbilityInputID : uint8; + UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) class CRUNCH_API UCAbilitySystemComponent : public UAbilitySystemComponent { @@ -19,10 +21,10 @@ public: private: UPROPERTY(EditDefaultsOnly, Category="Gameplay Effects") TArray> InitialEffects; - + UPROPERTY(EditDefaultsOnly, Category="Gameplay Ability") - TArray> Abilities; - + TMap> Abilities; + UPROPERTY(EditDefaultsOnly, Category="Gameplay Ability") - TArray> BasicAbilities; + TMap> BasicAbilities; }; diff --git a/Source/Crunch/Public/GAS/CGameplayAbilityTypes.h b/Source/Crunch/Public/GAS/CGameplayAbilityTypes.h new file mode 100644 index 0000000..45a1303 --- /dev/null +++ b/Source/Crunch/Public/GAS/CGameplayAbilityTypes.h @@ -0,0 +1,24 @@ +// Multiplayer By Caleb + +#pragma once + +#include "CoreMinimal.h" +#include "CGameplayAbilityTypes.generated.h" + +/** + * + */ +UENUM(BlueprintType) +enum class ECAbilityInputID : uint8 +{ + None UMETA(DisplayName = "None"), + BasicAttack UMETA(DisplayName = "BasicAttack"), + AbilityOne UMETA(DisplayName = "AbilityOne"), + AbilityTwo UMETA(DisplayName = "AbilityTwo"), + AbilityThree UMETA(DisplayName = "AbilityThree"), + AbilityFour UMETA(DisplayName = "AbilityFour"), + AbilityFive UMETA(DisplayName = "AbilityFive"), + AbilitySix UMETA(DisplayName = "AbilitySix"), + Confirm UMETA(DisplayName = "Confirm"), + Cancel UMETA(DisplayName = "Cancel"), +};