Modules - Added enable override mechanism

Profile modules - Added animated module enable/disable
This commit is contained in:
Robert committed 2020-08-24 19:23:29 +02:00
1 parent 73e992bbb7
commit ed479abebc
21 files changed
+442 -122

No files matched your search

@@ -1,4 +1,5 @@
using System.Diagnostics;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Artemis.Core.Extensions;
@@ -39,7 +40,7 @@ namespace Artemis.Core.Plugins.Modules.ActivationRequirements
var processes = ProcessName != null ? Process.GetProcessesByName(ProcessName).Where(p => !p.HasExited) : Process.GetProcesses().Where(p => !p.HasExited);
return Location != null
? processes.Any(p => Path.GetDirectoryName(p.GetProcessFilename()) == Location)
? processes.Any(p => string.Equals(Path.GetDirectoryName(p.GetProcessFilename()), Location, StringComparison.CurrentCultureIgnoreCase))
: processes.Any();
}
}
+22 -8
View File
@@ -79,6 +79,12 @@ namespace Artemis.Core.Plugins.Modules
/// </summary>
public string DisplayIcon { get; set; }
/// <summary>
/// A path to an image to use as the modules display icon that's shown in the menu.
/// <para>If set, takes precedence over <see cref="DisplayIcon" /></para>
/// </summary>
public string DisplayIconPath { get; set; }
/// <summary>
/// Gets whether this module is activated. A module can only be active while its <see cref="ActivationRequirements" />
/// are met
@@ -138,14 +144,22 @@ namespace Artemis.Core.Plugins.Modules
public abstract void Render(double deltaTime, ArtemisSurface surface, SKCanvas canvas, SKImageInfo canvasInfo);
/// <summary>
/// Called when the <see cref="ActivationRequirements" /> are met
/// Called when the <see cref="ActivationRequirements" /> are met or during an override
/// </summary>
public abstract void ModuleActivated();
/// <param name="isOverride">
/// If true, the activation was due to an override. This usually means the module was activated
/// by the profile editor
/// </param>
public abstract void ModuleActivated(bool isOverride);
/// <summary>
/// Called when the <see cref="ActivationRequirements" /> are no longer met
/// Called when the <see cref="ActivationRequirements" /> are no longer met or during an override
/// </summary>
public abstract void ModuleDeactivated();
/// <param name="isOverride">
/// If true, the deactivation was due to an override. This usually means the module was deactivated
/// by the profile editor
/// </param>
public abstract void ModuleDeactivated(bool isOverride);
/// <summary>
/// Evaluates the activation requirements following the <see cref="ActivationRequirementMode" /> and returns the result
@@ -163,22 +177,22 @@ namespace Artemis.Core.Plugins.Modules
return false;
}
internal virtual void Activate()
internal virtual void Activate(bool isOverride)
{
if (IsActivated)
return;
ModuleActivated();
ModuleActivated(isOverride);
IsActivated = true;
}
internal virtual void Deactivate()
internal virtual void Deactivate(bool isOverride)
{
if (!IsActivated)
return;
IsActivated = false;
ModuleDeactivated();
ModuleDeactivated(isOverride);
}
internal void ApplyToEntity()
@@ -193,9 +193,9 @@ namespace Artemis.Core.Plugins.Modules
/// </summary>
public bool AnimatingProfileChange { get; private set; }
internal override void Deactivate()
internal override void Deactivate(bool isOverride)
{
base.Deactivate();
base.Deactivate(isOverride);
var profile = ActiveProfile;
ActiveProfile = null;