Compare commits

..

5 Commits

Author SHA1 Message Date
c3e1ed0762 添加预试种物品 信息显示 2025-10-31 17:38:46 +08:00
f4fe5cc478 更新鱼市的任务系统 2025-10-31 11:52:15 +08:00
5df127f3ed 更新鱼市UI 2025-10-31 11:32:13 +08:00
99a6d3b35a 完善鱼市任务提交界面 2025-10-31 11:18:51 +08:00
7718b4b3c0 添加鱼市任务显示UI 2025-10-30 18:51:03 +08:00
29 changed files with 64 additions and 9 deletions

View File

@ -2,7 +2,7 @@
"BuildId": "37670630",
"Modules":
{
"ProjectFish": "UnrealEditor-ProjectFish-0001.dll",
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor-0001.dll"
"ProjectFish": "UnrealEditor-ProjectFish.dll",
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor.dll"
}
}

Binary file not shown.

View File

@ -2,6 +2,6 @@
"BuildId": "37670630",
"Modules":
{
"DeskMode": "UnrealEditor-DeskMode-0001.dll"
"DeskMode": "UnrealEditor-DeskMode.dll"
}
}

View File

@ -40,6 +40,7 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUnrealType_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectArray_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectBase_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003ATemplates_002Ff_003ASharedPointerInternals_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003ATemplates_002Ff_003ASharedPointer_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003ATemplates_002Ff_003ATuple_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003AClasses_002Fd_003AEngine_002Ff_003AEngine_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
@ -48,5 +49,12 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003APrivate_002Ff_003AGameplayStatics_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003APrivate_002Ff_003AUnrealEngine_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APrivate_002Fd_003AFramework_002Fd_003AApplication_002Ff_003ASlateApplication_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APrivate_002Fd_003AWidgets_002Fd_003ALayout_002Ff_003ASDPIScaler_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APublic_002Fd_003AFramework_002Fd_003AApplication_002Ff_003ASlateApplication_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APublic_002Fd_003AWidgets_002Fd_003ALayout_002Ff_003ASBorder_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APublic_002Fd_003AWidgets_002Fd_003ALayout_002Ff_003ASBorder_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APublic_002Fd_003AWidgets_002Fd_003ALayout_002Ff_003ASDPIScaler_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlateCore_002Fd_003APrivate_002Fd_003ALayout_002Ff_003AVisibility_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlateCore_002Fd_003APublic_002Fd_003ALayout_002Ff_003AVisibility_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AUMG_002Fd_003APrivate_002Fd_003ASlate_002Ff_003AUMGDragDropOp_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AUMG_002Fd_003APrivate_002Ff_003ADragDropOperation_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AUMG_002Fd_003APublic_002Fd_003ASlate_002Ff_003AUMGDragDropOp_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>

View File

@ -14,7 +14,12 @@ UCLASS(BlueprintType)
class PROJECTFISH_API UFishInfoConfigAsset : public UDataAsset
{
GENERATED_BODY()
//virtual void PostDuplicate(bool bDuplicateForPIE) override;
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = fish, meta = (ToolTip = "鱼的ID"))
int32 FishID;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = fish, meta = (ToolTip = "鱼的名称"))
FText FishName;

View File

@ -26,6 +26,9 @@ public:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获名称"))
FText RewardName;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获描述"))
FText RewardDes;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获图片") )
UTexture2D* RewardTexture;
@ -40,4 +43,7 @@ public:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获对应的任务信息"))
FQuestTargetInfo QuestTargetInfo;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "价格"))
float RewardPrice;
};

View File

@ -6,6 +6,7 @@
#include "GameplayTagContainer.h"
#include "PawnWithSkill.h"
#include "DataAsset/ShapeAsset.h"
#include "Quest/QuestTypes.h"
#include "UObject/Object.h"
#include "Definations.generated.h"
@ -462,6 +463,20 @@ struct FSimpleConnection
}
};
USTRUCT(BlueprintType)
struct FMarketQuestDialogue: public FTableRowBase
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "任务对话"))
FText QuestTitle;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "任务对话"))
FText QuestDialogue;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "任务ID"))
int32 QuestID;
};

View File

@ -82,7 +82,7 @@ bool UQuestManager::AcceptQuest(UQuestAsset* QuestAsset, bool bSaveGameInfo )
ActiveQuestsMap.Add(QuestAsset->QuestID, RuntimeData);
// 触发事件
OnQuestStateChanged.Broadcast(QuestAsset->QuestID);
OnQuestStateChanged.Broadcast(QuestAsset->QuestID, EQuestState::InProgress);
UE_LOG(LogTemp, Warning, TEXT("Quest %s Accepted"), *QuestAsset->QuestName.ToString());
if (bSaveGameInfo)
@ -138,7 +138,7 @@ bool UQuestManager::CompleteQuest(int32 QuestID)
CompletedQuestIDs.Add(QuestID);
// 触发事件
OnQuestStateChanged.Broadcast(QuestID);
OnQuestStateChanged.Broadcast(QuestID, EQuestState::Completed);
UE_LOG(LogTemp, Warning, TEXT("Quest id = %d Complete"), QuestID);
// // 从活动任务中移除
// ActiveQuestsMap.Remove(QuestID);
@ -158,7 +158,7 @@ bool UQuestManager::AbandonQuest(int32 QuestID)
}
ActiveQuestsMap.Remove(QuestID);
OnQuestStateChanged.Broadcast(QuestID);
OnQuestStateChanged.Broadcast(QuestID, EQuestState::Failed);
return true;
}
@ -246,6 +246,23 @@ bool UQuestManager::IsQuestFollowing(int32 QuestID) const
return FollowingQuestIDs.Contains(QuestID);
}
TArray<FQuestTargetInfo> UQuestManager::GetQuestTargets(int32 QuestID) const
{
TArray<FQuestTargetInfo> Targets;
for (auto quest:QuestAssets)
{
if (quest->QuestID == QuestID)
{
for (auto TargetInfo: quest->Objectives)
{
Targets.Add(TargetInfo.TargetID);
}
return Targets;
}
}
return Targets;
}
TArray<UQuestAsset*> UQuestManager::GetActiveQuests() const
{
TArray<UQuestAsset*> Result;

View File

@ -31,7 +31,7 @@ struct FQuestRuntimeData
};
// 任务事件委托
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnQuestStateChanged, int32, QuestID);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnQuestStateChanged, int32, QuestID, EQuestState, QuestState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnQuestObjectiveUpdated, int32, QuestID, int32, ObjectiveIndex);
/**
@ -74,7 +74,7 @@ public:
// ========== 任务进度 ==========
/** 更新任务目标进度(收集物品、击败敌人、到达地点) */
UFUNCTION(BlueprintCallable, Category = "Quest")
//UFUNCTION(BlueprintCallable, Category = "Quest")
void UpdateObjectiveProgress(int32 QuestID, int32 ObjectiveIndex, int32 Progress);
/** 通过目标ID更新进度自动查找对应目标 */
@ -91,6 +91,10 @@ public:
UFUNCTION(BlueprintPure, Category = "Quest")
bool IsQuestFollowing(int32 QuestID) const;
/** 获取指定任务的任务目标 */
UFUNCTION(BlueprintPure, Category = "Quest")
TArray<FQuestTargetInfo> GetQuestTargets(int32 QuestID) const;
/** 获取所有进行中的任务 */
UFUNCTION(BlueprintPure, Category = "Quest")
TArray<UQuestAsset*> GetActiveQuests() const;