Ejemplo n.º 1
0
        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);
        }