Beispiel #1
0
 /// <summary>
 /// Конструктор дилога
 /// </summary>
 /// <param name="xNode">Корень элемента dialog с аттрибутом id</param>
 /// <param name="FileName">Полный путь к файлу</param>
 public GameDialog(XmlNode xNode, string FileName) : base(xNode, FileName)
 {
     Podpis     = new Podpis();
     Properties = new InfoportionAction();
     Properties.Load(xNode);
     Frases      = new ObservableCollection <DlgFrase>();
     Frase_voice = new ObservableCollection <DlgFrase>();
     foreach (XmlNode xItem in xNode.ChildNodes)
     {
         // Если попали на список фраз
         if (xItem.Name == "phrase_list")
         {
             // Проходим по всем фразам диалога
             foreach (XmlNode xFrase in xItem.ChildNodes)
             {
                 //if (xFrase.Attributes["id"].Value == "0")
                 //{
                 //    Frases.Add(new DlgFrase(xFrase, this));
                 //    LoadNext(xFrase);
                 //}
                 // Извлекаем узел и передаём в конструктор фразы
                 DlgFrase Frase = new DlgFrase(xFrase, this);
                 //string idfrase = xFrase.Attributes.GetNamedItem("id").Value;
                 Frases.Add(Frase);
             }
         }
         Frases_0 = GetFraseById("0");
         NormalNext("0");
         Frase_voice.Add(Frases_0);
     }
 }
Beispiel #2
0
 private bool IsCycleFrase(DlgFrase fr, DlgFrase fStep)
 {
     if (fr == fStep)
     {
         return(true);
     }
     else
     {
         foreach (DlgFrase item in fr.Next)
         {
             return(IsCycleFrase(fr, item));
         }
     }
     return(false);
 }
Beispiel #3
0
        private DlgFrase NormalNext(string idfrase = "0")
        {
            // Ищем очередной некст фразу
            DlgFrase fr = GetFraseById(idfrase);

            if ((fr == null) || (fr.Cycle))
            {
                return(null);
            }
            fr.Cycle = true;
            // Цикл по некстам найденной фразы
            foreach (string idnext in fr.NextText)
            {
                // рекурсивный вызов по поиску фразы по его ИД
                DlgFrase fn = NormalNext(idnext);
                if (fn != null)
                {
                    fr.Next.Add(fn);
                    fn.ParenFrase = fr;
                }
            }
            return(fr);
        }