Example #1
0
 private void AddAbiBtn_Click(object sender, RoutedEventArgs e)
 {
     if (ActualPlugin == null)
     {
         ActualPlugin = new Core.Classes.Plugin();
     }
     ActualPlugin.AbilityTemplates.Add(new Core.Classes.AbilityTemplate());
 }
Example #2
0
 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);
     }
 }
Example #3
0
        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;
            }
        }