From 75df1a6bb104ea952e566356e7fdb03ac1f2f63d Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 12 Feb 2024 17:53:21 +0000 Subject: [PATCH] Fixed Primary Weapon not replacing when picking up new primary bug --- .../.idea.EndlessVendetta/.idea/workspace.xml | 8 +++++--- .../EndlessVendetta.sln.DotSettings.user | 2 +- .../EndlessVendetta/EndlessVendettaCharacter.cpp | 16 +++++++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index c48fb8ef..addf0a8a 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -9,6 +9,7 @@ + @@ -128,6 +129,7 @@ + diff --git a/EndlessVendetta/EndlessVendetta.sln.DotSettings.user b/EndlessVendetta/EndlessVendetta.sln.DotSettings.user index 3e7d92d6..88d9a609 100644 --- a/EndlessVendetta/EndlessVendetta.sln.DotSettings.user +++ b/EndlessVendetta/EndlessVendetta.sln.DotSettings.user @@ -1,5 +1,5 @@  - C:\Users\Rafal\AppData\Local\JetBrains\Rider2023.3\resharper-host\temp\Rider\vAny\CoverageData\_EndlessVendetta.-1253833435\Snapshot\snapshot.utdcvr + <SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> <Solution /> </SessionState> \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index 7073da0c..509df1eb 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -364,6 +364,7 @@ void AEndlessVendettaCharacter::EquipPrimary() PrimaryWeapon->AttachToComponent(Mesh1P, AttachmentRules, FName("UnEquipGunSocket")); PrimaryWeapon->SetActorHiddenInGame(true); PrimaryWeapon->SetActorEnableCollision(false); + GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red, TEXT("Weapon Removing because validated")); this->GetFirstPersonCameraComponent()->SetFieldOfView(90); UE_LOG(LogTemp, Warning, TEXT("Primary Weapon Is Hidden: %hhd"), PrimaryWeapon->IsHidden()); PrimaryWeapon = nullptr; @@ -387,6 +388,7 @@ void AEndlessVendettaCharacter::EquipPrimary() if (!bIsPrimaryWeaponCreated) { PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); + GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red, TEXT("Spawning weapon")); PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); PrimaryWeapon = Cast(PrimaryWeaponActor); PrimaryWeapon->SetActorHiddenInGame(false); @@ -394,11 +396,14 @@ void AEndlessVendettaCharacter::EquipPrimary() bIsPrimaryWeaponCreated = true; } } + //For when you already have all your weapons and ur switching with 1 and 2 or when your picking up a weapon with a weapon in hand PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); + GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Green, TEXT("non ifstatement code running")); PrimaryWeapon = Cast(PrimaryWeaponActor); PrimaryWeapon->SetActorHiddenInGame(false); GetWorldTimerManager().ClearTimer(PrimaryWeapon->reloadTimerHandle); bIsCurrentlyHoldingWeapon = true; + bHasRifle = true; } void AEndlessVendettaCharacter::EquipSecondary() @@ -454,14 +459,23 @@ void AEndlessVendettaCharacter::EquipSecondary() void AEndlessVendettaCharacter::WeaponSwitcher(AActor* Outhit) { + FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true); + FDetachmentTransformRules DetatchRules(EDetachmentRule::KeepWorld, false); + FActorSpawnParameters spawnParams; + spawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; if (Outhit->ActorHasTag("PrimaryWeapon")) { + PrimaryWeaponClass = Outhit->GetClass(); if (IsValid(PrimaryWeapon)) { + if(bIsCurrentlyHoldingWeapon) + { + GEngine->AddOnScreenDebugMessage(-1, 2.f, FColor::Blue, TEXT("Player is currently holding weapon")); + PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); + } EquipPrimary(); } bIsWeaponPickedUp = true; - PrimaryWeaponClass = Outhit->GetClass(); UEVGameInstance* GI = Cast(GetGameInstance()); if (IsValid(GI->MainSaveGameInstanceRef)) {