// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Components/ActorComponent.h" #include "Components/TextBlock.h" #include "Blueprint/UserWidget.h" #include "Quest.h" #include "UWorldState.h" #include "../BaseItems/InventoryComponent.h" #include "QuestSystem.generated.h" UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) class THE_TWILIGHT_ABYSS_API UQuestSystem : public UActorComponent { GENERATED_BODY() public: // Sets default values for this component's properties UQuestSystem(); UPROPERTY(EditAnywhere, BlueprintReadOnly) TArray ActiveQuests; UPROPERTY(VisibleAnywhere, BlueprintReadOnly) TArray CompletedQuests; UPROPERTY(EditAnywhere) TMap QuestFlags; protected: // Called when the game starts virtual void BeginPlay() override; UPROPERTY() TSubclassOf QuestWidget; FJsonObject WorldStateJsonTemplate; public: // Called every frame virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; void CheckActiveQuestConditions(); UWorldState* GetWorldState() const; UFUNCTION(BlueprintCallable) void AddQuest(UQuest* Quest); UFUNCTION(BlueprintCallable) void AddQuestFlag(FString FlagName, bool FlagValue); private: UInventoryComponent* PlayerInventory; };