Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
        /// <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)));
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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));
 }