private bool LoadRandoms() { var folder = MainFile.Replace(".per", "") + "\\LoadRandoms"; var loaded = false; foreach (var elements in Files.Values.ToList()) { for (int i = 0; i < elements.Count; i++) { var element = elements[i]; if (element.ActualCode.StartsWith("(load-random") && !element.ActualCode.Contains("GLX-LOAD-RANDOM-RESULT-")) { loaded = true; var name = "GLX-LOAD-RANDOM-RESULT-" + NextLoadRandomID; NextLoadRandomID++; Debug.WriteLine("Parsed load-random " + element.ActualCode); var pieces = element.Pieces; pieces.RemoveAt(0); var files = new List <string>(); for (int j = 1; j < pieces.Count; j += 2) { files.Add(pieces[j].Replace(")", "").Replace("\"", "").Trim()); } if (pieces.Count % 2 == 1) { files.Add(pieces[pieces.Count - 1].Replace(")", "").Replace("\"", "").Trim()); } var code = element.ActualCode; var new_elements = new List <Element>(); for (int res = 0; res < files.Count; res++) { var file = files[res]; var constant = name + "-" + res; var loadfile = Path.Combine(folder, constant); code = code.Replace(file, loadfile); Files.Add(loadfile + ".per", new List <Element>() { Element.Create($"(defconst {constant} 1)") }); new_elements.Add(Element.Create($"#load-if-defined {constant}")); new_elements.Add(Element.Create("")); new_elements.Add(Element.Create($"(load \"{file}\")")); new_elements.Add(Element.Create("")); new_elements.Add(Element.Create("#end-if")); } elements.RemoveAt(i); elements.InsertRange(i, new_elements); elements.Insert(i, Element.Create(code)); } } } return(loaded); }