129 lines
4.3 KiB
C#
129 lines
4.3 KiB
C#
![]() |
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
[Serializable]
|
|||
|
public class SceneInventoryDataManager : SceneBaseDataManager<KeyValuePair<int, Item>>
|
|||
|
{
|
|||
|
protected override string OBJECT_FOLDER_NAME { get { return "Inventory"; } }
|
|||
|
protected override string OBJECT_LIST_NAME { get { return "InventoryList"; } }
|
|||
|
|
|||
|
protected new SceneBaseDataLoader<KeyValuePair<int, EquippableItemPrefabAsset>> DataLoader { get; set; }
|
|||
|
|
|||
|
private void Start()
|
|||
|
{
|
|||
|
Debug.Log("Start SceneInventoryData manager");
|
|||
|
|
|||
|
//TaskUIManager.FindOrCreateInstance();
|
|||
|
var inventoryManager = InventoryUIManager.Instance;
|
|||
|
|
|||
|
if (inventoryManager == null)
|
|||
|
throw new NullReferenceException("InventoryUIManager not found!!!");
|
|||
|
|
|||
|
StaticDataList = (new InventoryDataListManager()).SetUiManager(ref inventoryManager);
|
|||
|
// DynamicDataList = (new TaskDataListManager()).SetUiManager(ref taskManager);
|
|||
|
|
|||
|
DataLoader = new SceneInventoryDataLoader(OBJECT_LIST_NAME, OBJECT_FOLDER_NAME);
|
|||
|
|
|||
|
|
|||
|
//SaveData(StaticDataList.GetList(), SceneElementTypeEnum.None);
|
|||
|
|
|||
|
LoadData(SceneElementTypeEnum.None, ref StaticDataList);
|
|||
|
// LoadDynamicData();
|
|||
|
|
|||
|
inventoryManager.SetList(StaticDataList.GetList());
|
|||
|
|
|||
|
inventoryManager.OpenPanel();
|
|||
|
}
|
|||
|
|
|||
|
#region override load & save
|
|||
|
protected override bool LoadData(SceneElementTypeEnum type, ref DataListManager<KeyValuePair<int, Item>> dataListManager)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// 1. Convert EquippableItemPrefabAsset to EquippableItem list
|
|||
|
List<KeyValuePair<int, Item>> convertedList = new List<KeyValuePair<int, Item>>();
|
|||
|
|
|||
|
foreach(KeyValuePair<int, EquippableItemPrefabAsset> loadedEquippableItemPrefarbAssetElement in (List<KeyValuePair<int, EquippableItemPrefabAsset>>)DataLoader.LoadData(SceneElementTypeEnum.None))
|
|||
|
{
|
|||
|
convertedList.Add(new KeyValuePair<int, Item>(loadedEquippableItemPrefarbAssetElement.Key, (EquippableItem)loadedEquippableItemPrefarbAssetElement.Value.EquippableItem));
|
|||
|
}
|
|||
|
|
|||
|
// 2. Pass loaded list to InventoryDataManager
|
|||
|
dataListManager.SetList(convertedList);
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
catch (Exception e)
|
|||
|
{
|
|||
|
Debug.LogWarning(e.Message);
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
protected override bool SaveData(List<KeyValuePair<int, Item>> _elements, SceneElementTypeEnum type)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// 1. Convert EquippableItem to EquippableItemPrefabAsset list
|
|||
|
List<KeyValuePair<int, EquippableItemPrefabAsset>> convertedList = new List<KeyValuePair<int, EquippableItemPrefabAsset>>();
|
|||
|
|
|||
|
foreach (KeyValuePair<int, Item> itemElement in _elements)
|
|||
|
{
|
|||
|
convertedList.Add(new KeyValuePair<int, EquippableItemPrefabAsset>(
|
|||
|
itemElement.Key,
|
|||
|
new EquippableItemPrefabAsset(
|
|||
|
itemElement.Value.Name,
|
|||
|
itemElement.Value.ItemModel.name,
|
|||
|
new Vector3(0, 0, 0),
|
|||
|
(EquippableItem)itemElement.Value
|
|||
|
)
|
|||
|
));
|
|||
|
}
|
|||
|
|
|||
|
// 2. Pass loaded list to InventoryDataManager
|
|||
|
DataLoader.SaveData(convertedList, type);
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
catch (Exception e)
|
|||
|
{
|
|||
|
Debug.LogWarning(e.Message);
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
protected SceneBaseDataManager<KeyValuePair<int, Item>> GetObjectType()
|
|||
|
{
|
|||
|
return GameObject.FindObjectOfType<SceneInventoryDataManager>();
|
|||
|
}
|
|||
|
|
|||
|
protected SceneBaseDataManager<KeyValuePair<int, Item>> CreateInstance(ref GameObject managerGameObject)
|
|||
|
{
|
|||
|
return managerGameObject.AddComponent<SceneInventoryDataManager>();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// TODO whats with that
|
|||
|
/* public int AddToInventory(EquippableItem pickable)
|
|||
|
{
|
|||
|
if (this._items.Count <= MAX_ITEMS)
|
|||
|
{
|
|||
|
for (int slotNumber = 0; slotNumber < MAX_ITEMS; slotNumber++)
|
|||
|
{
|
|||
|
if (!this._items.ContainsKey(slotNumber))
|
|||
|
{
|
|||
|
this._items[slotNumber] = pickable;
|
|||
|
return slotNumber;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return -1;
|
|||
|
}*/
|
|||
|
}
|