示例#1
0
        public ScriptZoneGenerator GetZoneGenerator(string name)
        {
            ScriptZoneGenerator result = null;

            zoneGenerators.TryGetValue(name, out result);
            return(result);
        }
示例#2
0
        private void LoadZoneGenerationScripts()
        {
            DirectoryInfo dirInfo = new DirectoryInfo(ZoneGeneratorsPath);

            DirectoryInfo[] generatorDirectories = dirInfo.GetDirectories();

            for (int i = 0; i < generatorDirectories.Length; i++)
            {
                FileInfo generatorFile = new FileInfo(Path.Combine(generatorDirectories[i].FullName, "generator.lua"));
                FileInfo settingsFile  = new FileInfo(Path.Combine(generatorDirectories[i].FullName, "settings.json"));

                if (generatorFile.Exists && settingsFile.Exists)
                {
                    try
                    {
                        string generatorName          = generatorDirectories[i].Name;
                        Script script                 = LoadScript(generatorFile.FullName);
                        string settingsString         = File.ReadAllText(settingsFile.FullName);
                        ScriptZoneGenerator generator = new ScriptZoneGenerator(generatorName, script, settingsString);
                        zoneGenerators.Add(generatorName, generator);

                        if (debug)
                        {
                            server.AttachToScript(script, generatorName);
                        }
                    }
                    catch (SyntaxErrorException e)
                    {
                        Debug.Log(e.DecoratedMessage);
                        e.Rethrow();
                    }
                }
            }
        }