Compare commits

..

No commits in common. "427bede723df0e89b6d5f42eaefa9b30ae219893" and "3a6b9042f1cda271dec53946808e14f66b956c07" have entirely different histories.

19 changed files with 9 additions and 79 deletions

View File

@ -140,22 +140,20 @@ TArray<FContainerItemSaveData> UContainerInfo::GetSaveData() const
return SaveDataArray; return SaveDataArray;
} }
bool UContainerInfo::LoadFromSaveData(FPrimaryAssetId ShapeID, const TArray<FContainerItemSaveData>& ContainerItems) void UContainerInfo::LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData)
{ {
// 清空当前数据 // 清空当前数据
Items.Empty(); Items.Empty();
SlotInUsing.Empty(); SlotInUsing.Empty();
//从存档中加载仓库形状 //从存档中加载仓库形状
FSoftObjectPath ShipShapePath = UAssetManager::Get().GetPrimaryAssetPath(ShapeID); if (IsValid(SaveGameData))
UShapeAsset* ShapeAsset = Cast<UShapeAsset>(ShipShapePath.TryLoad());
if (!IsValid(ShapeAsset))
{ {
return false; FSoftObjectPath ShipShapePath = UAssetManager::Get().GetPrimaryAssetPath(SaveGameData->ShipContainerShapeID);
} InitContainerByShape(Cast<UShapeAsset>(ShipShapePath.TryLoad()));
InitContainerByShape(ShapeAsset); ;}
// 获得仓库中的物品信息 // 获得仓库中的物品信息
TArray<FPrimaryAssetId> AssetsToLoad; TArray<FPrimaryAssetId> AssetsToLoad;
for (const FContainerItemSaveData& ItemData : ContainerItems) for (const FContainerItemSaveData& ItemData : SaveGameData->ShipContainerItems)
{ {
FContainerItem NewItem; FContainerItem NewItem;
NewItem.DegreeType = ItemData.DegreeType; NewItem.DegreeType = ItemData.DegreeType;
@ -166,43 +164,4 @@ bool UContainerInfo::LoadFromSaveData(FPrimaryAssetId ShapeID, const TArray<FCon
FIntPoint Position(ItemData.PosX, ItemData.PosY); FIntPoint Position(ItemData.PosX, ItemData.PosY);
AddContainerItem(NewItem, Position); 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<UShapeAsset>(ShipShapePath.TryLoad());
// if (!IsValid(ShapeAsset))
// {
// return false;
// }
// InitContainerByShape(ShapeAsset);
// // 获得仓库中的物品信息
// TArray<FPrimaryAssetId> AssetsToLoad;
// for (const FContainerItemSaveData& ItemData : SaveGameData->ShipContainerItems)
// {
// FContainerItem NewItem;
// NewItem.DegreeType = ItemData.DegreeType;
// //获得物品形状
// FSoftObjectPath RewardItemPath = UAssetManager::Get().GetPrimaryAssetPath(ItemData.RewardItemAssetId);
// NewItem.RewardItem = Cast<UFishingRewardDataAsset>(RewardItemPath.TryLoad());
// //添加物品到容器中
// FIntPoint Position(ItemData.PosX, ItemData.PosY);
// AddContainerItem(NewItem, Position);
// }
// }
// else
// {
// return false;
// }
//
// return true;
// }

View File

@ -117,11 +117,8 @@ public:
TArray<FContainerItemSaveData> GetSaveData() const; TArray<FContainerItemSaveData> GetSaveData() const;
// 从存档数据加载 // 从存档数据加载
// UFUNCTION(BlueprintCallable, Category = "ContainerInfo")
// bool LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData);
UFUNCTION(BlueprintCallable, Category = "ContainerInfo") UFUNCTION(BlueprintCallable, Category = "ContainerInfo")
bool LoadFromSaveData(FPrimaryAssetId ShapeID, const TArray<FContainerItemSaveData>& ContainerItems); void LoadFromSaveData(UPlayerInfoSaveGame* SaveGameData);
private: private:
//要添加的物品是否会覆盖其他物品 //要添加的物品是否会覆盖其他物品

View File

@ -44,33 +44,10 @@ bool UGameInfoManager::LoadGameInfo()
return false; return false;
} }
void UGameInfoManager::CreateGameInfo(UContainerInfo* ShipContainer, UContainerInfo* PlayerContainer) void UGameInfoManager::CreateGameInfo(UContainerInfo* ShipContainer)
{ {
PlayerInfo = NewObject<UPlayerInfoSaveGame>(this); PlayerInfo = NewObject<UPlayerInfoSaveGame>(this);
PlayerInfo->ShipContainerItems = ShipContainer->GetSaveData(); PlayerInfo->ShipContainerItems = ShipContainer->GetSaveData();
PlayerInfo->ShipContainerShapeID = ShipContainer->ContainerShape->GetPrimaryAssetId(); 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<UContainerInfo>();
ShipContainer->InitContainerByShape(ShipContainerShape);
UContainerInfo* PlayerContainer = NewObject<UContainerInfo>();
PlayerContainer->InitContainerByShape(PlayerContainerShape);
//创建要保存的额存档信息
PlayerInfo = NewObject<UPlayerInfoSaveGame>(this);
PlayerInfo->ShipContainerItems = ShipContainer->GetSaveData();
PlayerInfo->ShipContainerShapeID = ShipContainer->ContainerShape->GetPrimaryAssetId();
PlayerInfo->PlayerContainerItems = PlayerContainer->GetSaveData();
PlayerInfo->PlayerContainerShapeID = PlayerContainer->ContainerShape->GetPrimaryAssetId();
SaveGameInfo(); SaveGameInfo();
} }

View File

@ -23,10 +23,7 @@ protected:
UFUNCTION(BlueprintCallable) UFUNCTION(BlueprintCallable)
bool LoadGameInfo(); bool LoadGameInfo();
UFUNCTION(BlueprintCallable) UFUNCTION(BlueprintCallable)
void CreateGameInfo(UContainerInfo* ShipContainer, UContainerInfo* PlayerContainer); void CreateGameInfo(UContainerInfo* ShipContainer);
UFUNCTION(BlueprintCallable)
void CreateGameInfoAndSave(UShapeAsset* ShipContainerShape, UShapeAsset* PlayerContainerShape);
protected: protected:
UPROPERTY(BlueprintReadOnly) UPROPERTY(BlueprintReadOnly)
TObjectPtr<class UPlayerInfoSaveGame> PlayerInfo; TObjectPtr<class UPlayerInfoSaveGame> PlayerInfo;