Пример #1
0
        public static PVPTeamArrangement Deserialize(GenericReader reader, PVPEvent pvpevent)
        {
            int val = reader.ReadInt();
            PVPTeamArrangement teamArrangement = null;

            if (val != -1)
            {
                teamArrangement = (PVPTeamArrangement)Activator.CreateInstance(TeamArrangementList.Keys.ElementAt(val), pvpevent);

                int TeamsCount = reader.ReadInt();
                for (int i = 0; i < TeamsCount; ++i)
                {
                    teamArrangement.AjouterEquipe();

                    int JoueursCount = reader.ReadInt();
                    for (int j = 0; j < JoueursCount; ++j)
                    {
                        ScriptMobile mob = (ScriptMobile)reader.ReadMobile();

                        teamArrangement[i].Add(mob);
                        mob.PVPInfo = new PVPInfo(pvpevent, teamArrangement[i]);
                    }
                }
            }

            return(teamArrangement);
        }
Пример #2
0
        public static void Serialize(GenericWriter writer, PVPTeamArrangement teamArrangement)
        {
            if (teamArrangement != null)
            {
                for (int i = 0; i < TeamArrangementList.Count; i++)
                {
                    if (TeamArrangementList.Keys.ElementAt(i) == teamArrangement.GetType())
                    {
                        writer.Write(i);
                        break;
                    }
                }

                writer.Write(teamArrangement.m_teams.Count);
                foreach (PVPTeam team in teamArrangement.m_teams)
                {
                    writer.Write(team.Count);
                    foreach (ScriptMobile joueur in team)
                    {
                        writer.Write(joueur);
                    }
                }
            }
            else
            {
                writer.Write(-1);
            }
        }
Пример #3
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();
            }
        }
Пример #4
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;
        }
Пример #5
0
 public void Serialize(GenericWriter writer)
 {
     writer.Write(m_maker);
     writer.Write(m_stone);
     writer.Write(m_nom);
     PVPMap.Serialize(writer, m_map); // Important d'avoir la map avant le teamArrangement.
     PVPTeamArrangement.Serialize(writer, m_teams);
     PVPMode.Serialize(writer, m_mode);
     writer.Write(m_debutEvent);
     writer.Write((int)state); // Important de mettre le state à la fin.
 }
Пример #6
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);
        }