/// <summary> /// Boucle de traitement /// </summary> /// <param name="lePattern"></param> private void TraiterPattern(EmpiricSimulationWorker lePattern = null) { if (lePattern != null) { while (lePattern.IsCiblesRestantesEtageActuel()) { lePattern.EffectuerRunEtageEnCours(); } } else { foreach (Etage e in PlanGeneral.RunsPossibles) { var wsp = new EmpiricSimulationWorker(e, PlanGeneral.RunsPossibles, PlanGeneral.EnnemisAElliminer); TraiterPattern(wsp); } } if (lePattern != null) { if (lePattern.IsCiblesRestantes()) { foreach (Etage e in lePattern.EtagesDisponibles) { var wsp = new EmpiricSimulationWorker(lePattern, e); TraiterPattern(wsp); } } else { Scenarii.Add(lePattern); } } }
public EmpiricSimulationWorker(EmpiricSimulationWorker wsp, Etage etageDeCombat) { EtagesEffectues = wsp.EtagesEffectues.ToDictionary(x => x.Key, x => x.Value); EtagesEffectues.Add(new Etage(etageDeCombat.Difficulte, etageDeCombat.MesVagues, etageDeCombat.Numero, etageDeCombat.NomZone), 0); EtagesDisponibles = wsp.EtagesDisponibles.ToList(); EtagesDisponibles.Remove(etageDeCombat); CiblesAAbattre = wsp.CiblesAAbattre.ToDictionary(x => x.Key, x => x.Value); Overkills = wsp.Overkills; }