diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll index ac36019..c601afe 100644 Binary files a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll and b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll differ diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll index 15d26c3..7be1eed 100644 Binary files a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll and b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll differ diff --git a/ProjectFish/Content/ART/Map/fishing.umap b/ProjectFish/Content/ART/Map/fishing.umap index 2c95678..3a8a89f 100644 Binary files a/ProjectFish/Content/ART/Map/fishing.umap and b/ProjectFish/Content/ART/Map/fishing.umap differ diff --git a/ProjectFish/Content/DataAssets/PlayerContainer/Shape_PlayerContainer_Asset.uasset b/ProjectFish/Content/DataAssets/PlayerContainer/Shape_PlayerContainer_Asset.uasset new file mode 100644 index 0000000..1ec3a37 Binary files /dev/null and b/ProjectFish/Content/DataAssets/PlayerContainer/Shape_PlayerContainer_Asset.uasset differ diff --git a/ProjectFish/Content/UI/Fishing/Windows/UMG_FishingRewardSelect_Window.uasset b/ProjectFish/Content/UI/Fishing/Windows/UMG_FishingRewardSelect_Window.uasset index 11142ef..878bac7 100644 Binary files a/ProjectFish/Content/UI/Fishing/Windows/UMG_FishingRewardSelect_Window.uasset and b/ProjectFish/Content/UI/Fishing/Windows/UMG_FishingRewardSelect_Window.uasset differ diff --git a/ProjectFish/Content/UI/HomeUI/Widgets/HomeFuncList/UMG_Home_FuncList.uasset b/ProjectFish/Content/UI/HomeUI/Widgets/HomeFuncList/UMG_Home_FuncList.uasset index 797c7fa..c7ac0b5 100644 Binary files a/ProjectFish/Content/UI/HomeUI/Widgets/HomeFuncList/UMG_Home_FuncList.uasset and b/ProjectFish/Content/UI/HomeUI/Widgets/HomeFuncList/UMG_Home_FuncList.uasset differ diff --git a/ProjectFish/Content/UI/HomeUI/Widgets/PlayerContainer/UMG_PlayerContainer_Grid.uasset b/ProjectFish/Content/UI/HomeUI/Widgets/PlayerContainer/UMG_PlayerContainer_Grid.uasset new file mode 100644 index 0000000..248cb8a Binary files /dev/null and b/ProjectFish/Content/UI/HomeUI/Widgets/PlayerContainer/UMG_PlayerContainer_Grid.uasset differ diff --git a/ProjectFish/Content/UI/HomeUI/Windows/UMG_HomeWindow_PlayerContainer.uasset b/ProjectFish/Content/UI/HomeUI/Windows/UMG_HomeWindow_PlayerContainer.uasset new file mode 100644 index 0000000..5c7357c Binary files /dev/null and b/ProjectFish/Content/UI/HomeUI/Windows/UMG_HomeWindow_PlayerContainer.uasset differ diff --git a/ProjectFish/Source/ProjectFish/Data/ContainerInfo.cpp b/ProjectFish/Source/ProjectFish/Data/ContainerInfo.cpp index e105761..8d1db85 100644 --- a/ProjectFish/Source/ProjectFish/Data/ContainerInfo.cpp +++ b/ProjectFish/Source/ProjectFish/Data/ContainerInfo.cpp @@ -140,20 +140,22 @@ TArray UContainerInfo::GetSaveData() const return SaveDataArray; } -void UContainerInfo::LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData) +bool UContainerInfo::LoadFromSaveData(FPrimaryAssetId ShapeID, const TArray& ContainerItems) { // 清空当前数据 Items.Empty(); SlotInUsing.Empty(); //从存档中加载仓库形状 - if (IsValid(SaveGameData)) + FSoftObjectPath ShipShapePath = UAssetManager::Get().GetPrimaryAssetPath(ShapeID); + UShapeAsset* ShapeAsset = Cast(ShipShapePath.TryLoad()); + if (!IsValid(ShapeAsset)) { - FSoftObjectPath ShipShapePath = UAssetManager::Get().GetPrimaryAssetPath(SaveGameData->ShipContainerShapeID); - InitContainerByShape(Cast(ShipShapePath.TryLoad())); - ;} + return false; + } + InitContainerByShape(ShapeAsset); // 获得仓库中的物品信息 TArray AssetsToLoad; - for (const FContainerItemSaveData& ItemData : SaveGameData->ShipContainerItems) + for (const FContainerItemSaveData& ItemData : ContainerItems) { FContainerItem NewItem; NewItem.DegreeType = ItemData.DegreeType; @@ -164,4 +166,43 @@ void UContainerInfo::LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData) FIntPoint Position(ItemData.PosX, ItemData.PosY); AddContainerItem(NewItem, Position); } + + return true; } + +// bool UContainerInfo::LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData) +// { +// // 清空当前数据 +// Items.Empty(); +// SlotInUsing.Empty(); +// //从存档中加载仓库形状 +// if (IsValid(SaveGameData)) +// { +// FSoftObjectPath ShipShapePath = UAssetManager::Get().GetPrimaryAssetPath(SaveGameData->ShipContainerShapeID); +// UShapeAsset* ShapeAsset = Cast(ShipShapePath.TryLoad()); +// if (!IsValid(ShapeAsset)) +// { +// return false; +// } +// InitContainerByShape(ShapeAsset); +// // 获得仓库中的物品信息 +// TArray AssetsToLoad; +// for (const FContainerItemSaveData& ItemData : SaveGameData->ShipContainerItems) +// { +// FContainerItem NewItem; +// NewItem.DegreeType = ItemData.DegreeType; +// //获得物品形状 +// FSoftObjectPath RewardItemPath = UAssetManager::Get().GetPrimaryAssetPath(ItemData.RewardItemAssetId); +// NewItem.RewardItem = Cast(RewardItemPath.TryLoad()); +// //添加物品到容器中 +// FIntPoint Position(ItemData.PosX, ItemData.PosY); +// AddContainerItem(NewItem, Position); +// } +// } +// else +// { +// return false; +// } +// +// return true; +// } diff --git a/ProjectFish/Source/ProjectFish/Data/ContainerInfo.h b/ProjectFish/Source/ProjectFish/Data/ContainerInfo.h index 8b01bad..1dc0c70 100644 --- a/ProjectFish/Source/ProjectFish/Data/ContainerInfo.h +++ b/ProjectFish/Source/ProjectFish/Data/ContainerInfo.h @@ -117,8 +117,11 @@ public: TArray GetSaveData() const; // 从存档数据加载 + // UFUNCTION(BlueprintCallable, Category = "ContainerInfo") + // bool LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData); + UFUNCTION(BlueprintCallable, Category = "ContainerInfo") - void LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData); + bool LoadFromSaveData(FPrimaryAssetId ShapeID, const TArray& ContainerItems); private: //要添加的物品是否会覆盖其他物品 diff --git a/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.cpp b/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.cpp index c18e616..0724561 100644 --- a/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.cpp +++ b/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.cpp @@ -44,10 +44,33 @@ bool UGameInfoManager::LoadGameInfo() return false; } -void UGameInfoManager::CreateGameInfo(UContainerInfo* ShipContainer) +void UGameInfoManager::CreateGameInfo(UContainerInfo* ShipContainer, UContainerInfo* PlayerContainer) { PlayerInfo = NewObject(this); PlayerInfo->ShipContainerItems = ShipContainer->GetSaveData(); PlayerInfo->ShipContainerShapeID = ShipContainer->ContainerShape->GetPrimaryAssetId(); + + PlayerInfo->PlayerContainerItems = PlayerContainer->GetSaveData(); + PlayerInfo->PlayerContainerShapeID = PlayerContainer->ContainerShape->GetPrimaryAssetId(); + SaveGameInfo(); +} + +void UGameInfoManager::CreateGameInfoAndSave(UShapeAsset* ShipContainerShape, UShapeAsset* PlayerContainerShape) +{ + //创建仓库信息 + UContainerInfo* ShipContainer = NewObject(); + ShipContainer->InitContainerByShape(ShipContainerShape); + + UContainerInfo* PlayerContainer = NewObject(); + PlayerContainer->InitContainerByShape(PlayerContainerShape); + + //创建要保存的额存档信息 + PlayerInfo = NewObject(this); + PlayerInfo->ShipContainerItems = ShipContainer->GetSaveData(); + PlayerInfo->ShipContainerShapeID = ShipContainer->ContainerShape->GetPrimaryAssetId(); + + PlayerInfo->PlayerContainerItems = PlayerContainer->GetSaveData(); + PlayerInfo->PlayerContainerShapeID = PlayerContainer->ContainerShape->GetPrimaryAssetId(); + SaveGameInfo(); } diff --git a/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.h b/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.h index de0a2c3..2b5901e 100644 --- a/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.h +++ b/ProjectFish/Source/ProjectFish/Gameplay/Subsystem/GameInfoManager.h @@ -23,7 +23,10 @@ protected: UFUNCTION(BlueprintCallable) bool LoadGameInfo(); UFUNCTION(BlueprintCallable) - void CreateGameInfo(UContainerInfo* ShipContainer); + void CreateGameInfo(UContainerInfo* ShipContainer, UContainerInfo* PlayerContainer); + + UFUNCTION(BlueprintCallable) + void CreateGameInfoAndSave(UShapeAsset* ShipContainerShape, UShapeAsset* PlayerContainerShape); protected: UPROPERTY(BlueprintReadOnly) TObjectPtr PlayerInfo;