diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj
index d69864d32..e91f5adb4 100644
--- a/Artemis/Artemis/Artemis.csproj
+++ b/Artemis/Artemis/Artemis.csproj
@@ -379,6 +379,13 @@
GtaVView.xaml
+
+
+
+
+ LightFxView.xaml
+
+
@@ -834,6 +841,10 @@
Designer
MSBuild:Compile
+
+ MSBuild:Compile
+ Designer
+
Designer
MSBuild:Compile
diff --git a/Artemis/Artemis/Modules/Games/LightFx/LightFxDataModel.cs b/Artemis/Artemis/Modules/Games/LightFx/LightFxDataModel.cs
new file mode 100644
index 000000000..0807b5eca
--- /dev/null
+++ b/Artemis/Artemis/Modules/Games/LightFx/LightFxDataModel.cs
@@ -0,0 +1,15 @@
+using Artemis.Models.Interfaces;
+using MoonSharp.Interpreter;
+
+namespace Artemis.Modules.Games.LightFx
+{
+ [MoonSharpUserData]
+ public class LightFxDataModel : IDataModel
+ {
+ public LightFxDataModel()
+ {
+
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/Modules/Games/LightFx/LightFxModel.cs b/Artemis/Artemis/Modules/Games/LightFx/LightFxModel.cs
new file mode 100644
index 000000000..2b1cd4835
--- /dev/null
+++ b/Artemis/Artemis/Modules/Games/LightFx/LightFxModel.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using Artemis.DAL;
+using Artemis.Managers;
+using Artemis.Models;
+using Artemis.Profiles.Layers.Models;
+using Artemis.Utilities.GameState;
+
+namespace Artemis.Modules.Games.LightFx
+{
+ public class LightFxModel : GameModel
+ {
+ public LightFxModel(DeviceManager deviceManager, GameStateWebServer gameStateWebServer)
+ : base(deviceManager, SettingsProvider.Load(), new LightFxDataModel())
+ {
+ Name = "LightFX";
+ ProcessName = "LoL";
+ Scale = 4;
+ Enabled = Settings.Enabled;
+ Initialized = false;
+
+ // This model can enable itself by changing its process name to the currently running Light FX game.
+ gameStateWebServer.GameDataReceived += GameStateWebServerOnGameDataReceived;
+ }
+
+ private void GameStateWebServerOnGameDataReceived(object sender, GameDataReceivedEventArgs e)
+ {
+ var jsonString = e.Json.ToString();
+ // Ensure it's Light FX JSON
+ if (!jsonString.Contains("lightFxState"))
+ return;
+
+ // Deserialize and data
+
+ // Setup process name
+
+ }
+
+ public int Scale { get; set; }
+
+ public override void Dispose()
+ {
+ Initialized = false;
+ base.Dispose();
+ }
+
+ public override void Enable()
+ {
+ Initialized = true;
+ }
+
+ public override void Update()
+ {
+ }
+
+ public override List GetRenderLayers(bool keyboardOnly)
+ {
+ return Profile.GetRenderLayers(DataModel, keyboardOnly);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/Modules/Games/LightFx/LightFxSettings.cs b/Artemis/Artemis/Modules/Games/LightFx/LightFxSettings.cs
new file mode 100644
index 000000000..a1f31124a
--- /dev/null
+++ b/Artemis/Artemis/Modules/Games/LightFx/LightFxSettings.cs
@@ -0,0 +1,8 @@
+using Artemis.Settings;
+
+namespace Artemis.Modules.Games.LightFx
+{
+ public class LightFxSettings : GameSettings
+ {
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/Modules/Games/LightFx/LightFxView.xaml b/Artemis/Artemis/Modules/Games/LightFx/LightFxView.xaml
new file mode 100644
index 000000000..19e045370
--- /dev/null
+++ b/Artemis/Artemis/Modules/Games/LightFx/LightFxView.xaml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Artemis/Artemis/Modules/Games/LightFx/LightFxView.xaml.cs b/Artemis/Artemis/Modules/Games/LightFx/LightFxView.xaml.cs
new file mode 100644
index 000000000..6adb4506e
--- /dev/null
+++ b/Artemis/Artemis/Modules/Games/LightFx/LightFxView.xaml.cs
@@ -0,0 +1,18 @@
+using System.Windows.Controls;
+using System.Windows.Navigation;
+
+namespace Artemis.Modules.Games.LightFx
+{
+ public partial class LightFxView : UserControl
+ {
+ public LightFxView()
+ {
+ InitializeComponent();
+ }
+
+ private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
+ {
+ System.Diagnostics.Process.Start(e.Uri.ToString());
+ }
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/Modules/Games/LightFx/LightFxViewModel.cs b/Artemis/Artemis/Modules/Games/LightFx/LightFxViewModel.cs
new file mode 100644
index 000000000..23ab9c59b
--- /dev/null
+++ b/Artemis/Artemis/Modules/Games/LightFx/LightFxViewModel.cs
@@ -0,0 +1,16 @@
+using Artemis.Managers;
+using Artemis.Models;
+using Artemis.ViewModels.Abstract;
+using Ninject;
+
+namespace Artemis.Modules.Games.LightFx
+{
+ public sealed class LightFxViewModel : GameViewModel
+ {
+ public LightFxViewModel(MainManager main, IKernel kernel,
+ [Named("LightFxModel")] GameModel model) : base(main, model, kernel)
+ {
+ DisplayName = "Light FX";
+ }
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/Profiles/Layers/Conditions/DataModelCondition.cs b/Artemis/Artemis/Profiles/Layers/Conditions/DataModelCondition.cs
index 29f388749..620fb09e2 100644
--- a/Artemis/Artemis/Profiles/Layers/Conditions/DataModelCondition.cs
+++ b/Artemis/Artemis/Profiles/Layers/Conditions/DataModelCondition.cs
@@ -21,7 +21,7 @@ namespace Artemis.Profiles.Layers.Conditions
case ConditionType.NoneMet:
return !layerModel.Properties.Conditions.Any(cm => cm.ConditionMet(dataModel));
default:
- throw new ArgumentOutOfRangeException();
+ return false;
}
}
}