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; } }); }
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]); } } }
public static void UnregisterMobile(BaseCollectionMobile mob) { m_Collections[mob.CollectionID] = mob.GetData(); m_Mobiles.Remove(mob); }