示例#1
0
        public static bool LoadDna(string path, Robot rob)
        {
            var hold = new StringBuilder();

            rob.Dna.Clear();

            if (path == "")
            {
                return(false);
            }

            var lines = File.ReadAllLines(path);

            foreach (var a in lines)
            {
                var processedLine = a;

                // eliminate comments at the end of a line
                // but preserves comments-only lines
                if (a.IndexOf('\'') > 0)
                {
                    processedLine = processedLine.Split("'")[0];
                }

                processedLine = processedLine.Replace('\t', ' ').Trim();

                if (processedLine.StartsWith("'") || processedLine.StartsWith("/") || string.IsNullOrEmpty(processedLine))
                {
                    if (processedLine.StartsWith("'#") || processedLine.StartsWith("/#"))
                    {
                        GetVals(rob, a, hold.ToString());
                    }
                }
                else
                {
                    if (processedLine.StartsWith("def"))
                    {
                        DnaManipulations.InsertVar(rob, a);
                    }
                    else
                    {
                        var parts = processedLine.Split(" ", StringSplitOptions.RemoveEmptyEntries);

                        foreach (var b in parts)
                        {
                            rob.Dna.Add(Parse(b, rob));
                        }
                    }
                }
                hold.AppendLine(a);
            }

            rob.Dna.Add(new DnaBlock {
                Type = 10, Value = 1
            });

            return(true);
        }