private void AddAbiBtn_Click(object sender, RoutedEventArgs e) { if (ActualPlugin == null) { ActualPlugin = new Core.Classes.Plugin(); } ActualPlugin.AbilityTemplates.Add(new Core.Classes.AbilityTemplate()); }
private void DeleteBtn_Click(object sender, RoutedEventArgs e) { if (sender == null) { return; } if (((FrameworkElement)sender).DataContext is Core.Classes.AbilityTemplate abi) { if (ActualPlugin == null) { ActualPlugin = new Core.Classes.Plugin(); } ActualPlugin.AbilityTemplates.Remove(abi); } }
public static async Task ReloadPlugins() { ObservableCollection <Core.Classes.Plugin> tmpList; if (Plugins != null) { tmpList = new ObservableCollection <Core.Classes.Plugin>(Plugins); } else { tmpList = new ObservableCollection <Core.Classes.Plugin>(); } try { Plugins.Clear(); string pluginsPath = AppDomain.CurrentDomain.BaseDirectory + "/Plugins/"; if (!Directory.Exists(pluginsPath)) { Directory.CreateDirectory(pluginsPath); } string[] pluginsFiles = Directory.GetFiles(pluginsPath, "*.ffbeplugin", SearchOption.TopDirectoryOnly); for (int file = 0; file < pluginsFiles.Length; file++) { try { using (StreamReader sr = new StreamReader(pluginsFiles[file])) { string json = await sr.ReadToEndAsync(); JObject jObj = JsonConvert.DeserializeObject <JObject>(json); if (jObj["PluginName"] == null) { System.Diagnostics.Debug.WriteLine(string.Format("{0} doesn't has a name!", pluginsFiles[file])); continue; } string plugName = jObj["PluginName"].ToString(); string plugAuthor = jObj["PluginAuthor"] != null ? jObj["PluginAuthor"].ToString() : "Unknown"; Core.Classes.Plugin neoPlugin = new Core.Classes.Plugin() { PluginName = plugName, PluginAuthor = plugAuthor, PluginPath = pluginsFiles[file] }; if (jObj["AbilityTemplates"] != null && jObj["AbilityTemplates"] is JArray abilities) { for (int abi = 0; abi < abilities.Count; abi++) { Core.Classes.AbilityTemplate template = abilities[abi].ToObject <Core.Classes.AbilityTemplate>(); neoPlugin.AbilityTemplates.Add(template); } } if (neoPlugin.AbilityTemplates.Count != 0) { Plugins.Add(neoPlugin); } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(string.Format("{0}: {1}", pluginsFiles[file], ex.ToString())); } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); Plugins = tmpList; } }