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); }
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); }
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); }
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); }
public Client() { DataFramework = new DataFramework(containerFramework); CommandFramework = new CommandFramework(containerFramework, DataFramework); }
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."); }