From cd6b6e6241522d141de53d325e8b69c161998668 Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Sat, 30 Apr 2022 13:09:28 +0200 Subject: [PATCH] 45 - Equipping Weapons --- Config/DefaultInput.ini | 1 + .../Mesh/SK_EpicCharacter_Skeleton.uasset | Bin 44388 -> 45574 bytes Source/Blaster/Character/BlasterCharacter.cpp | 26 +++++++++++- Source/Blaster/Character/BlasterCharacter.h | 10 ++++- Source/Blaster/Components/CombatComponent.cpp | 39 ++++++++++++++++++ Source/Blaster/Components/CombatComponent.h | 28 +++++++++++++ Source/Blaster/Weapon/Weapon.h | 2 + 7 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 Source/Blaster/Components/CombatComponent.cpp create mode 100644 Source/Blaster/Components/CombatComponent.h diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini index 7e7f73c..7821d03 100644 --- a/Config/DefaultInput.ini +++ b/Config/DefaultInput.ini @@ -75,6 +75,7 @@ DefaultViewportMouseLockMode=LockOnCapture FOVScale=0.011110 DoubleClickTime=0.200000 +ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar) ++ActionMappings=(ActionName="Equip",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=E) +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W) +AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S) +AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D) diff --git a/Content/Assets/LearningKit_Games/Assets/Characters/Character/Mesh/SK_EpicCharacter_Skeleton.uasset b/Content/Assets/LearningKit_Games/Assets/Characters/Character/Mesh/SK_EpicCharacter_Skeleton.uasset index 2c476a72ed9290d22a8f98026c91ee5cfc36fa46..5e81ab384819f3f2de0cac6a69fbcbe92172b9ae 100644 GIT binary patch literal 45574 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 literal 44388 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"OverheadWidget")); OverheadWidget->SetupAttachment(RootComponent); + + Combat = CreateDefaultSubobject(TEXT("CombatComponent")); + Combat->SetIsReplicated(true); } void ABlasterCharacter::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const @@ -38,6 +42,16 @@ void ABlasterCharacter::GetLifetimeReplicatedProps(TArray& Ou DOREPLIFETIME_CONDITION(ABlasterCharacter, OverlappingWeapon, COND_OwnerOnly); } +void ABlasterCharacter::PostInitializeComponents() +{ + Super::PostInitializeComponents(); + + if (Combat) + { + Combat->Character = this; + } +} + void ABlasterCharacter::BeginPlay() { Super::BeginPlay(); @@ -53,6 +67,8 @@ void ABlasterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputCo Super::SetupPlayerInputComponent(PlayerInputComponent); PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump); + PlayerInputComponent->BindAction("Equip", IE_Pressed, this, &ABlasterCharacter::EquipButtonPressed); + PlayerInputComponent->BindAxis("MoveForward", this, &ABlasterCharacter::MoveForward); PlayerInputComponent->BindAxis("MoveRight", this, &ABlasterCharacter::MoveRight); PlayerInputComponent->BindAxis("Turn", this, &ABlasterCharacter::Turn); @@ -91,13 +107,21 @@ void ABlasterCharacter::LookUp(float Value) AddControllerPitchInput(Value); } +void ABlasterCharacter::EquipButtonPressed() +{ + if (Combat && HasAuthority()) + { + Combat->EquipWeapon(OverlappingWeapon); + } +} + void ABlasterCharacter::SetOverlappingWeapon(AWeapon* Weapon) { if (OverlappingWeapon) { OverlappingWeapon->ShowPickupWidget(false); } - + OverlappingWeapon = Weapon; if (IsLocallyControlled()) { diff --git a/Source/Blaster/Character/BlasterCharacter.h b/Source/Blaster/Character/BlasterCharacter.h index 56dd6ca..b20faa1 100644 --- a/Source/Blaster/Character/BlasterCharacter.h +++ b/Source/Blaster/Character/BlasterCharacter.h @@ -16,6 +16,8 @@ public: virtual void Tick(float DeltaTime) override; virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + virtual void PostInitializeComponents() override; + protected: virtual void BeginPlay() override; @@ -23,7 +25,8 @@ protected: void MoveRight(float Value); void Turn(float Value); void LookUp(float Value); - + void EquipButtonPressed(); + private: UPROPERTY(VisibleAnywhere, Category="Camera") class USpringArmComponent* CameraBoom; @@ -39,7 +42,10 @@ private: UFUNCTION() void OnRep_OverlappingWeapon(AWeapon* LastWeapon); - + + UPROPERTY(VisibleAnywhere) + class UCombatComponent* Combat; + public: void SetOverlappingWeapon(AWeapon* Weapon); }; diff --git a/Source/Blaster/Components/CombatComponent.cpp b/Source/Blaster/Components/CombatComponent.cpp new file mode 100644 index 0000000..1d37681 --- /dev/null +++ b/Source/Blaster/Components/CombatComponent.cpp @@ -0,0 +1,39 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "CombatComponent.h" + +#include "Blaster/Character/BlasterCharacter.h" +#include "Blaster/Weapon/Weapon.h" +#include "Engine/SkeletalMeshSocket.h" + +UCombatComponent::UCombatComponent() +{ + PrimaryComponentTick.bCanEverTick = false; +} + +void UCombatComponent::BeginPlay() +{ + Super::BeginPlay(); +} + +void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + +} + +void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip) +{ + if (Character == nullptr || WeaponToEquip == nullptr) return; + + EquippedWeapon = WeaponToEquip; + EquippedWeapon->SetWeaponState(EWeaponState::EWS_Equipped); + const USkeletalMeshSocket* HandSocket = Character->GetMesh()->GetSocketByName(FName("RightHandSocket")); + if (HandSocket) + { + HandSocket->AttachActor(EquippedWeapon, Character->GetMesh()); + } + EquippedWeapon->SetOwner(Character); + EquippedWeapon->ShowPickupWidget(false); +} diff --git a/Source/Blaster/Components/CombatComponent.h b/Source/Blaster/Components/CombatComponent.h new file mode 100644 index 0000000..6b3f9cd --- /dev/null +++ b/Source/Blaster/Components/CombatComponent.h @@ -0,0 +1,28 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/ActorComponent.h" +#include "CombatComponent.generated.h" + + +UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) +class BLASTER_API UCombatComponent : public UActorComponent +{ + GENERATED_BODY() + +public: + UCombatComponent(); + virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; + friend class ABlasterCharacter; + + void EquipWeapon(class AWeapon* WeaponToEquip); + +protected: + virtual void BeginPlay() override; + +private: + class ABlasterCharacter* Character; + class AWeapon* EquippedWeapon; +}; diff --git a/Source/Blaster/Weapon/Weapon.h b/Source/Blaster/Weapon/Weapon.h index de54ee0..3ddb7d6 100644 --- a/Source/Blaster/Weapon/Weapon.h +++ b/Source/Blaster/Weapon/Weapon.h @@ -12,6 +12,7 @@ enum class EWeaponState : uint8 EWS_Initial UMETA(DisplayName = "Initial State"), EWS_Equipped UMETA(DisplayName = "Equipped"), EWS_Dropped UMETA(DisplayName = "Dropped"), + EWS_MAX UMETA(DisplayName = "DefaultMAX") }; @@ -59,4 +60,5 @@ private: class UWidgetComponent* PickupWidget; public: + FORCEINLINE void SetWeaponState(EWeaponState State) { WeaponState = State; }; };