public bool LoadList() { if (!File.Exists(App.dataPath + @"\Programs.xml")) { return(false); } try { XmlDocument xDoc = new XmlDocument(); xDoc.Load(App.dataPath + @"\Programs.xml"); double fileVersion = 0.0; double.TryParse(xDoc.DocumentElement.GetAttribute("Version"), out fileVersion); if (fileVersion != xmlVersion) { App.LogError("Failed to load programlist, unknown file version {0}, expected {1}", fileVersion, xmlVersion); return(false); } int TotalCount = 0; int ErrorCount = 0; foreach (XmlNode node in xDoc.DocumentElement.ChildNodes) { TotalCount++; ProgramSet entry = new ProgramSet(); if (!entry.LoadSet(node)) { ErrorCount++; continue; } ProgramSets.Add(entry.guid, entry); foreach (Program prog in entry.Programs.Values) { Programs.Add(prog.ID, prog); } } if (ErrorCount != 0) { App.LogError("Failed to load {0} program entry out of {1}", ErrorCount, TotalCount); } App.LogInfo("ProgramList loaded {0} entries", TotalCount - ErrorCount); } catch (Exception err) { AppLog.Exception(err); return(false); } return(true); }
public bool Load() { if (!File.Exists(App.dataPath + @"\Programs.xml")) { return(false); } try { XmlDocument xDoc = new XmlDocument(); xDoc.Load(App.dataPath + @"\Programs.xml"); double fileVersion = 0.0; double.TryParse(xDoc.DocumentElement.GetAttribute("Version"), out fileVersion); if (fileVersion != xmlVersion) { Priv10Logger.LogError("Failed to load programlist, unknown file version {0}, expected {1}", fileVersion, xmlVersion); return(false); } int TotalCount = 0; int ErrorCount = 0; foreach (XmlNode node in xDoc.DocumentElement.ChildNodes) { TotalCount++; ProgramSet entry = new ProgramSet(); if (!entry.LoadSet(node)) { ErrorCount++; continue; } foreach (Program prog in entry.Programs.Values.ToList()) { // COMPAT: merge "duplicates" Program knownProg; if (App.engine.ProgramList.Programs.TryGetValue(prog.ID, out knownProg)) { foreach (var rule in prog.Rules) { knownProg.Rules.Add(rule.Key, rule.Value); } entry.Programs.Remove(prog.ID); } else { Programs.Add(prog.ID, prog); } } if (entry.Programs.Count > 0) { ProgramSets.Add(entry.guid, entry); } } if (ErrorCount != 0) { Priv10Logger.LogError("Failed to load {0} program entry out of {1}", ErrorCount, TotalCount); } Priv10Logger.LogInfo("ProgramList loaded {0} entries", TotalCount - ErrorCount); } catch (Exception err) { AppLog.Exception(err); return(false); } return(true); }