Esempio n. 1
0
        public void Delete()
        {
            if (Deleted)
            {
                return;
            }

            Reset();

            if (_CoreTimer != null)
            {
                _CoreTimer.Dispose();
                _CoreTimer = null;
            }

            _CoreTicks = 0;

            if (Gate != null)
            {
                Gate.Delete();
                Gate = null;
            }

            ForEachTeam(t => t.Delete());

            if (Schedule != null)
            {
                Schedule.Stop();
                Schedule.Enabled       = false;
                Schedule.OnGlobalTick -= OnScheduleTick;
                Schedule = null;
            }

            if (_BattleRegion != null)
            {
                _BattleRegion.ClearPreview();
                _BattleRegion.Unregister();
                _BattleRegion = null;
            }

            if (_SpectateRegion != null)
            {
                _SpectateRegion.ClearPreview();
                _SpectateRegion.Unregister();
                _SpectateRegion = null;
            }

            if (Options != null)
            {
                Options.Clear();
            }

            OnDeleted();

            if (AutoPvP.RemoveBattle(this))
            {
                OnRemoved();
            }

            Deleted = true;
        }
Esempio n. 2
0
        public void Delete()
        {
            if (Deleted)
            {
                return;
            }

            Reset();

            EventSink.Shutdown -= ServerShutdownHandler;
            EventSink.Logout   -= LogoutHandler;
            EventSink.Login    -= LoginHandler;

            if (_CoreTimer != null)
            {
                _CoreTimer.Dispose();
                _CoreTimer = null;
            }

            _CoreTicks = 0;

            if (Gate != null)
            {
                Gate.Delete();
                Gate = null;
            }

            Teams.Where(t => t != null && !t.Deleted).ForEach(t => t.Delete());

            if (Schedule != null)
            {
                Schedule.Stop();
                Schedule.Enabled       = false;
                Schedule.OnGlobalTick -= OnScheduleTick;
                Schedule = null;
            }

            if (_BattleRegion != null)
            {
                _BattleRegion.ClearPreview();
                _BattleRegion.Unregister();
                _BattleRegion = null;
            }

            if (_SpectateRegion != null)
            {
                _SpectateRegion.ClearPreview();
                _SpectateRegion.Unregister();
                _SpectateRegion = null;
            }

            if (_Options != null)
            {
                _Options.Clear();
            }

            OnDeleted();

            if (AutoPvP.RemoveBattle(this))
            {
                OnRemoved();
            }

            Deleted = true;
        }