private Dictionary <string, ElementSetting> GetElementSettings() { var recipesFile = Server.MapPath("~/Content/recipes.txt"); var lines = System.IO.File.ReadLines(recipesFile).ToArray(); var elements = new Dictionary <string, ElementSetting>(); for (int i = 0; i < lines.Count(); i += 3) { var elementSetting = new ElementSetting(lines[i]); var origin = lines[i + 2]; if (origin != "Default") { var parentPairs = origin.Split(new[] { " OR " }, StringSplitOptions.None); // Man + Sex OR Sex + Woman foreach (var parentPair in parentPairs) { var parents = parentPair.Split(new[] { " + " }, StringSplitOptions.None); elementSetting.AddParents(parents[0], parents[1]); } } elements.Add(elementSetting.Name, elementSetting); } return(elements); }
private Element BuildGermLine(ElementSetting elementSetting, Dictionary <string, ElementSetting> elementSettings, Dictionary <string, Element> elements) { if (elements.ContainsKey(elementSetting.Name)) { return(elements[elementSetting.Name]); } var element = new Element(elementSetting.Name); foreach (var parentPair in elementSetting.PossibleParentPairs) { var firstParent = BuildGermLine(elementSettings[parentPair.Item1], elementSettings, elements); firstParent.EndOfLine = false; var secondParent = BuildGermLine(elementSettings[parentPair.Item2], elementSettings, elements); secondParent.EndOfLine = false; element.PossibleParents.Add(new ParentPair(firstParent, secondParent)); } element.Id = elements.Count; elements.Add(element.Name, element); return(element); }