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); }
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); } }
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(); } }
/// <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; }
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. }
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); }