diff --git a/Source/the_twilight_abyss/PlayerTemp/TempCharacter.cpp b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.cpp index 4c0cba6..e358e9e 100644 --- a/Source/the_twilight_abyss/PlayerTemp/TempCharacter.cpp +++ b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.cpp @@ -26,7 +26,6 @@ ATempCharacter::ATempCharacter() void ATempCharacter::BeginPlay() { Super::BeginPlay(); - FirstPlayerController = GetWorld()->GetFirstPlayerController(); CombatSystem = Cast(GetWorld()->GetGameState()); WidgetPointer = Cast(this->GetComponentByClass(UWidgetInteractionComponent::StaticClass())); @@ -136,7 +135,6 @@ void ATempCharacter::LineTraceLogic() { //UE_LOG(LogTemp, Display, TEXT("LineTraceLogic activated")); float GlobalTrace = TraceDistance; - FHitResult OutHit; ThisCamera = Cast(this->FindComponentByClass()); FVector Start = ThisCamera->GetComponentLocation(); FVector End = Start + GlobalTrace * ThisCamera->GetForwardVector(); @@ -149,24 +147,28 @@ void ATempCharacter::LineTraceLogic() { return; } + if(OutHit.GetActor()->ActorHasTag(TEXT("Probertium"))) + { + AddToInventory(); + return; + } + if(OutHit.GetActor()->ActorHasTag(TEXT("Iroquid"))) + { + AddToInventory(); + return; + } + if (OutHit.GetActor()->ActorHasTag(TEXT("Azos"))) + { + AddToInventory(); + return; + } + if (OutHit.GetActor()->ActorHasTag(TEXT("Eis"))) + { + AddToInventory(); + return; + } if (OutHit.GetActor()->FindComponentByClass()) { - if(OutHit.GetActor()->ActorHasTag(TEXT("Probertium"))) - { - OutHit.GetActor()->Destroy(); - } - else if(OutHit.GetActor()->ActorHasTag(TEXT("Iroquid"))) - { - OutHit.GetActor()->Destroy(); - } - else if (OutHit.GetActor()->ActorHasTag(TEXT("Azos"))) - { - OutHit.GetActor()->Destroy(); - } - else if (OutHit.GetActor()->ActorHasTag(TEXT("Eis"))) - { - OutHit.GetActor()->Destroy(); - } UE_LOG(LogTemp, Display, TEXT("Hit Merchant")); auto ItemArray = OutHit.GetActor()->FindComponentByClass()->GetItem(0); if (GoldBalance >= ItemArray->ItemCostPrice) @@ -219,6 +221,26 @@ void ATempCharacter::LineTraceLogic() } } +void ATempCharacter::AddToInventory() +{ + if (OutHit.GetActor()->FindComponentByClass()) + { + UE_LOG(LogTemp, Display, TEXT("Hit Merchant")); + auto ItemArray = OutHit.GetActor()->FindComponentByClass()->GetItem(0); + if (GoldBalance >= ItemArray->ItemCostPrice) + { + GoldBalance -= ItemArray->ItemCostPrice; + Inventory->AddItem(ItemArray); + UE_LOG(LogTemp, Display, TEXT("Item Purchased")); + } + if (GoldBalance <= 0) + { + UE_LOG(LogTemp, Display, TEXT("Not Enough Gold")); + } + OutHit.GetActor()->Destroy(); + } +} + void ATempCharacter::InputDisabler() { //Disable Character Movement diff --git a/Source/the_twilight_abyss/PlayerTemp/TempCharacter.h b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.h index eaf8e2c..1a8b284 100644 --- a/Source/the_twilight_abyss/PlayerTemp/TempCharacter.h +++ b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.h @@ -128,5 +128,11 @@ public: UPROPERTY(EditAnywhere, Category= "Widgets") TSubclassOf CrossHairSub; +private: + UPROPERTY() + FHitResult OutHit; + + UFUNCTION() + void AddToInventory(); };