init
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
// © 2025 Naked People Team. All Rights Reserved.
|
||||
|
||||
|
||||
#include "MissionGoal.h"
|
||||
|
||||
#include "GoalRestriction.h"
|
||||
|
||||
void UMissionGoal::Init(ANakedDesireCharacter* PlayerCharacter)
|
||||
{
|
||||
Player = PlayerCharacter;
|
||||
|
||||
for (const auto& Elem : Restrictions)
|
||||
{
|
||||
Elem->Init(Player);
|
||||
auto Handle = Elem->OnUpdate.AddUObject(this, &UMissionGoal::OnRestrictionUpdated);
|
||||
RestrictionUpdateHandles.Add(Handle);
|
||||
}
|
||||
}
|
||||
|
||||
void UMissionGoal::Complete()
|
||||
{
|
||||
if (!CheckRestrictions())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
IsCompleted = true;
|
||||
for (const auto& Restriction : Restrictions)
|
||||
{
|
||||
Restriction->Stop();
|
||||
for (const auto& Handle : RestrictionUpdateHandles)
|
||||
{
|
||||
Restriction->OnUpdate.Remove(Handle);
|
||||
}
|
||||
}
|
||||
|
||||
OnUpdate.Broadcast(this);
|
||||
}
|
||||
|
||||
bool UMissionGoal::CheckRestrictions()
|
||||
{
|
||||
if (IsCompleted)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
for (const auto& Restriction : Restrictions)
|
||||
{
|
||||
if (!Restriction->GetIsSuccess())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
FText UMissionGoal::GetDescription() const
|
||||
{
|
||||
return FText::GetEmpty();
|
||||
}
|
||||
|
||||
void UMissionGoal::OnRestrictionUpdated(UGoalRestriction* Restriction)
|
||||
{
|
||||
if (IsCompleted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
OnUpdate.Broadcast(this);
|
||||
}
|
||||
Reference in New Issue
Block a user