//------------------------------------------------------ private void Init(IEnumerable <ISatisfactionBesoin> lstSatisfactions) { m_listeNiveaux.Clear(); m_setSatisfactionsIntegrés.Clear(); CNiveau niveau = new CNiveau(0); foreach (ISatisfactionBesoin sat in lstSatisfactions) { niveau.AddSatisfaction(this, sat); } m_listeNiveaux.Add(niveau); CNiveau niveau0 = niveau; while (niveau.Satisfactions.Count() != 0) { niveau = CalculeNiveauSuivant(); } niveau = niveau0; while (niveau.Satisfactions.Count() != 0) { niveau = CalculeNiveauPrecedent(); } CalculeRectangles(); m_satisfactionSel = null; m_lienSel = null; }
//------------------------------------------------------ private CNiveau CalculeNiveauPrecedent() { CNiveau niveauPrec = m_listeNiveaux[0]; CNiveau niveau = new CNiveau(niveauPrec.Niveau - 1); foreach (ISatisfactionBesoin satisfaction in niveauPrec.Satisfactions) { foreach (CRelationBesoin_Satisfaction rel in satisfaction.RelationsSatisfaits) { if (!m_setSatisfactionsIntegrés.Contains(rel.Besoin)) { niveau.AddSatisfaction(this, rel.Besoin); } } } m_listeNiveaux.Insert(0, niveau); return(niveau); }
//------------------------------------------------------ private CNiveau CalculeNiveauSuivant( ) { CNiveau niveauSuiv = m_listeNiveaux[m_listeNiveaux.Count - 1]; CNiveau niveau = new CNiveau(m_listeNiveaux[m_listeNiveaux.Count - 1].Niveau + 1); foreach (ISatisfactionBesoin sat in niveauSuiv.Satisfactions) { CBesoin besoin = sat as CBesoin; if (besoin != null) { foreach (CRelationBesoin_Satisfaction rel in besoin.RelationsSatisfactions) { niveau.AddSatisfaction(this, rel.Satisfaction); } } } m_listeNiveaux.Add(niveau); return(niveau); }