Implemented Side Bounties Appearing in Pause Menu with Tracking Functionality

This commit is contained in:
Rafal Swierczek 2024-02-12 23:41:02 +00:00
parent b7f376e9df
commit 1849db2219
16 changed files with 94 additions and 39 deletions

View File

@ -9,31 +9,19 @@
<component name="ChangeListManager">
<list default="true" id="dfa3053d-1d51-4dad-9270-4c17e086f627" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/.idea.EndlessVendetta/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EndlessVendetta/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/BP_Elevator.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/BP_Elevator.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/CP_ElimTImothyHuntsmer.uasset" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.uasset" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.uasset" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.uasset" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/TargetEliminatedSequence.uasset" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/WBP_TimothyEliminated.uasset" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/SideBounties/SecuritySpecialists/CP_GoToSecurityOffice.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/BountySystem/ApartmentBounty/SideBounties/SecuritySpecialists/CP_GoToSecurityOffice.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Levels/MainMenuLevel.umap" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Levels/MainMenuLevel.umap" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/Levels/TempOpenWorld.umap" beforeDir="false" afterPath="$PROJECT_DIR$/Content/Levels/TempOpenWorld.umap" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/PauseMenu/Tabs/BountyTabs/WBP_BountiesTab.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/PauseMenu/Tabs/BountyTabs/WBP_BountiesTab.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset" beforeDir="false" afterPath="$PROJECT_DIR$/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/BountyClass.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/BountyClass.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/BountyClass.h" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/BountyClass.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/CheckpointClass.h" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/CheckpointClass.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/MainBountyClass.h" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/MainBountyClass.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/SideBountyClass.h" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/BountySystem/SideBountyClass.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/Characters/BountyHunterCharacter.h" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/Characters/BountyHunterCharacter.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Source/EndlessVendetta/PauseMenu/BountiesTab.h" beforeDir="false" afterPath="$PROJECT_DIR$/Source/EndlessVendetta/PauseMenu/BountiesTab.h" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -155,7 +143,9 @@
<workItem from="1707304148719" duration="10277000" />
<workItem from="1707409116575" duration="8922000" />
<workItem from="1707574922675" duration="10730000" />
<workItem from="1707658695399" duration="837000" />
<workItem from="1707658695399" duration="2851000" />
<workItem from="1707757227103" duration="2304000" />
<workItem from="1707760017966" duration="7002000" />
</task>
<servers />
</component>

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5e4033216548f6200b2265883ed20f8c859b0ad6b628540b7cc58c8bdb2da091
size 81558
oid sha256:071d80db1611f406955a931fe236052cfc769eeb14eee2d02206536f4fc40d8c
size 80228

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ecab0f671c308960a2881e050ca07a1300f04e97819e1f47203ca1ca652f4ccf
oid sha256:5015076ef46a0b0a06bef84fadb67659cdaad3127c3834256c74d4464b8646f6
size 308758

View File

@ -16,7 +16,6 @@ void ABountyClass::ActivateFirstCheckpoint()
if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr) return;
BountyCheckpoints[0]->Active = true;
BountyCheckpoints[0]->SpawnWaypoint(BountyTitle);
// BountyCheckpoints[0]->CheckpointActivated();
BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint);
}

View File

@ -46,7 +46,7 @@ public:
virtual void SpawnCheckpoints();
// Activate the First Checkpoint in Bounty Checkpoints and Listen for its Completion
void ActivateFirstCheckpoint();
virtual void ActivateFirstCheckpoint();
// De-Activate the First Checkpoint in Bounty Checkpoints
void DeActivateFirstCheckpoint();

View File

@ -12,6 +12,13 @@ void AMainBountyClass::IncrementBountyCheckpoint()
// Cast<AEndlessVendettaCharacter>(GetWorld()->GetFirstPlayerController()->GetPawn())->CheckpointCompletedUI("", false);
}
void AMainBountyClass::ActivateFirstCheckpoint()
{
Super::ActivateFirstCheckpoint();
if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr) return;
BountyCheckpoints[0]->SpawnWaypoint(MainBountyStruct.TargetName);
}
void AMainBountyClass::SpawnOpenWorldCheckpoint()
{
if (!IsValid(OpenWorldCheckpointClass)) return;
@ -25,13 +32,13 @@ void AMainBountyClass::SpawnOpenWorldCheckpoint()
OpenWorldcheckpoint->SpawnWaypoint(BountyTitle);
}
void AMainBountyClass::SpawnCheckpoints()
{
Super::SpawnCheckpoints();
ActivateFirstCheckpoint();
}
void AMainBountyClass::SpawnCheckpoints()
{
Super::SpawnCheckpoints();
ActivateFirstCheckpoint();
}
TArray<ASideBountyClass*> AMainBountyClass::SpawnAndReturnSideBounties()
TArray<ASideBountyClass*> AMainBountyClass::SpawnAndReturnSideBounties()
{
TArray<ASideBountyClass*> SpawnedSideBounties;
for (auto SideBountyClass : SideBountiesToSpawn)
@ -47,7 +54,7 @@ void AMainBountyClass::SpawnOpenWorldCheckpoint()
}
void AMainBountyClass::SpawnAmmoDrops()
void AMainBountyClass::SpawnAmmoDrops()
{
UE_LOG(LogTemp, Display, TEXT("Bought Ammo Drops, but its not implemented yet"));
// FActorSpawnParameters SpawnParameters;

View File

@ -88,7 +88,8 @@ public:
return PlayerSpawnTransform;
}
// Overrides to Set Title of Waypoint
void ActivateFirstCheckpoint() override;

View File

@ -4,6 +4,19 @@
#include "SideBountyClass.h"
void ASideBountyClass::BeginPlay()
{
SideBountyStruct.SideBountyUID = GetUniqueID();
Super::BeginPlay();
}
void ASideBountyClass::ActivateFirstCheckpoint()
{
Super::ActivateFirstCheckpoint();
if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr) return;
BountyCheckpoints[0]->SpawnWaypoint(SideBountyStruct.BountyTitle);
}
void ASideBountyClass::IncrementBountyCheckpoint()
{
Super::IncrementBountyCheckpoint();

View File

@ -19,6 +19,9 @@ struct FSideBountyStruct
UPROPERTY(BlueprintReadOnly)
bool Tracked = true;
UPROPERTY(BlueprintReadOnly)
int SideBountyUID = 0;
};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FCompletedSideBounty, int, FavoursEarned);
@ -46,12 +49,15 @@ public:
// ------------------- METHODS ---------------------------------
private:
virtual void BeginPlay() override;
protected:
// Overrides to check if Side Bounty has been Completed
virtual void IncrementBountyCheckpoint() override;
public:
public:
// Overrides to Set Title of Waypoint
void ActivateFirstCheckpoint() override;
// ------------------- LEGACY ---------------------------------

View File

@ -124,6 +124,8 @@ void ABountyHunterCharacter::CreatePauseMenuTabs()
{
BountiesTab = CreateWidget<UBountiesTab>(GetWorld(), UGameplayStatics::GetCurrentLevelName(GetWorld()) == OpenWorldLevelName ? BountyTabWidgetClass : BountyInProgressTabWidgetClass);
BountiesTab->ReturnToOpenWorldEarlyDelegate.AddDynamic(this, &ABountyHunterCharacter::ReturnToOpenWorldEarly);
BountiesTab->TrackBountyDelegate.AddDynamic(this, &ABountyHunterCharacter::TrackMainBounty);
BountiesTab->TrackSideBountyDelegate.AddDynamic(this, &ABountyHunterCharacter::TrackSideBounty);
}
UpdateBountyTabInfo();
FavoursTab = CreateWidget<UTabWidget>(GetWorld(), FavoursTabWidgetClass);

View File

@ -190,4 +190,34 @@ private:
UFUNCTION()
void ReturnToOpenWorldEarly();
void DeActivateAllBounties()
{
CurrentMainBounty->DeActivateFirstCheckpoint();
for (auto SideBounty : CurrentSideBounties)
{
SideBounty->DeActivateFirstCheckpoint();
}
}
UFUNCTION()
void TrackMainBounty()
{
DeActivateAllBounties();
CurrentMainBounty->ActivateFirstCheckpoint();
}
UFUNCTION()
void TrackSideBounty(int SideBountyUID)
{
DeActivateAllBounties();
for (auto SideBounty : CurrentSideBounties)
{
if (SideBounty->GetUniqueID() == SideBountyUID)
{
SideBounty->ActivateFirstCheckpoint();
break;
}
}
}
};

View File

@ -8,8 +8,9 @@
#include "EndlessVendetta/BountySystem/BountyClass.h"
#include "BountiesTab.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTrackBounty, ABountyClass*, BountyToTrack);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FTrackBounty);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FReturnToOpenWorldEarly);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTrackSideBounty, int, BountyID);
UCLASS()
class ENDLESSVENDETTA_API UBountiesTab : public UTabWidget
@ -21,9 +22,12 @@ class ENDLESSVENDETTA_API UBountiesTab : public UTabWidget
protected:
public:
UPROPERTY(BlueprintAssignable)
UPROPERTY(BlueprintCallable)
FTrackBounty TrackBountyDelegate;
UPROPERTY(BlueprintCallable)
FTrackSideBounty TrackSideBountyDelegate;
UPROPERTY(BlueprintCallable)
FReturnToOpenWorldEarly ReturnToOpenWorldEarlyDelegate;