private static void EventSink_WorldLoad()
        {
            Persistence.Deserialize(
                m_Path,
                reader =>
            {
                m_Mobiles.AddRange(reader.ReadMobileList().OfType <BaseCollectionMobile>());
                List <BaseCollectionMobile> mobs = new List <BaseCollectionMobile>();
                mobs.AddRange(m_Mobiles);

                int count = reader.ReadInt();
                for (int i = 0; i < count; ++i)
                {
                    int collection      = reader.ReadInt();
                    CollectionData data = new CollectionData();
                    data.Read(reader);
                    int toRemove = -1;
                    for (var index = 0; index < mobs.Count; index++)
                    {
                        BaseCollectionMobile mob = mobs[index];
                        if (mob.CollectionID == (Collection)collection)
                        {
                            mob.SetData(data);
                            toRemove = mobs.IndexOf(mob);
                            break;
                        }
                    }

                    if (toRemove >= 0)
                    {
                        mobs.RemoveAt(toRemove);
                    }
                }
            });
        }
        private static void EventSink_WorldSave(WorldSaveEventArgs e)
        {
            List <BaseCollectionMobile> newMobiles = new List <BaseCollectionMobile>();

            for (var index = 0; index < m_Mobiles.Count; index++)
            {
                BaseCollectionMobile mob = m_Mobiles[index];

                if (!mob.Deleted)
                {
                    newMobiles.Add(mob);
                }
            }

            m_Mobiles = newMobiles;

            Persistence.Serialize(
                m_Path,
                writer =>
            {
                writer.WriteMobileList(m_Mobiles);
                writer.Write(m_Mobiles.Count);
                for (var index = 0; index < m_Mobiles.Count; index++)
                {
                    BaseCollectionMobile mob = m_Mobiles[index];
                    writer.Write((int)mob.CollectionID);
                    CollectionData data = mob.GetData();
                    data.Write(writer);
                    m_Collections[mob.CollectionID] = data;
                }
            });
        }
Exemple #3
0
 public static void RegisterMobile(BaseCollectionMobile mob)
 {
     if (!m_Mobiles.Contains(mob))
     {
         m_Mobiles.Add(mob);
         if (m_Collections.ContainsKey(mob.CollectionID))
         {
             mob.SetData(m_Collections[mob.CollectionID]);
         }
     }
 }
Exemple #4
0
 public static void UnregisterMobile(BaseCollectionMobile mob)
 {
     m_Collections[mob.CollectionID] = mob.GetData();
     m_Mobiles.Remove(mob);
 }