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