예제 #1
0
        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));
        }
예제 #2
0
        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();
                    }
                }
            });
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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;
        }