Newer
Older
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "DataContainerGadgetCollection", menuName = "ScriptableObjects/Spawn DataContainerGadgetCollection", order = 1)]
public class DataContainerGadgetCollection : ScriptableObject, ISerializationCallbackReceiver
{
public Material[] Materials;
public Sprite[] ButtonSprites;
public string[] GadgetNames;
public Dictionary<Gadget.GadgetIDs, DataContainerGadgetInit> DataContainerGadgetDict = new();
[SerializeField]
private List<Gadget.GadgetIDs> GadgetType = new();
[SerializeField]
private List<DataContainerGadgetInit> GadgetData = new();
public void OnBeforeSerialize()
{
var keys = DataContainerGadgetDict.Keys.ToArray();
var vals = DataContainerGadgetDict.Values.ToArray();
if (GadgetType.Count <= i) GadgetType.Add(keys[i]);
else GadgetType[i] = keys[i];
if (GadgetData.Count <= i) GadgetData.Add(vals[i]);
else GadgetData[i] = vals[i];
}
}
public void OnAfterDeserialize()
{
DataContainerGadgetDict = new();
for (int i = 0; i != Math.Min(GadgetType.Count, GadgetData.Count); i++)
if (GadgetData[i] != null)
DataContainerGadgetDict.Add(GadgetType[i], GadgetData[i]);
}