Esempio n. 1
0
 public virtual void Setup()
 {
     saveables = new ISaveableAndLoadable[0];
     saveables = saveables.AddRange(GetComponentsInChildren <ISaveableAndLoadable>());
     // SaveAndLoadObject sameTypeObj;
     // if (!SaveAndLoadManager.saveAndLoadObjectTypeDict.TryGetValue(typeId, out sameTypeObj))
     // {
     saveEntries = new SaveEntry[saveables.Length];
     for (int i = 0; i < saveables.Length; i++)
     {
         SaveEntry saveEntry = new SaveEntry();
         saveEntry.saveableAndLoadable = saveables[i];
         List <SaveEntry.MemberEntry> memberEntries = new List <SaveEntry.MemberEntry>();
         PropertyInfo[] properties = saveEntry.saveableAndLoadable.GetType().GetProperties();
         for (int i2 = 0; i2 < properties.Length; i2++)
         {
             PropertyInfo     property         = properties[i2];
             SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(property, typeof(SaveAndLoadValue)) as SaveAndLoadValue;
             if (saveAndLoadValue != null)
             {
                 SaveEntry.MemberEntry memberEntry = new SaveEntry.MemberEntry();
                 // memberEntry.isShared = saveAndLoadValue.isShared;
                 memberEntry.member = property;
                 memberEntries.Add(memberEntry);
             }
         }
         FieldInfo[] fields = saveEntry.saveableAndLoadable.GetType().GetFields();
         for (int i2 = 0; i2 < fields.Length; i2++)
         {
             FieldInfo        field            = fields[i2];
             SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(field, typeof(SaveAndLoadValue)) as SaveAndLoadValue;
             if (saveAndLoadValue != null)
             {
                 SaveEntry.MemberEntry memberEntry = new SaveEntry.MemberEntry();
                 // memberEntry.isShared = saveAndLoadValue.isShared;
                 memberEntry.member  = field;
                 memberEntry.isField = true;
                 memberEntries.Add(memberEntry);
             }
         }
         saveEntry.memberEntries = memberEntries.ToArray();
         saveEntries[i]          = saveEntry;
     }
     //  SaveAndLoadManager.saveAndLoadObjectTypeDict.Add(typeId, this);
     // }
     // else
     // {
     //  saveEntries = sameTypeObj.saveEntries;
     //  SaveEntry saveEntry;
     //  for (int i = 0; i < saveEntries.Length; i ++)
     //  {
     //      saveEntry = saveEntries[i];
     //      saveEntry.saveableAndLoadable = saveables[i];
     //      saveEntry.saveableAndLoadObject = this;
     //  }
     // }
 }
// #if UNITY_EDITOR
//      public virtual void Start ()
//      {
//          if (Application.isPlaying)
//              return;
//          if (uniqueId == 0)
//              uniqueId = Random.Range(int.MinValue, int.MaxValue);
//          Transform[] _saveableChildren = new Transform[0];
//          _saveableChildren.AddRange(saveableChildren);
//          Transform trs = GetComponent<Transform>();
//          if (!_saveableChildren.Contains(trs) && GetComponentsInChildren<ISavableAndLoadable>().Length > 0)
//          {
//              _saveableChildren = _saveableChildren.Add(trs);
//              saveableChildren = _saveableChildren;
//          }
//      }

//      public virtual void Reset ()
//      {
//          Start ();
//      }
// #endif

        public virtual void Init()
        {
            foreach (Transform saveableChild in saveableChildren)
            {
                saveables = saveables.AddRange(saveableChild.GetComponentsInChildren <ISavableAndLoadable>());
            }
            SaveAndLoadObject sameTypeObj;

            if (!SaveAndLoadManager.saveAndLoadObjectTypeDict.TryGetValue(typeId, out sameTypeObj))
            {
                saveEntries = new SavedObjectEntry[saveables.Length];
                for (int i = 0; i < saveables.Length; i++)
                {
                    SavedObjectEntry saveEntry = new SavedObjectEntry();
                    saveEntry.saveAndLoadObject   = this;
                    saveEntry.saveableAndLoadable = saveables[i];
                    saveEntry.members             = saveEntry.members.AddRange(saveEntry.saveableAndLoadable.GetType().GetMembers());
                    for (int i2 = 0; i2 < saveEntry.members.Length; i2++)
                    {
                        SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(saveEntry.members[i2], typeof(SaveAndLoadValue)) as SaveAndLoadValue;
                        if (saveAndLoadValue == null)
                        {
                            saveEntry.members = saveEntry.members.RemoveAt(i2);
                            i2--;
                        }
                    }
                    saveEntries[i] = saveEntry;
                }
                SaveAndLoadManager.saveAndLoadObjectTypeDict.Add(typeId, this);
            }
            else
            {
                saveEntries = sameTypeObj.saveEntries;
                SavedObjectEntry saveEntry;
                for (int i = 0; i < saveEntries.Length; i++)
                {
                    saveEntry = saveEntries[i];
                    saveEntry.saveableAndLoadable = saveables[i];
                    saveEntry.saveAndLoadObject   = this;
                    saveEntries[i] = saveEntry;
                }
            }
        }
Esempio n. 3
0
 public virtual void Setup()
 {
     saveables = GetComponentsInChildren <ISavableAndLoadable>();
     // SaveAndLoadObject sameTypeObj;
     // if (!SaveAndLoadManager.saveAndLoadObjectTypeDict.TryGetValue(typeId, out sameTypeObj))
     // {
     saveEntries = new SaveEntry[saveables.Length];
     for (int i = 0; i < saveables.Length; i++)
     {
         SaveEntry saveEntry = new SaveEntry();
         saveEntry.saveableAndLoadable = saveables[i];
         List <SaveEntry.MemberEntry> memberEntries = new List <SaveEntry.MemberEntry>();
         MemberInfo[] members = saveEntry.saveableAndLoadable.GetType().GetMembers();
         for (int i2 = 0; i2 < members.Length; i2++)
         {
             MemberInfo       member           = members[i2];
             SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(member, typeof(SaveAndLoadValue)) as SaveAndLoadValue;
             if (saveAndLoadValue != null)
             {
                 SaveEntry.MemberEntry memberEntry = new SaveEntry.MemberEntry();
                 // memberEntry.isShared = saveAndLoadValue.isShared;
                 memberEntry.member = member;
                 memberEntries.Add(memberEntry);
             }
         }
         saveEntry.memberEntries = memberEntries.ToArray();
         saveEntries[i]          = saveEntry;
     }
     //  SaveAndLoadManager.saveAndLoadObjectTypeDict.Add(typeId, this);
     // }
     // else
     // {
     //  saveEntries = sameTypeObj.saveEntries;
     //  SaveEntry saveEntry;
     //  for (int i = 0; i < saveEntries.Length; i ++)
     //  {
     //      saveEntry = saveEntries[i];
     //      saveEntry.saveableAndLoadable = saveables[i];
     //      saveEntry.saveableAndLoadObject = this;
     //  }
     // }
 }