/// <inheritdoc /> /// <summary> /// </summary> /// <param name="id"></param> /// <param name="log"></param> /// <param name="repository"></param> /// <param name="luaProxy"></param> public LuaVirtualMachine(long id, ILogWrapper log, LuaFunctionRepository repository, LuaInterfaceProxy luaProxy) : base(id, "LuaVirtualMachine" + id) { if (id < 1) { throw new ArgumentOutOfRangeException(); } _tasks = new Dictionary <Task, CancellationTokenSource>(); _log = log; _repository = repository; _luaProxy = luaProxy; }
/// <inheritdoc /> /// <summary> /// Constructor /// </summary> public LuaVirtualMachineContext(ILogWrapper log, int numberVirtualMachines, LuaFunctionRepository repository) : base(1, "LuaVirtualMachineContext") { Validation.IsNotNull(log, "log"); Validation.Validate <ArgumentOutOfRangeException>(numberVirtualMachines > 0); Validation.IsNotNull(repository, "repository"); _repository = repository; var proxy = new LuaInterfaceProxy(); Enumerable.Range(0, numberVirtualMachines) .ToList() .ForEach(i => _virtualMachines.Enqueue(new LuaVirtualMachine(i + 1, log, repository, proxy))); }
/// <summary> /// /// </summary> /// <param name="functionRepository"></param> /// <param name="type"></param> /// <returns></returns> public static LuaFunctionRepository Register(Type type, LuaFunctionRepository functionRepository) { var repository = functionRepository ?? new LuaFunctionRepository(); var methods = type.GetMethods().ToList(); foreach (var info in methods) { foreach (var attr in Attribute.GetCustomAttributes(info).ToList().Where(x => x is LuaFunctionAttribute)) { var luaFunc = Create(info, attr); repository.Add(luaFunc.Name, luaFunc); } } return(repository); }
public void InitializeLuaFunctions() { var proxy = new LuaInterfaceProxy(); var luaFuncRepo = new LuaFunctionRepository(); LuaHelper.Register(typeof(LuaAreaFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaCreateFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaGetFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaMobFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaObjectFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaRoomFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaLookupFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaManagerFunctions), luaFuncRepo); LuaHelper.Register(typeof(LuaMudProgFunctions), luaFuncRepo); proxy.RegisterFunctions(luaFuncRepo); _luaManager.InitializeLuaProxy(proxy); }
/// <summary> /// /// </summary> /// <param name="repository"></param> public void RegisterFunctions(LuaFunctionRepository repository) { repository.Values.ToList().ForEach(x => RegisterFunction(x.Name, null, x.Info)); }