public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write(0); writer.Write(KickLocation); writer.Write(Lobby); writer.Write(Encounters.Count); Encounters.ForEach(encounter => { writer.Write((int)encounter.Encounter); encounter.Serialize(writer); }); writer.Write(Table == null ? 0 : Table.Count); if (Table != null) { ColUtility.ForEach(Table, (m, encounter) => { writer.Write(m); writer.Write((int)encounter); }); } writer.Write(Addons.Count); Addons.ForEach(addon => writer.Write(addon)); }
public void OnTick() { if (Encounters == null) { return; } Encounters.ForEach(e => { if (e != null) { DateTime end = e.StartTime + e.EncounterDuration; if (!e.DoneWarning && DateTime.UtcNow > end - TimeSpan.FromMinutes(5)) { e.DoWarning(); } else if (DateTime.UtcNow >= end) { e.Expire(); } else { e.OnTick(); } } }); }
public override void Delete() { base.Delete(); EndTimer(); Encounters.ForEach(e => { e.Reset(); if (e.Instance.Region != null) { e.Instance.Region.Unregister(); } }); ColUtility.Free(Encounters); Encounters = null; if (Queue != null) { Queue.Clear(); Queue = null; } if (Table != null) { Table.Clear(); Table = null; } }
public override void Delete() { base.Delete(); EndTimer(); if (Encounters != null) { Encounters.ForEach(e => { e.Reset(); }); ColUtility.Free(Encounters); Encounters = null; } if (Addons != null) { Addons.IterateReverse(addon => { addon.Delete(); }); ColUtility.Free(Addons); Addons = null; } if (Instances != null) { Instances.ForEach(inst => { if (inst.Region != null) { inst.ClearRegion(); inst.Region.Unregister(); } }); ColUtility.Free(Instances); Instances = null; } if (Queue != null) { Queue.Clear(); Queue = null; } if (Table != null) { Table.Clear(); Table = null; } Instance = null; }