Exemple #1
0
        public void Deserialize(GenericReader reader)
        {
            state = PVPEventState.Setting;

            m_maker      = reader.ReadMobile();
            m_stone      = (PVPStone)reader.ReadItem();
            m_nom        = reader.ReadString();
            m_map        = PVPMap.Deserialize(reader);
            m_teams      = PVPTeamArrangement.Deserialize(reader, this);
            m_mode       = PVPMode.Deserialize(reader, this);
            m_debutEvent = reader.ReadDateTime();

            state = (PVPEventState)reader.ReadInt();

            debutTimer = new WaitingTimer(this);

            if (state >= PVPEventState.Preparing)
            {
                // Event commencé : Despawn et effaçage.
                teams.DespawnAll();
                StopEvent();
            }
            else if (m_debutEvent < DateTime.Now)
            {
                // Event surpassé : Effaçage.
                StopEvent();
            }
            else
            {
                // Event non débuté : Reboot.
                debutTimer.Start();
            }
        }
Exemple #2
0
        /// <summary>
        /// Retire l'event de la liste d'instances et le détruit.
        /// </summary>
        public void StopEvent()
        {
            if (state == PVPEventState.Started && m_mode != null)
            {
                m_mode.Stop();
                return; // m_mode.Stop() appelle la fonction StopEvent().
            }

            if (state >= PVPEventState.Started)
            {
                map.StopUsing();
            }

            // Logging, si on veut en faire.

            m_InstancesList.Remove(this);

            // Le garbage collector devrait déjà faire le travail de détruire après le remove de l'instance_list., mais on met tout à null par précaution.
            debutTimer.Stop();
            debutTimer = null;

            m_stone = null;
            state   = PVPEventState.Done;

            nom     = "";
            m_teams = null;
            map     = null;
            mode    = null;

            debutEvent = DateTime.Now;
        }
Exemple #3
0
        /// <summary>
        /// S'occupe de starter le timer qui fera commencer la bataille.
        /// Cette fonction devrait être utilisée lorsque les informations sont prêtes.
        /// </summary>
        /// <returns>
        /// Si une information (map, mode, équipes) est manquante, la fonction retournera false.
        /// Si les informations ont déjà été settées par le passé, ou que tout se déroule normalement, la fonction retournera true.</returns>
        public bool PrepareEvent()
        {
            if (state == PVPEventState.Setting && map != null && mode != null && teams != null && m_debutEvent > DateTime.Now)
            {
                debutTimer.Start();

                state = PVPEventState.Waiting;

                return(true);
            }

            return(false);
        }
Exemple #4
0
        /// <summary>
        /// S'occupe d'activer les spécificités propres au mode. Cette fonction est call-backed par le timer de début.
        /// </summary>
        private void StartEvent()
        {
            foreach (PVPTeam team in teams)
            {
                foreach (ScriptMobile joueur in team)
                {
                    joueur.Frozen = false;
                }
            }

            if (teams.Count != 0 &&
                map.UseMap())
            {
                state = PVPEventState.Started;

                mode.Start();
            }
        }
Exemple #5
0
        private PVPEvent(Mobile maker, PVPStone stone)
        {
            debutTimer = new WaitingTimer(this);
            state      = PVPEventState.Setting;

            m_maker = maker;
            m_stone = stone;

            m_nom        = "";
            m_map        = null;
            m_mode       = null;
            m_teams      = null;
            m_debutEvent = DateTime.Now;

            if (m_InstancesList == null)
            {
                m_InstancesList = new ArrayList();
            }
            m_InstancesList.Add(this);
        }