コード例 #1
0
ファイル: ScriptManager.cs プロジェクト: kulaj/Uchu
        public async Task SetManagedScript(string location, string source = default)
        {
            var list = ScriptPacks.ToList();

            foreach (var pack in ScriptPacks.OfType <PythonScriptPack>())
            {
                if (pack.Name != location)
                {
                    continue;
                }

                await pack.UnloadAsync();

                list.Remove(pack);
            }

            ScriptPacks = list;

            location = Path.Combine(Zone.UchuServer.MasterPath, location);

            if (File.Exists(location))
            {
                source = await File.ReadAllTextAsync(location);
            }
            else if (string.IsNullOrEmpty(source))
            {
                return;
            }

            var managedScript = new PythonScriptPack(Zone, location, source);

            ScriptPacks.Add(managedScript);

            await managedScript.LoadAsync();
        }
コード例 #2
0
ファイル: ScriptManager.cs プロジェクト: kulaj/Uchu
        private async Task <List <ScriptPack> > LoadManagedScriptsAsync()
        {
            Logger.Information($"Loading managed scripts...");

            var scriptPacks = new List <ScriptPack>();

            ManagedScriptEngine.Init();

            foreach (var script in Zone.UchuServer.Config.ManagedScriptSources?.Scripts ?? new List <string>())
            {
                Logger.Information($"Loading {script} managed script pack");

                string source = default;

                var location = Path.Combine(Zone.UchuServer.MasterPath, script);

                if (File.Exists(location))
                {
                    source = await File.ReadAllTextAsync(location);
                }

                var managedScript = new PythonScriptPack(Zone, location, source);

                scriptPacks.Add(managedScript);
            }

            return(scriptPacks);
        }