Compare commits

..

No commits in common. "4821d206c0a5540b037b8afb6f3c10f5bec30789" and "111f68fa10366222b08ff517096445e2fc33b172" have entirely different histories.

24 changed files with 9 additions and 70 deletions

View File

@ -10,8 +10,5 @@ InvalidTagCharacters="\"\',"
+GameplayTagRedirects=(OldTagName="Skill.PoserPull",NewTagName="Skill.PowerPull") +GameplayTagRedirects=(OldTagName="Skill.PoserPull",NewTagName="Skill.PowerPull")
NumBitsForContainerSize=6 NumBitsForContainerSize=6
NetIndexFirstBitSegment=16 NetIndexFirstBitSegment=16
+GameplayTagList=(Tag="FishReward",DevComment="鱼获")
+GameplayTagList=(Tag="FishReward.Fish1",DevComment="")
+GameplayTagList=(Tag="FishReward.Fish2",DevComment="")
+GameplayTagList=(Tag="Skill.PowerPull",DevComment="") +GameplayTagList=(Tag="Skill.PowerPull",DevComment="")

View File

@ -5,7 +5,6 @@
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "ShapeAsset.h" #include "ShapeAsset.h"
#include "Engine/DataAsset.h" #include "Engine/DataAsset.h"
#include "ProjectFish/Quest/QuestTypes.h"
#include "FishingRewardDataAsset.generated.h" #include "FishingRewardDataAsset.generated.h"
UENUM(BlueprintType) UENUM(BlueprintType)
@ -37,7 +36,4 @@ public:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获稀有度")) UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获稀有度"))
ERewardRarityType RewardRarityType; ERewardRarityType RewardRarityType;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获对应的任务信息"))
FQuestTargetInfo QuestTargetInfo;
}; };

View File

@ -54,35 +54,5 @@ void UQuestAsset::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedE
} }
} }
} }
void UQuestAsset::PostDuplicate(bool bDuplicateForPIE)
{
Super::PostDuplicate(bDuplicateForPIE);
if (!bDuplicateForPIE)
{
int32 MaxQuestID = 0;
// 获取资产注册表模块
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry");
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
// 查找所有 QuestAsset 资产
TArray<FAssetData> AssetDataList;
AssetRegistry.GetAssetsByClass(UQuestAsset::StaticClass()->GetClassPathName(), AssetDataList, true);
// 遍历所有已存在的任务资产,找到最大的 QuestID
for (const FAssetData& AssetData : AssetDataList)
{
if (UQuestAsset* QuestAsset = Cast<UQuestAsset>(AssetData.GetAsset()))
{
if (QuestAsset->QuestID > MaxQuestID)
{
MaxQuestID = QuestAsset->QuestID;
}
}
}
QuestID += 1;
}
}
#endif #endif

View File

@ -20,8 +20,6 @@ public:
#if WITH_EDITOR #if WITH_EDITOR
// 编辑器中属性修改后的回调 // 编辑器中属性修改后的回调
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
virtual void PostDuplicate(bool bDuplicateForPIE) override;
#endif #endif
/** 任务编号ID */ /** 任务编号ID */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Quest|Basic") UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Quest|Basic")

View File

@ -140,12 +140,13 @@ bool UQuestManager::CompleteQuest(int32 QuestID)
// 触发事件 // 触发事件
OnQuestStateChanged.Broadcast(QuestID); OnQuestStateChanged.Broadcast(QuestID);
UE_LOG(LogTemp, Warning, TEXT("Quest id = %d Complete"), QuestID); UE_LOG(LogTemp, Warning, TEXT("Quest id = %d Complete"), QuestID);
// // 从活动任务中移除 // 从活动任务中移除
// ActiveQuestsMap.Remove(QuestID); ActiveQuestsMap.Remove(QuestID);
//更新存档数据 //更新存档数据
GetGameInstance()->GetSubsystem<UGameInfoManager>()->SaveGameInfo(); GetGameInstance()->GetSubsystem<UGameInfoManager>()->SaveGameInfo();
//检测是否有其他可接受的任务
CheckAcceptableQuests();
return true; return true;
} }
@ -197,7 +198,7 @@ void UQuestManager::UpdateObjectiveProgress(int32 QuestID, int32 ObjectiveIndex,
CheckQuestCompletion(QuestID); CheckQuestCompletion(QuestID);
} }
void UQuestManager::UpdateObjectiveByTargetID(FGameplayTag TargetTag, int32 ProgressDelta) void UQuestManager::UpdateObjectiveByTargetID(FName TargetID, int32 ProgressDelta)
{ {
// 遍历所有活动任务,查找匹配的目标 // 遍历所有活动任务,查找匹配的目标
for (TPair<int32, FQuestRuntimeData>& Pair : ActiveQuestsMap) for (TPair<int32, FQuestRuntimeData>& Pair : ActiveQuestsMap)
@ -212,7 +213,7 @@ void UQuestManager::UpdateObjectiveByTargetID(FGameplayTag TargetTag, int32 Prog
for (int32 i = 0; i < RuntimeData.QuestAsset->Objectives.Num(); ++i) for (int32 i = 0; i < RuntimeData.QuestAsset->Objectives.Num(); ++i)
{ {
const FQuestObjective& Objective = RuntimeData.QuestAsset->Objectives[i]; const FQuestObjective& Objective = RuntimeData.QuestAsset->Objectives[i];
if (Objective.TargetID.TargetTag == TargetTag) if (Objective.TargetID == TargetID)
{ {
// 增加进度 // 增加进度
int32 NewProgress = RuntimeData.ObjectiveProgress[i].CurrentProgress + ProgressDelta; int32 NewProgress = RuntimeData.ObjectiveProgress[i].CurrentProgress + ProgressDelta;
@ -220,9 +221,6 @@ void UQuestManager::UpdateObjectiveByTargetID(FGameplayTag TargetTag, int32 Prog
} }
} }
} }
//检测是否有其他可接受的任务
CheckAcceptableQuests();
} }
EQuestState UQuestManager::GetQuestState(int32 QuestID) const EQuestState UQuestManager::GetQuestState(int32 QuestID) const
@ -329,7 +327,7 @@ bool UQuestManager::CanAcceptQuest(UQuestAsset* QuestAsset) const
TArray<FQuestSaveData> UQuestManager::GetQuestSaveData() const TArray<FQuestSaveData> UQuestManager::GetQuestSaveData() const
{ {
TArray<FQuestSaveData> SaveDataArray; TArray<FQuestSaveData> SaveDataArray;
for (const TPair<int32, FQuestRuntimeData>& Pair : ActiveQuestsMap) for (const TPair<int32, FQuestRuntimeData>& Pair : ActiveQuestsMap)
{ {
FQuestSaveData SaveData; FQuestSaveData SaveData;
@ -354,7 +352,6 @@ TArray<FQuestSaveData> UQuestManager::GetQuestSaveData() const
SaveDataArray.Add(SaveData); SaveDataArray.Add(SaveData);
} }
return SaveDataArray; return SaveDataArray;
} }

View File

@ -79,7 +79,7 @@ public:
/** 通过目标ID更新进度自动查找对应目标 */ /** 通过目标ID更新进度自动查找对应目标 */
UFUNCTION(BlueprintCallable, Category = "Quest") UFUNCTION(BlueprintCallable, Category = "Quest")
void UpdateObjectiveByTargetID(FGameplayTag TargetTag, int32 ProgressDelta = 1); void UpdateObjectiveByTargetID(FName TargetID, int32 ProgressDelta = 1);
// ========== 任务查询 ========== // ========== 任务查询 ==========

View File

@ -3,7 +3,6 @@
#pragma once #pragma once
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "QuestTypes.generated.h" #include "QuestTypes.generated.h"
/** /**
@ -50,24 +49,6 @@ struct FQuestReward
int32 GoldAmount = 0; int32 GoldAmount = 0;
}; };
/**
*
*/
USTRUCT(BlueprintType)
struct FQuestTargetInfo
{
GENERATED_BODY()
/** 目标名称*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest")
FText QuestTargetName;
/** 目标ID */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest")
FGameplayTag TargetTag;
};
/** /**
* *
*/ */
@ -86,7 +67,7 @@ struct FQuestObjective
/** 目标ID物品ID、敌人ID、地点Tag等 */ /** 目标ID物品ID、敌人ID、地点Tag等 */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest") UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest")
FQuestTargetInfo TargetID; FName TargetID;
/** 需要完成的数量 */ /** 需要完成的数量 */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest") UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Quest")