1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
SpoinkyNL ef69c39cf5 MIssing file
LUA refactor

LUA is made up out of modules now
Added DI to LUA
Added GetKeyPosition to keyboard module
Cleaned up event arguments (see wiki)
Made all internal classes public since Artemis isn't a library anyway
Added DI convention based bindings
2016-12-25 14:29:38 +01:00

184 lines
5.0 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Windows.Media;
using Artemis.Managers;
using Artemis.Modules.Effects.ProfilePreview;
using Artemis.Profiles.Layers.Models;
using Artemis.Profiles.Lua.Modules.Brushes;
using Artemis.Profiles.Lua.Wrappers;
using MoonSharp.Interpreter;
namespace Artemis.Profiles.Lua.Modules
{
[MoonSharpUserData]
public class LuaLayerModule : LuaModule
{
private readonly LayerModel _layerModel;
public LuaLayerModule(LuaManager luaManager, LayerModel layerModel) : base(luaManager)
{
_layerModel = layerModel;
SavedProperties = new Wrappers.LuaLayerProperties(_layerModel);
// Triger an update to fill up the Properties
_layerModel.Update(new ProfilePreviewDataModel(), true, false);
}
public override string ModuleName => "Layer";
#region Child methods
public List<LuaLayerWrapper> GetChildren()
{
return _layerModel.Children.Select(l => new LuaLayerWrapper(l)).ToList();
}
public LuaLayerWrapper GetChildByName(string name)
{
var layer = _layerModel.Children.FirstOrDefault(l => l.Name == name);
return layer == null ? null : new LuaLayerWrapper(layer);
}
#endregion
#region General layer properties
public string Name
{
get { return _layerModel.Name; }
set { _layerModel.Name = value; }
}
public bool Enabled
{
get { return _layerModel.Enabled; }
set { _layerModel.Enabled = value; }
}
public bool IsEvent
{
get { return _layerModel.IsEvent; }
set { _layerModel.IsEvent = value; }
}
public LuaLayerWrapper Parent => new LuaLayerWrapper(_layerModel.Parent);
#endregion
#region Render layer properties
public double X
{
get { return _layerModel.X; }
set { _layerModel.X = value; }
}
public double Y
{
get { return _layerModel.Y; }
set { _layerModel.Y = value; }
}
public double Width
{
get { return _layerModel.Width; }
set { _layerModel.Width = value; }
}
public double Height
{
get { return _layerModel.Height; }
set { _layerModel.Height = value; }
}
public double Opacity
{
get { return _layerModel.Opacity; }
set { _layerModel.Opacity = value; }
}
public double AnimationProgress
{
get { return _layerModel.AnimationProgress; }
set { _layerModel.AnimationProgress = value; }
}
#endregion
#region Advanced layer properties
public Wrappers.LuaLayerProperties SavedProperties { get; set; }
public string BrushType => _layerModel.Properties.Brush?.GetType().Name;
public LuaBrush Brush
{
get
{
if (_layerModel.Properties.Brush is SolidColorBrush)
return new LuaSolidColorBrush(_layerModel.Properties.Brush);
if (_layerModel.Properties.Brush is LinearGradientBrush)
return new LuaLinearGradientBrush(_layerModel.Properties.Brush);
if (_layerModel.Properties.Brush is RadialGradientBrush)
return new LuaRadialGradientBrush(_layerModel.Properties.Brush);
return null;
}
set { _layerModel.Properties.Brush = value?.Brush; }
}
#endregion
}
[MoonSharpUserData]
public class LuaLayerProperties
{
private readonly LayerModel _layerModel;
public LuaLayerProperties(LayerModel layerModel)
{
_layerModel = layerModel;
}
public double X
{
get { return _layerModel.Properties.X; }
set { _layerModel.Properties.X = value; }
}
public double Y
{
get { return _layerModel.Properties.Y; }
set { _layerModel.Properties.Y = value; }
}
public double Width
{
get { return _layerModel.Properties.Width; }
set { _layerModel.Properties.Width = value; }
}
public double Height
{
get { return _layerModel.Properties.Height; }
set { _layerModel.Properties.Height = value; }
}
public bool Contain
{
get { return _layerModel.Properties.Contain; }
set { _layerModel.Properties.Contain = value; }
}
public double Opacity
{
get { return _layerModel.Properties.Opacity; }
set { _layerModel.Properties.Opacity = value; }
}
public double AnimationSpeed
{
get { return _layerModel.Properties.AnimationSpeed; }
set { _layerModel.Properties.AnimationSpeed = value; }
}
}
}