mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Core - Renamed LayerService to RenderElementService
Display conditions - Implemented persistent storage
This commit is contained in:
1 parent
0dc77c0b6e
commit
f7453331bf
32 files changed
+209
-111
No files matched your search
@@ -155,6 +155,11 @@ namespace Artemis.Core.Services
|
||||
}
|
||||
}
|
||||
|
||||
public DisplayConditionOperator GetConditionOperator(Guid operatorPluginGuid, string operatorType)
|
||||
{
|
||||
return RegisteredConditionOperators.FirstOrDefault(o => o.PluginInfo.Guid == operatorPluginGuid && o.GetType().Name == operatorType);
|
||||
}
|
||||
|
||||
private void RegisterBuiltInConditionOperators()
|
||||
{
|
||||
RegisterConditionOperator(Constants.CorePluginInfo, new EqualsConditionOperator());
|
||||
|
||||
@@ -58,5 +58,6 @@ namespace Artemis.Core.Services.Interfaces
|
||||
void RemoveConditionOperator([NotNull] DisplayConditionOperator displayConditionOperator);
|
||||
|
||||
List<DisplayConditionOperator> GetCompatibleConditionOperators(Type type);
|
||||
DisplayConditionOperator GetConditionOperator(Guid operatorPluginGuid, string operatorType);
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -6,7 +6,7 @@ using Artemis.Core.Plugins.LayerEffect.Abstract;
|
||||
|
||||
namespace Artemis.Core.Services.Interfaces
|
||||
{
|
||||
public interface ILayerService : IArtemisService
|
||||
public interface IRenderElementService : IArtemisService
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new layer
|
||||
@@ -55,5 +55,7 @@ namespace Artemis.Core.Services.Interfaces
|
||||
BaseLayerEffect AddLayerEffect(RenderProfileElement renderProfileElement, LayerEffectDescriptor layerEffectDescriptor);
|
||||
|
||||
void RemoveLayerEffect(BaseLayerEffect layerEffect);
|
||||
|
||||
void InstantiateDisplayConditions(RenderProfileElement renderElement);
|
||||
}
|
||||
}
|
||||
+14
-5
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Artemis.Core.Exceptions;
|
||||
using Artemis.Core.Models.Profile;
|
||||
using Artemis.Core.Models.Profile.Conditions;
|
||||
using Artemis.Core.Plugins.Abstract;
|
||||
using Artemis.Core.Plugins.LayerBrush.Abstract;
|
||||
using Artemis.Core.Plugins.LayerEffect;
|
||||
@@ -14,17 +15,19 @@ using Serilog;
|
||||
|
||||
namespace Artemis.Core.Services
|
||||
{
|
||||
public class LayerService : ILayerService
|
||||
public class RenderElementService : IRenderElementService
|
||||
{
|
||||
private readonly IKernel _kernel;
|
||||
private readonly ILogger _logger;
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly IDataModelService _dataModelService;
|
||||
|
||||
public LayerService(IKernel kernel, ILogger logger, IPluginService pluginService, IDataModelService dataModelService)
|
||||
public RenderElementService(IKernel kernel, ILogger logger, IPluginService pluginService, IDataModelService dataModelService)
|
||||
{
|
||||
_kernel = kernel;
|
||||
_logger = logger;
|
||||
_pluginService = pluginService;
|
||||
_dataModelService = dataModelService;
|
||||
}
|
||||
|
||||
public Layer CreateLayer(Profile profile, ProfileElement parent, string name)
|
||||
@@ -39,6 +42,7 @@ namespace Artemis.Core.Services
|
||||
// With the properties loaded, the layer brush and effect can be instantiated
|
||||
InstantiateLayerBrush(layer);
|
||||
InstantiateLayerEffects(layer);
|
||||
InstantiateDisplayConditions(layer);
|
||||
return layer;
|
||||
}
|
||||
|
||||
@@ -112,7 +116,7 @@ namespace Artemis.Core.Services
|
||||
{
|
||||
var layerEffectProviders = _pluginService.GetPluginsOfType<LayerEffectProvider>();
|
||||
var descriptors = layerEffectProviders.SelectMany(l => l.LayerEffectDescriptors).ToList();
|
||||
var entities = renderElement.EffectsEntity.LayerEffects.OrderByDescending(e => e.Order).ToList();
|
||||
var entities = renderElement.RenderElementEntity.LayerEffects.OrderByDescending(e => e.Order).ToList();
|
||||
|
||||
foreach (var layerEffectEntity in entities)
|
||||
{
|
||||
@@ -143,10 +147,15 @@ namespace Artemis.Core.Services
|
||||
_logger.Debug("Instantiated layer effect with root path {rootPath}", effect.PropertyRootPath);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void InstantiateDisplayConditions(RenderProfileElement renderElement)
|
||||
{
|
||||
|
||||
var displayCondition = renderElement.RenderElementEntity.RootDisplayCondition != null
|
||||
? new DisplayConditionGroup(null, renderElement.RenderElementEntity.RootDisplayCondition)
|
||||
: new DisplayConditionGroup(null);
|
||||
|
||||
displayCondition.Initialize(_dataModelService);
|
||||
renderElement.DisplayConditionGroup = displayCondition;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,18 +19,18 @@ namespace Artemis.Core.Services.Storage
|
||||
/// </summary>
|
||||
public class ProfileService : IProfileService
|
||||
{
|
||||
private readonly ILayerService _layerService;
|
||||
private readonly IRenderElementService _renderElementService;
|
||||
private readonly ILogger _logger;
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly IProfileRepository _profileRepository;
|
||||
private readonly ISurfaceService _surfaceService;
|
||||
|
||||
internal ProfileService(ILogger logger, IPluginService pluginService, ISurfaceService surfaceService, ILayerService layerService, IProfileRepository profileRepository)
|
||||
internal ProfileService(ILogger logger, IPluginService pluginService, ISurfaceService surfaceService, IRenderElementService renderElementService, IProfileRepository profileRepository)
|
||||
{
|
||||
_logger = logger;
|
||||
_pluginService = pluginService;
|
||||
_surfaceService = surfaceService;
|
||||
_layerService = layerService;
|
||||
_renderElementService = renderElementService;
|
||||
_profileRepository = profileRepository;
|
||||
|
||||
_surfaceService.ActiveSurfaceConfigurationSelected += OnActiveSurfaceConfigurationSelected;
|
||||
@@ -170,9 +170,9 @@ namespace Artemis.Core.Services.Storage
|
||||
foreach (var layer in profile.GetAllLayers())
|
||||
{
|
||||
if (!layer.General.PropertiesInitialized)
|
||||
layer.General.InitializeProperties(_layerService, layer, "General.");
|
||||
layer.General.InitializeProperties(_renderElementService, layer, "General.");
|
||||
if (!layer.Transform.PropertiesInitialized)
|
||||
layer.Transform.InitializeProperties(_layerService, layer, "Transform.");
|
||||
layer.Transform.InitializeProperties(_renderElementService, layer, "Transform.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,11 +181,13 @@ namespace Artemis.Core.Services.Storage
|
||||
foreach (var folder in profile.GetAllFolders())
|
||||
{
|
||||
// Instantiate effects
|
||||
_layerService.InstantiateLayerEffects(folder);
|
||||
_renderElementService.InstantiateLayerEffects(folder);
|
||||
// Remove effects of plugins that are disabled
|
||||
var disabledEffects = new List<BaseLayerEffect>(folder.LayerEffects.Where(layerLayerEffect => !layerLayerEffect.PluginInfo.Enabled));
|
||||
foreach (var layerLayerEffect in disabledEffects)
|
||||
_layerService.RemoveLayerEffect(layerLayerEffect);
|
||||
_renderElementService.RemoveLayerEffect(layerLayerEffect);
|
||||
|
||||
_renderElementService.InstantiateDisplayConditions(folder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,17 +197,19 @@ namespace Artemis.Core.Services.Storage
|
||||
{
|
||||
// Instantiate brush
|
||||
if (layer.LayerBrush == null)
|
||||
_layerService.InstantiateLayerBrush(layer);
|
||||
_renderElementService.InstantiateLayerBrush(layer);
|
||||
// Remove brush if plugin is disabled
|
||||
else if (!layer.LayerBrush.PluginInfo.Enabled)
|
||||
_layerService.DeactivateLayerBrush(layer);
|
||||
_renderElementService.DeactivateLayerBrush(layer);
|
||||
|
||||
// Instantiate effects
|
||||
_layerService.InstantiateLayerEffects(layer);
|
||||
_renderElementService.InstantiateLayerEffects(layer);
|
||||
// Remove effects of plugins that are disabled
|
||||
var disabledEffects = new List<BaseLayerEffect>(layer.LayerEffects.Where(layerLayerEffect => !layerLayerEffect.PluginInfo.Enabled));
|
||||
foreach (var layerLayerEffect in disabledEffects)
|
||||
_layerService.RemoveLayerEffect(layerLayerEffect);
|
||||
_renderElementService.RemoveLayerEffect(layerLayerEffect);
|
||||
|
||||
_renderElementService.InstantiateDisplayConditions(layer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user