Changed plugins to abstract classes

This commit is contained in:
SpoinkyNL committed 2019-04-16 00:24:50 +02:00
1 parent 083119dae2
commit bfc320c0ac
36 files changed
+657 -300

No files matched your search

@@ -0,0 +1,17 @@
using Artemis.Core.Plugins.Models;
namespace Artemis.Core.Plugins.Abstract
{
/// <inheritdoc />
/// <summary>
/// Allows you to expand the application-wide datamodel
/// </summary>
public abstract class DataModelExpansion : Plugin
{
protected DataModelExpansion(PluginInfo pluginInfo) : base(pluginInfo)
{
}
public abstract void Update(double deltaTime);
}
}
@@ -0,0 +1,15 @@
using Artemis.Core.Plugins.Models;
namespace Artemis.Core.Plugins.Abstract
{
/// <inheritdoc />
/// <summary>
/// Allows you to implement your own RGB device
/// </summary>
public abstract class Device : Plugin
{
protected Device(PluginInfo pluginInfo) : base(pluginInfo)
{
}
}
}
@@ -0,0 +1,29 @@
using System.Drawing;
using Artemis.Core.Plugins.Models;
using Artemis.Core.ProfileElements;
using RGB.NET.Core;
namespace Artemis.Core.Plugins.Abstract
{
/// <inheritdoc />
/// <summary>
/// Allows you to create your own layer type
/// </summary>
public abstract class LayerType : Plugin
{
protected LayerType(PluginInfo pluginInfo) : base(pluginInfo)
{
}
/// <summary>
/// Updates the layer type
/// </summary>
/// <param name="layer"></param>
public abstract void Update(Layer layer);
/// <summary>
/// Renders the layer type
/// </summary>
public abstract void Render(Layer device, RGBSurface surface, Graphics graphics);
}
}
@@ -0,0 +1,49 @@
using System.Drawing;
using Artemis.Core.Plugins.Models;
using RGB.NET.Core;
using Stylet;
namespace Artemis.Core.Plugins.Abstract
{
/// <inheritdoc />
/// <summary>
/// Allows you to add support for new games/applications
/// </summary>
public abstract class Module : Plugin
{
protected Module(PluginInfo pluginInfo) : base(pluginInfo)
{
}
/// <summary>
/// The modules display name that's shown in the menu
/// </summary>
public string DisplayName { get; protected set; }
/// <summary>
/// Whether or not this module expands upon the main data model. If set to true any data in main data model can be
/// accessed by profiles in this module
/// </summary>
public bool ExpandsMainDataModel { get; protected set; }
/// <summary>
/// Called each frame when the module must update
/// </summary>
/// <param name="deltaTime">Time since the last update</param>
public abstract void Update(double deltaTime);
/// <summary>
/// Called each frame when the module must render
/// </summary>
/// <param name="deltaTime">Time since the last render</param>
/// <param name="surface">The RGB Surface to render to</param>
/// <param name="graphics"></param>
public abstract void Render(double deltaTime, RGBSurface surface, Graphics graphics);
/// <summary>
/// Called when the module's main view is being shown
/// </summary>
/// <returns></returns>
public abstract IScreen GetMainViewModel();
}
}
@@ -1,14 +1,12 @@
using Artemis.Core.Plugins.Interfaces;
namespace Artemis.Core.Plugins.Abstract
namespace Artemis.Core.Plugins.Abstract
{
public abstract class ModuleDataModel
{
protected ModuleDataModel(IModule module)
protected ModuleDataModel(Module module)
{
Module = module;
}
public IModule Module { get; }
public Module Module { get; }
}
}
@@ -1,15 +1,14 @@
using Artemis.Core.Plugins.Interfaces;
using Stylet;
using Stylet;
namespace Artemis.Core.Plugins.Abstract
{
public abstract class ModuleViewModel : Screen
{
protected ModuleViewModel(IModule module)
protected ModuleViewModel(Module module)
{
Module = module;
}
public IModule Module { get; }
public Module Module { get; }
}
}
@@ -0,0 +1,35 @@
using System;
using Artemis.Core.Plugins.Models;
namespace Artemis.Core.Plugins.Abstract
{
/// <inheritdoc />
/// <summary>
/// This is the base plugin type, use the other interfaces such as Module to create plugins
/// </summary>
public abstract class Plugin : IDisposable
{
internal Plugin(PluginInfo pluginInfo)
{
PluginInfo = pluginInfo;
}
public PluginInfo PluginInfo { get; internal set; }
/// <summary>
/// Called when the plugin is activated
/// </summary>
public abstract void EnablePlugin();
/// <summary>
/// Called when the plugin is deactivated
/// </summary>
public abstract void DisablePlugin();
/// <inheritdoc />
/// <summary>
/// Called when the plugin is unloaded, clean up any unmanaged resources here
/// </summary>
public abstract void Dispose();
}
}
@@ -1,25 +1,21 @@
using System;
using System.Drawing;
using Artemis.Core.Plugins.Interfaces;
using Artemis.Core.Plugins.Models;
using Artemis.Core.ProfileElements;
using RGB.NET.Core;
using Stylet;
namespace Artemis.Core.Plugins.Abstract
{
public abstract class ProfileModule : IModule
public abstract class ProfileModule : Module
{
protected ProfileModule(PluginInfo pluginInfo) : base(pluginInfo)
{
}
public Profile ActiveProfile { get; private set; }
/// <inheritdoc />
public abstract string DisplayName { get; }
/// <inheritdoc />
public abstract bool ExpandsMainDataModel { get; }
/// <inheritdoc />
public virtual void Update(double deltaTime)
public override void Update(double deltaTime)
{
lock (this)
{
@@ -29,7 +25,7 @@ namespace Artemis.Core.Plugins.Abstract
}
/// <inheritdoc />
public virtual void Render(double deltaTime, RGBSurface surface, Graphics graphics)
public override void Render(double deltaTime, RGBSurface surface, Graphics graphics)
{
lock (this)
{
@@ -38,18 +34,6 @@ namespace Artemis.Core.Plugins.Abstract
}
}
/// <inheritdoc />
public abstract IScreen GetMainViewModel();
/// <inheritdoc />
public abstract void EnablePlugin();
/// <inheritdoc />
public abstract void DisablePlugin();
/// <inheritdoc />
public abstract void Dispose();
public void ChangeActiveProfile(Profile profile)
{
lock (this)