dungeoneer-cs/Scripting.cs

44 lines
948 B
C#
Raw Normal View History

using System.Collections.Generic;
2024-03-28 21:42:10 -04:00
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
namespace Dungeoneer {
public static class Scripting {
private static ScriptEngine Engine;
public static dynamic Scope;
2024-03-28 21:42:10 -04:00
static Scripting() {
// set up python engine
Engine = Python.CreateEngine();
Scope = Engine.CreateScope();
dynamic builtin = Engine.GetBuiltinModule();
2024-03-28 21:42:10 -04:00
var paths = Engine.GetSearchPaths();
paths.Add("/usr/lib/python3.12/");
Engine.SetSearchPaths(paths);
2024-03-28 21:42:10 -04:00
// set up python environment
builtin.SetVariable("input", (Func<string, string>)Input);
builtin.RemoveVariable("open");
Scope.repl = Program.ReplCommands;
// helper functions
Scope.roll = (Func<int, int>)Dungeoneer.Util.Roll;
2024-03-28 21:42:10 -04:00
}
public static void Run(string file) {
Engine.ExecuteFile(file, Scope);
}
public static string Input(string prompt) {
Console.Write(prompt);
return Console.ReadLine();
}
2024-03-28 21:42:10 -04:00
}
}