public Criterion(XmlNode node, Advancement advancement) { //initialize members from xml ParentID = advancement.ID; ID = node.Attributes["id"]?.Value; var idParts = ID.Split(':'); string shortID = idParts.Length > 0 ? idParts[idParts.Length - 1] : null; Name = node.Attributes["name"]?.Value ?? new CultureInfo("en-US", false).TextInfo.ToTitleCase(shortID.Replace('_', ' ')); Icon = node.Attributes["icon"]?.Value ?? shortID.Replace(' ', '_').ToLower(); }
public HashSet <string> GetCompletedCriteriaFor(Advancement advancement) { var completed = new HashSet <string>(); dynamic criteria = json?[advancement.ID]?["criteria"]; if (criteria != null) { //advancement has criteria. add them foreach (string line in criteria.ToString().Split('\n')) { string[] tokens = line.Trim().Split('"'); if (tokens.Length > 1) { string criterion = tokens[1]; if (advancement.Criteria.ContainsKey(criterion)) { completed.Add(criterion); } } } } return(completed); }