Files
Naked-Desire/Source/NakedDesire/MissionBuilder/Mission.h
T
2026-05-17 22:44:49 +03:00

68 lines
1.1 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "Mission.generated.h"
DECLARE_MULTICAST_DELEGATE_OneParam(FMissionCompleteSignature, class UMission*);
class UMissionGoal;
class ANakedDesireCharacter;
class UGoalRestriction;
/**
*
*/
UCLASS(EditInlineNew, BlueprintType)
class NAKEDDESIRE_API UMission : public UObject
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, Instanced)
TArray<UMissionGoal*> Goals;
UPROPERTY(EditDefaultsOnly)
int MoneyReward = 0;
bool IsCompleted = false;
TArray<FDelegateHandle> GoalUpdateHandles;
public:
FMissionCompleteSignature OnComplete;
void Init(ANakedDesireCharacter* PlayerCharacter);
UFUNCTION(BlueprintPure)
int GetMoneyReward() const
{
return MoneyReward;
}
UFUNCTION(BlueprintPure)
TArray<UMissionGoal*> GetGoals() const
{
return Goals;
}
UFUNCTION(BlueprintPure)
bool GetIsCompleted() const
{
return IsCompleted;
}
protected:
UPROPERTY()
ANakedDesireCharacter* Player = nullptr;
private:
UFUNCTION()
void OnGoalUpdated(UMissionGoal* MissionGoal);
void Complete();
bool CheckGoals();
};