diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index f851630e..1378ceef 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb7eb23a18c0ad9f5cf37ae72d45bac1d1b1d90fac9281cfa3e3233b9b6a3d44 -size 42950 +oid sha256:2ffa922873f3999c8ef2d7ff492cedee047c6e06cc8b56c6ee9aaeab08d8fbad +size 42684 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset new file mode 100644 index 00000000..777ad054 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00849c635d8e843e1520e12a92f95fd99d9b29e670718919dc847fa283ecc3c9 +size 40704 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset index 877f5854..14593b0f 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63a33ee4cfad25c36bd022a8723b9b6ff80d70127366efa8983549044fd1f8ac -size 39198 +oid sha256:f9481ef86ac85568b121922e82b67586cd754928de5fa47e2c8ef57066b514b3 +size 40119 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset index 5995b7ce..af5ea1b4 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fd67b08624a4a707041edc782af848e1042237175152a5faf6db5b2d4ec997c -size 75188 +oid sha256:5e1e829f4770985384af4baf7f94ed5089f11e12ec69b2ec09fb5f193a1ab960 +size 124465 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset index 206389d1..f54627fd 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a94e9d1b1b74a330a53970bbb11f1357c02996a00a31d4bdafc5c9313759fb2 -size 49286 +oid sha256:5aebaef6e44e3ebd6edf9b98ada3bdc65e43a0e7372ac8545eee7d3f5f535e21 +size 125647 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset index 5f03829f..ff0850c9 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b199cbe84b6c49806f9646990c9c60ff7199214add19091ea0d7a47896daf53 -size 64350 +oid sha256:4aef926e64cc0bd15cd6df6c9683311954a37d3a4576cd79a564efe16ef7920d +size 64353 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_WeaponStatsPrompt.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_WeaponStatsPrompt.uasset new file mode 100644 index 00000000..88947b41 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_WeaponStatsPrompt.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a45878c4f97b973894f65722a55015a06cb6acc25e913c9d4045fd4532176701 +size 192580 diff --git a/EndlessVendetta/Content/LevelPrototyping/Scenes/TutorialHit.umap b/EndlessVendetta/Content/LevelPrototyping/Scenes/TutorialHit.umap index 1084c025..3ff2d458 100644 --- a/EndlessVendetta/Content/LevelPrototyping/Scenes/TutorialHit.umap +++ b/EndlessVendetta/Content/LevelPrototyping/Scenes/TutorialHit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f53171e2bbc59d22f3017e790d52a9c27e1a17b9c1118f7f4d0e3fe44210789c -size 298511 +oid sha256:a81357c429cab843eb8ff42acc335aa7e0ee24d4d441286eb3d80b04a70b1231 +size 307063 diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.cpp index 56ed2056..7d884ef8 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.cpp @@ -266,6 +266,11 @@ void ABountyDirector::Interact() PC_Display->LoadOS(); } +void ABountyDirector::InteractPrompt() +{ + +} + void ABountyDirector::DestroyBountyDirectorPCWidget() { if (IsValid(PC_DisplayWidget)) PC_DisplayWidget->RemoveFromParent(); diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h index 73795c2e..3c0f399a 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h @@ -54,6 +54,8 @@ class ENDLESSVENDETTA_API ABountyDirector : public AActor, public IInteractionIn // Opens up Bounty Director PC Interface void Interact() override; + // Prompts player to interact + void InteractPrompt() override; protected: int Favours = 20; diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index bca0966d..e3285c39 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -69,6 +69,23 @@ void AEndlessVendettaCharacter::BeginPlay() void AEndlessVendettaCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); + + WeaponPickUpSystem(); + +} + +void AEndlessVendettaCharacter::WeaponPickUpSystem() +{ + FHitResult OutHit; + FCollisionQueryParams QueryParams = FCollisionQueryParams::DefaultQueryParam; + QueryParams.AddIgnoredActor(this); + FVector LT_Start = FirstPersonCameraComponent->GetComponentLocation(); + FVector LT_End = LT_Start + (FirstPersonCameraComponent->GetForwardVector() * InteractionRange); + if (!GetWorld()->LineTraceSingleByChannel(OutHit, LT_Start, LT_End, ECC_Camera, QueryParams)) return; + + AActor* HitActor = OutHit.GetActor(); + IInteractionInterface* InteractableActor = Cast(HitActor); + if (InteractableActor) InteractableActor->InteractPrompt(); } //////////////////////////////////////////////////////////////////////////// Input @@ -121,9 +138,17 @@ void AEndlessVendettaCharacter::Interact() QueryParams.AddIgnoredActor(this); FVector LT_Start = FirstPersonCameraComponent->GetComponentLocation(); FVector LT_End = LT_Start + (FirstPersonCameraComponent->GetForwardVector() * InteractionRange); + if(IsValid(PrimaryWeapon)) + { + QueryParams.AddIgnoredActor(PrimaryWeapon); + } + if(IsValid(SecondaryWeapon)) + { + QueryParams.AddIgnoredActor(SecondaryWeapon); + } if (!GetWorld()->LineTraceSingleByChannel(OutHit, LT_Start, LT_End, ECC_Camera, QueryParams)) return; - AActor* HitActor = OutHit.GetActor(); + UE_LOG(LogTemp, Warning, TEXT("Hit actor: %s"), *HitActor->GetName()); IInteractionInterface* InteractableActor = Cast(HitActor); if (InteractableActor) InteractableActor->Interact(); } @@ -151,6 +176,7 @@ float AEndlessVendettaCharacter::TakeDamage(const float DamageAmount, FDamageEve return Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser); } + void AEndlessVendettaCharacter::ToggleRecon() { if (IsValid(PrimaryWeapon)) EquipPrimary(); @@ -251,6 +277,17 @@ void AEndlessVendettaCharacter::EquipSecondary() SecondaryWeapon = Cast(SecondaryWeaponActor); } +void AEndlessVendettaCharacter::WeaponSwitcher(AActor* Outhit) +{ + if (IsValid(PrimaryWeapon)) + { + EquipPrimary(); + } + PrimaryWeaponClass = Outhit->GetClass(); + Outhit->Destroy(); + EquipPrimary(); +} + //Calls the fire function in the baseWeaponClass void AEndlessVendettaCharacter::FireCaller() { diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h index ece80c9f..a3d099ce 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h @@ -148,9 +148,6 @@ protected: void ToggleRecon(); void ToggleCombat(); - void EquipPrimary(); - void EquipSecondary(); - UPROPERTY(EditDefaultsOnly, Category = "Interaction") float InteractionRange = 250; void Interact(); @@ -173,4 +170,11 @@ public: UFUNCTION(BlueprintCallable, Category = "Damage Control") virtual float TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override; + + void WeaponPickUpSystem(); + + void EquipPrimary(); + void EquipSecondary(); + + void WeaponSwitcher(AActor* Outhit); }; diff --git a/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h b/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h index 29746fab..f266b10b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h +++ b/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h @@ -23,4 +23,7 @@ class ENDLESSVENDETTA_API IInteractionInterface // Add interface functions to this class. This is the class that will be inherited to implement this interface. public: virtual void Interact(){} + + + virtual void InteractPrompt() {} }; diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp index 6db24720..74dac6e0 100644 --- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp @@ -230,4 +230,32 @@ void ABaseWeaponClass::WeaponReload() } } +void ABaseWeaponClass::Interact() +{ + if(!IsValid(this)) return; + GLog->Log("Interact Called"); + endlessVendettaChar->WeaponSwitcher(this); +} + +void ABaseWeaponClass::InteractPrompt() +{ + WeaponStatsPopUp(); +} + +// void ABaseWeaponClass::GetOutHit(FHitResult OutHit) +// { +// if(IsValid(this)) +// { +// endlessVendettaChar->PrimaryWeapon->Destroy(); +// } +// if (OutHit.GetActor()->ActorHasTag(FName("AssaultRifle"))) +// { +// endlessVendettaChar->EquipPrimary(); +// } +// AActor* HitActor = Cast(endlessVendettaChar->PrimaryWeaponClass); +// endlessVendettaChar->PrimaryWeapon = Cast(HitActor); +// } + + + diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h index 72ad7ed4..caed9bb1 100644 --- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h @@ -6,13 +6,14 @@ #include "WeaponItemClass.h" #include "Components/ArrowComponent.h" #include "Kismet/KismetMathLibrary.h" +#include "EndlessVendetta/InteractionInterface.h" #include "BaseWeaponClass.generated.h" class AEndlessVendettaCharacter; class UCapsuleComponent; UCLASS() -class ENDLESSVENDETTA_API ABaseWeaponClass : public AActor +class ENDLESSVENDETTA_API ABaseWeaponClass : public AActor, public IInteractionInterface { GENERATED_BODY() @@ -53,19 +54,23 @@ public: // Called every frame virtual void Tick(float DeltaTime) override; void ReloadTimer(); - UPROPERTY(EditAnywhere) - FName WeaponName; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString WeaponName; - UPROPERTY(EditAnywhere) + UPROPERTY(EditAnywhere, BlueprintReadWrite) int WeaponDamage; - UPROPERTY(EditAnywhere) + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString WeaponDescription; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) float FireRate; UPROPERTY(EditAnywhere, BlueprintReadWrite) int MagazineSize; - UPROPERTY(EditAnywhere) + UPROPERTY(EditAnywhere, BlueprintReadWrite) float TimeToReload = 3.f; //how many bullets until the recoil stops going up @@ -156,6 +161,14 @@ public: UPROPERTY(EditAnywhere) int bulletCountShoot; //Gets how many bullets shot per + void Interact() override; + + void InteractPrompt() override; + + UFUNCTION(BlueprintImplementableEvent) + void WeaponStatsPopUp(); + + //void GetOutHit(FHitResult OutHit); protected: UArrowComponent* GunStartArrow;