/// <summary>
/// Deserialize and load the save data.
/// </summary>
/// <param name="serializedSaveData">The serialized save data.</param>
public override void DeserializeAndLoadSaveData(Serialization serializedSaveData)
{
if (m_Inventory == null) { return; }
if (!m_Additive) {
var itemCollectionCount = m_Inventory.GetItemCollectionCount();
for (int i = 0; i < itemCollectionCount; i++) {
m_Inventory.GetItemCollection(i).RemoveAll();
}
}
var savedData = serializedSaveData.DeserializeFields(MemberVisibility.All) as InventorySaveData?;
if (savedData.HasValue == false) {
return;
}
var inventorySaveData = savedData.Value;
if (inventorySaveData.ItemIDAmountsPerCollection == null) { return; }
EventHandler.ExecuteEvent(m_Inventory.gameObject, EventNames.c_InventoryGameObject_InventoryMonitorListen_Bool, false);
for (int i = 0; i < inventorySaveData.ItemIDAmountsPerCollection.Length; i++) {
var itemIDAmounts = inventorySaveData.ItemIDAmountsPerCollection[i];
var itemAmounts = new ItemAmount[itemIDAmounts.Length];
for (int j = 0; j < itemIDAmounts.Length; j++) {
if (InventorySystemManager.ItemRegister.TryGetValue(itemIDAmounts[j].ID, out var item) == false) {
Debug.LogWarning($"Saved Item ID {itemIDAmounts[j].ID} could not be retrieved from the Inventory System Manager.");
continue;
}
itemAmounts[j] = new ItemAmount(item, itemIDAmounts[j].Amount);
}
var itemCollection = m_Inventory.GetItemCollection(i);
if (itemCollection == null) {
Debug.LogWarning("Item Collection from save data is missing in the scene.");
} else {
m_Inventory.GetItemCollection(i).AddItems(itemAmounts);
}
}
EventHandler.ExecuteEvent(m_Inventory.gameObject, EventNames.c_InventoryGameObject_InventoryMonitorListen_Bool, true);
}