Skip to content
Snippets Groups Projects
Select Git revision
  • 1488c78370593bc0a3102c395f4a36dfcf6100af
  • master default
  • JS-based-scroll-rendering
  • Paul_Marius_Level
  • Paul_Marius_2
  • Paul_Marius
  • Andi_Mark
  • be-UnityWebView
  • gitignoreFrameitServer
  • ZimmerBSc
  • Bugfix_StageLoading
  • stages
  • MAZIFAU_Experimental
  • tsc/coneworld
  • tsc/fact-interaction
  • marcel
  • MaZiFAU_TopSort
  • mergeHelper
  • zwischenSpeichern
  • tempAndrToMaster
  • SebBranch
  • 3.0
  • v2.1
  • v2.0
  • v1.0
25 results

DataContainerGadgetCollection.cs

Blame
  • DataContainerGadgetCollection.cs 1.35 KiB
    using System;
    using System.Linq;
    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 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();
    
            for (int i = 0; i < keys.Length; i++)
            {
                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]);
        }
    }