Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaScriptLoader.cs
Evil Factory bb0ea74961 example
2021-04-14 01:00:56 -03:00

88 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using MoonSharp.Interpreter;
using MoonSharp.Interpreter.Loaders;
namespace Barotrauma
{
partial class LuaSetup {
public class LuaScriptLoader : ScriptLoaderBase
{
public LuaSetup lua;
public LuaScriptLoader(LuaSetup l)
{
lua = l;
}
public override object LoadFile(string file, Table globalContext)
{
return File.ReadAllText(file);
}
public override bool ScriptFileExists(string file)
{
return File.Exists(file);
}
public void RunFolder(string folder)
{
foreach (var str in DirSearch(folder))
{
var s = str.Replace("\\", "/");
if (s.EndsWith(".lua"))
{
lua.PrintMessage(s);
try
{
lua.DoFile(s);
}
catch (Exception e)
{
lua.HandleLuaException(e);
}
}
}
}
static string[] DirSearch(string sDir)
{
List<string> files = new List<string>();
try
{
foreach (string f in Directory.GetFiles(sDir))
{
files.Add(f);
}
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d))
{
files.Add(f);
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
return files.ToArray();
}
}
}
}