public void FrameworkPlugins_SingleContextGet()
        {
            // engine data objects (not plugin-able business logic)
            Model model = CreateModel();
            var measurement = new Measurement();
            // plugin definition (unique and parameters)
            const string commandUnique = "pluginB_single_get";
            const string commandParameters = "parameter1=P1; parameter2=P2; material1=M1; material2=M2; threshold=0.4";

            var containerFramework = new ContainerFramework();
            var dataFramework = new DataFramework(containerFramework);
            dataFramework.Add<IModelDataEntity>(new ModelDataEntity(model));
            dataFramework.Add<IMeasurementDataEntity>(new MeasurementDataEntity(measurement));

            var commandFramework = new CommandFramework(containerFramework, dataFramework);
            commandFramework.AddPluginsFolder(new DataFolder(@"..\..\..\@PluginsBinaries"));
            commandFramework.AddPluginsBinary(new DataFile(@".\EngineAPI.dll"));
            commandFramework.Init();
//            var service1 = commandFramework.FindPlugin("model_get_measurement_properties").Value as IMeasurementPropertiesService;   //TODO should be implemented automatically
//            commandFramework.RegisterService<IMeasurementPropertiesService>(service1);
//            var service2 = commandFramework.FindPlugin("get_material_properties").Value as IMaterialPropertiesService;   //TODO should be implemented automatically
//            commandFramework.RegisterService<IMaterialPropertiesService>(service2);

            IDataEntity commandResult = commandFramework.RunCommand(commandUnique, commandParameters);
            Assert.IsInstanceOf<ModelParametersDataEntity>(commandResult);
        }
Пример #2
0
        public void FrameworkPlugins_SingleContextGet()
        {
            // engine data objects (not plugin-able business logic)
            Model model       = CreateModel();
            var   measurement = new Measurement();
            // plugin definition (unique and parameters)
            const string commandUnique     = "pluginB_single_get";
            const string commandParameters = "parameter1=P1; parameter2=P2; material1=M1; material2=M2; threshold=0.4";

            var containerFramework = new ContainerFramework();
            var dataFramework      = new DataFramework(containerFramework);

            dataFramework.Add <IModelDataEntity>(new ModelDataEntity(model));
            dataFramework.Add <IMeasurementDataEntity>(new MeasurementDataEntity(measurement));

            var commandFramework = new CommandFramework(containerFramework, dataFramework);

            commandFramework.AddPluginsFolder(new DataFolder(@"..\..\..\@PluginsBinaries"));
            commandFramework.AddPluginsBinary(new DataFile(@".\EngineAPI.dll"));
            commandFramework.Init();
//            var service1 = commandFramework.FindPlugin("model_get_measurement_properties").Value as IMeasurementPropertiesService;   //TODO should be implemented automatically
//            commandFramework.RegisterService<IMeasurementPropertiesService>(service1);
//            var service2 = commandFramework.FindPlugin("get_material_properties").Value as IMaterialPropertiesService;   //TODO should be implemented automatically
//            commandFramework.RegisterService<IMaterialPropertiesService>(service2);

            IDataEntity commandResult = commandFramework.RunCommand(commandUnique, commandParameters);

            Assert.IsInstanceOf <ModelParametersDataEntity>(commandResult);
        }
Пример #3
0
        public void FrameworkPlugins_Intro()
        {
            // engine data objects (not plugin-able business logic)
            Model model       = CreateModel();
            var   measurement = new Measurement();
            // plugin definition (unique and parameters)
            const string commandUnique     = "pluginB_stright";
            const string commandParameters = "parameter1=P1; parameter2=P2; material1=M1; material2=M2; threshold=0.4";

            var containerFramework = new ContainerFramework();
            var dataFramework      = new DataFramework(containerFramework);

            dataFramework.Add <IModelDataEntity>(new ModelDataEntity(model));
            dataFramework.Add <IMeasurementDataEntity>(new MeasurementDataEntity(measurement));

            var commandFramework = new CommandFramework(containerFramework, dataFramework);

            commandFramework.AddPluginsFolder(new DataFolder(@"..\..\..\@PluginsBinaries"));
            commandFramework.AddPluginsBinary(new DataFile(@".\EngineAPI.dll"));
            commandFramework.Init();

            IDataEntity commandResult = commandFramework.RunCommand(commandUnique, commandParameters);

            Assert.IsInstanceOf <ModelParametersDataEntity>(commandResult);
        }
Пример #4
0
        public UserDefinedCommand(Client client, string commandUnique, string commandName, string commandParameters)
        {
            this.commandFramework = client.CommandFramework;
            this.dataFramework    = client.DataFramework;

            Name          = commandName;
            Body          = commandParameters;
            CommandUnique = commandUnique;
        }
        public UserDefinedCommand(Client client, string commandUnique, string commandName, string commandParameters)
        {
            this.commandFramework = client.CommandFramework;
            this.dataFramework = client.DataFramework;

            Name = commandName;
            Body = commandParameters;
            CommandUnique = commandUnique;
        }
        public void FrameworkPlugins_Intro()
        {
            // engine data objects (not plugin-able business logic)
            Model model = CreateModel();
            var measurement = new Measurement();            
            // plugin definition (unique and parameters)
            const string commandUnique = "pluginB_stright";
            const string commandParameters = "parameter1=P1; parameter2=P2; material1=M1; material2=M2; threshold=0.4";

            var containerFramework = new ContainerFramework();
            var dataFramework = new DataFramework(containerFramework);
            dataFramework.Add<IModelDataEntity>(new ModelDataEntity(model));
            dataFramework.Add<IMeasurementDataEntity>(new MeasurementDataEntity(measurement));

            var commandFramework = new CommandFramework(containerFramework, dataFramework);
            commandFramework.AddPluginsFolder(new DataFolder(@"..\..\..\@PluginsBinaries"));
            commandFramework.AddPluginsBinary(new DataFile(@".\EngineAPI.dll"));
            commandFramework.Init();

            IDataEntity commandResult = commandFramework.RunCommand(commandUnique, commandParameters);
            Assert.IsInstanceOf<ModelParametersDataEntity>(commandResult);            
        }
Пример #7
0
 public Client()
 {
     DataFramework    = new DataFramework(containerFramework);
     CommandFramework = new CommandFramework(containerFramework, DataFramework);
 }
Пример #8
0
        public async Task Load()
        {
            DiscordRichPresence.Commit();

            Logger.Info("[Managers] Loading in all managers, one moment please...");

            Assembly.GetExecutingAssembly().GetExportedTypes()
            .SelectMany(self => self.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance))
            .Where(self => self.GetCustomAttribute(typeof(TickHandler), false) != null).ToList()
            .ForEach(self =>
            {
                var type = self.DeclaringType;

                if (type == null)
                {
                    return;
                }

                if (!TickHandlers.ContainsKey(type))
                {
                    TickHandlers.Add(type, new List <MethodInfo>());
                }

                Logger.Debug($"[TickHandlers] {type.Name}::{self.Name}");

                TickHandlers[type].Add(self);
            });

            var loaded = 0;

            // Load event system first
            LoadManager(typeof(EventSystem));

            foreach (var type in Assembly.GetExecutingAssembly().GetExportedTypes())
            {
                if (type.BaseType == null)
                {
                    continue;
                }
                if (!type.BaseType.IsGenericType)
                {
                    continue;
                }

                var generic = type.BaseType.GetGenericTypeDefinition();

                if (generic != typeof(Manager <>) || type == typeof(Manager <>))
                {
                    continue;
                }

                LoadManager(type);

                loaded++;
            }

            foreach (var manager in Managers)
            {
                var method = manager.Key.GetMethod("Begin", BindingFlags.Public | BindingFlags.Instance);

                method?.Invoke(manager.Value, null);
            }

            Logger.Info($"[Managers] Successfully loaded in {loaded} manager(s)!");

            var commands = new CommandFramework();

            commands.Bind(typeof(Administrator));
            commands.Bind(typeof(DeveloperTools));
            commands.Bind(typeof(StatusCommands.Online));
            commands.Bind(typeof(RoleplayChat.Me));
            commands.Bind(typeof(RoleplayChat.Twitter));
            commands.Bind(typeof(UtilityTools.Reload));
            commands.Bind(typeof(UtilityTools.Report));

            API.SetMaxWantedLevel(0);

            AttachTickHandlers(this);

            Logger.Info("Load method has been completed.");
        }
Пример #9
0
 public Client()
 {
     DataFramework = new DataFramework(containerFramework);
     CommandFramework = new CommandFramework(containerFramework, DataFramework);
 }