1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Replaced all .NET settings with own settings implementation

This commit is contained in:
SpoinkyNL 2016-08-21 16:10:42 +02:00
parent f1214eb3ab
commit 53c016ffdd
88 changed files with 414 additions and 1820 deletions

View File

@ -360,17 +360,10 @@
<Compile Include="Managers\MainManager.cs" />
<Compile Include="Managers\ProfileManager.cs" />
<Compile Include="Models\EffectModel.cs" />
<Compile Include="Models\EffectSettings.cs" />
<Compile Include="Models\GameSettings.cs" />
<Compile Include="Models\Interfaces\GameDataModel.cs" />
<Compile Include="Models\OverlaySettings.cs" />
<Compile Include="Models\Interfaces\IDataModel.cs" />
<Compile Include="Modules\Effects\AudioVisualizer\AudioVisualization.cs" />
<Compile Include="Modules\Effects\Bubbles\Bubbles.cs" />
<Compile Include="Modules\Games\EurotruckSimulator2\EurotruckSimulator2.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>EurotruckSimulator2.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Effects\WindowsProfile\PerformanceInfo.cs" />
<Compile Include="Modules\Games\EurotruckSimulator2\EurotruckSimulator2DataModel.cs" />
<Compile Include="Modules\Games\EurotruckSimulator2\EurotruckSimulator2Model.cs" />
<Compile Include="Modules\Games\EurotruckSimulator2\EurotruckSimulator2Settings.cs" />
@ -378,11 +371,6 @@
<DependentUpon>EurotruckSimulator2View.xaml</DependentUpon>
</Compile>
<Compile Include="Modules\Games\EurotruckSimulator2\EurotruckSimulator2ViewModel.cs" />
<Compile Include="Modules\Games\UnrealTournament\UnrealTournament.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>UnrealTournament.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Games\UnrealTournament\UnrealTournamentDataModel.cs" />
<Compile Include="Modules\Games\UnrealTournament\UnrealTournamentModel.cs" />
<Compile Include="Modules\Games\UnrealTournament\UnrealTournamentSettings.cs" />
@ -390,11 +378,6 @@
<DependentUpon>UnrealTournamentView.xaml</DependentUpon>
</Compile>
<Compile Include="Modules\Games\UnrealTournament\UnrealTournamentViewModel.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoW.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>WoW.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Games\WorldofWarcraft\WoWDataModel.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoWModel.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoWSettings.cs" />
@ -423,31 +406,16 @@
<Compile Include="Profiles\ProfileModel.cs" />
<Compile Include="Profiles\Layers\Models\SimplePropertiesModel.cs" />
<Compile Include="Profiles\Layers\Types\Keyboard\KeyboardPropertiesModel.cs" />
<Compile Include="Modules\Effects\AudioVisualizer\AudioVisualization.Designer.cs">
<DependentUpon>AudioVisualization.settings</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Modules\Effects\AudioVisualizer\AudioVisualizerModel.cs" />
<Compile Include="Modules\Effects\AudioVisualizer\Utilities\FftEventArgs.cs" />
<Compile Include="Modules\Effects\AudioVisualizer\Utilities\SampleAggregator.cs" />
<Compile Include="Modules\Effects\Bubbles\Bubble.cs" />
<Compile Include="Modules\Effects\Bubbles\Bubbles.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Bubbles.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Effects\Bubbles\BubblesSettings.cs" />
<Compile Include="Modules\Effects\Bubbles\BubblesModel.cs" />
<Compile Include="Modules\Effects\Bubbles\BubblesView.xaml.cs">
<DependentUpon>BubblesView.xaml</DependentUpon>
</Compile>
<Compile Include="Modules\Effects\Bubbles\BubblesViewModel.cs" />
<Compile Include="Modules\Effects\WindowsProfile\WindowsProfile.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>WindowsProfile.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Effects\WindowsProfile\WindowsProfileSettings.cs" />
<Compile Include="Modules\Effects\WindowsProfile\WindowsProfileView.xaml.cs">
<DependentUpon>WindowsProfileView.xaml</DependentUpon>
@ -457,37 +425,17 @@
<Compile Include="Modules\Effects\WindowsProfile\WindowsProfileModel.cs" />
<Compile Include="Modules\Effects\ProfilePreview\ProfilePreviewModel.cs" />
<Compile Include="Models\GameModel.cs" />
<Compile Include="Modules\Games\CounterStrike\CounterStrike.Designer.cs">
<DependentUpon>CounterStrike.settings</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Modules\Games\CounterStrike\CounterStrikeDataModel.cs" />
<Compile Include="Modules\Games\CounterStrike\CounterStrikeModel.cs" />
<Compile Include="Modules\Games\CounterStrike\CounterStrikeSettings.cs" />
<Compile Include="Modules\Games\Dota2\Dota2.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Dota2.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Games\Dota2\Dota2DataModel.cs" />
<Compile Include="Modules\Games\Dota2\Dota2Model.cs" />
<Compile Include="Modules\Games\Dota2\Dota2Settings.cs" />
<Compile Include="Modules\Games\Overwatch\OverwatchView.xaml.cs">
<DependentUpon>OverwatchView.xaml</DependentUpon>
</Compile>
<Compile Include="Modules\Games\RocketLeague\RocketLeague.Designer.cs">
<DependentUpon>RocketLeague.settings</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Modules\Games\RocketLeague\RocketLeagueDataModel.cs" />
<Compile Include="Modules\Games\RocketLeague\RocketLeagueModel.cs" />
<Compile Include="Modules\Games\TheDivision\TheDivision.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>TheDivision.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Games\TheDivision\TheDivisionDataModel.cs" />
<Compile Include="Modules\Games\TheDivision\TheDivisionModel.cs" />
<Compile Include="Modules\Games\TheDivision\TheDivisionSettings.cs" />
@ -496,21 +444,11 @@
</Compile>
<Compile Include="Modules\Games\TheDivision\TheDivisionViewModel.cs" />
<Compile Include="Modules\Games\Overwatch\OverwatchDataModel.cs" />
<Compile Include="Modules\Games\Overwatch\Overwatch.Designer.cs">
<DependentUpon>Overwatch.settings</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Modules\Games\Overwatch\OverwatchModel.cs" />
<Compile Include="Modules\Games\Overwatch\OverwatchSettings.cs" />
<Compile Include="Modules\Games\Overwatch\OverwatchViewModel.cs" />
<Compile Include="Modules\Games\Witcher3\Witcher3DataModel.cs" />
<Compile Include="Modules\Games\Witcher3\Witcher3Settings.cs" />
<Compile Include="Modules\Games\Witcher3\Witcher3.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Witcher3.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Games\Witcher3\Witcher3Model.cs" />
<Compile Include="Models\OverlayModel.cs" />
<Compile Include="Modules\Overlays\VolumeDisplay\VolumeDisplay.cs" />
@ -520,7 +458,6 @@
<DependentUpon>VolumeDisplay.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Overlays\VolumeDisplay\VolumeDisplayModel.cs" />
<Compile Include="Modules\Effects\AudioVisualizer\AudioVisualizerSettings.cs" />
<Compile Include="Modules\Overlays\VolumeDisplay\VolumeDisplaySettings.cs" />
<Compile Include="Modules\Games\RocketLeague\RocketLeagueSettings.cs" />
<Compile Include="InjectionModules\BaseModules.cs" />
@ -553,13 +490,12 @@
</Compile>
<Compile Include="Services\DialogService.cs" />
<Compile Include="Services\MetroDialogService.cs" />
<Compile Include="Settings\EffectSettings.cs" />
<Compile Include="Settings\GameSettings.cs" />
<Compile Include="Settings\GeneralSettings.cs" />
<Compile Include="Settings\IArtemisSettings.cs" />
<Compile Include="Settings\Offsets.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Offsets.settings</DependentUpon>
</Compile>
<Compile Include="Settings\OffsetSettings.cs" />
<Compile Include="Settings\OverlaySettings.cs" />
<Compile Include="Styles\DropTargetAdorners\DropTargetMetroHighlightAdorner.cs" />
<Compile Include="Styles\DropTargetAdorners\DropTargetMetroInsertionAdorner.cs" />
<Compile Include="Utilities\ColorHelpers.cs" />
@ -691,19 +627,7 @@
<SubType>Code</SubType>
</Compile>
<EmbeddedResource Include="Modules\Games\UnrealTournament\Resources\ut-plugin.zip" />
<None Include="Modules\Games\EurotruckSimulator2\EurotruckSimulator2.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>EurotruckSimulator2.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Games\UnrealTournament\UnrealTournament.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>UnrealTournament.Designer.cs</LastGenOutput>
</None>
<EmbeddedResource Include="Modules\Games\Witcher3\Resources\witcher3-mod.zip" />
<None Include="Modules\Games\WorldofWarcraft\WoW.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>WoW.Designer.cs</LastGenOutput>
</None>
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
@ -714,42 +638,6 @@
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="Modules\Effects\AudioVisualizer\AudioVisualization.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>AudioVisualization.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Effects\Bubbles\Bubbles.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Bubbles.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Effects\WindowsProfile\WindowsProfile.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>WindowsProfile.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Games\CounterStrike\CounterStrike.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>CounterStrike.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Games\Dota2\Dota2.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Dota2.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Games\RocketLeague\RocketLeague.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>RocketLeague.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Games\TheDivision\TheDivision.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>TheDivision.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Games\Overwatch\Overwatch.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Overwatch.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Games\Witcher3\Witcher3.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Witcher3.Designer.cs</LastGenOutput>
</None>
<None Include="Modules\Overlays\VolumeDisplay\VolumeDisplay.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>VolumeDisplay.Designer.cs</LastGenOutput>
@ -785,10 +673,6 @@
<Resource Include="Resources\Keyboards\blackwidow.png" />
<None Include="Resources\Keyboards\none.png" />
<None Include="Resources\Keyboards\demo-gif.gif" />
<None Include="Settings\Offsets.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Offsets.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<None Include="App.config">

View File

@ -22,7 +22,7 @@ namespace Artemis
public ArtemisBootstrapper()
{
// Start logging before anything else
Logging.SetupLogging(SettingsProvider.Load<GeneralSettings>("GeneralSettings").LogLevel);
Logging.SetupLogging(SettingsProvider.Load<GeneralSettings>().LogLevel);
Initialize();
BindSpecialValues();

View File

@ -20,15 +20,14 @@ namespace Artemis.DAL
/// <summary>
/// Loads settings with the given name from the filesystem
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static T Load<T>(string name) where T : new()
public static T Load<T>() where T : new()
{
if (!AreSettings(typeof(T)))
throw new ArgumentException("Type doesn't implement IArtemisSettings");
// Attempt to load from memory first
var inMemory = Settings.FirstOrDefault(s => s.Name == name);
var inMemory = Settings.FirstOrDefault(s => s.GetType() == typeof(T));
if (inMemory != null)
return (T) inMemory;
@ -37,20 +36,24 @@ namespace Artemis.DAL
try
{
var loadSettings = (IArtemisSettings) JsonConvert
.DeserializeObject<T>(File.ReadAllText(SettingsFolder + $@"\{name}.json"));
.DeserializeObject<T>(File.ReadAllText(SettingsFolder + $@"\{typeof(T)}.json"));
if (loadSettings == null)
SetToDefault(ref loadSettings);
{
loadSettings = (IArtemisSettings) new T();
loadSettings.Reset(true);
}
Settings.Add(loadSettings);
return (T) loadSettings;
}
catch (Exception e)
{
Logger.Error(e, "Couldn't load settings '{0}.json'", name);
Logger.Error(e, "Couldn't load settings '{0}.json'", typeof(T));
// Not sure about this, I've seen prettier code
var loadSettings = (IArtemisSettings) new T();
SetToDefault(ref loadSettings);
loadSettings.Reset(true);
Settings.Add(loadSettings);
return (T) loadSettings;
}
@ -73,29 +76,27 @@ namespace Artemis.DAL
}
catch (Exception e)
{
Logger.Error(e, "Couldn't save settings '{0}.json'", artemisSettings.Name);
Logger.Error(e, "Couldn't save settings '{0}.json'", artemisSettings.GetType());
return;
}
File.WriteAllText(SettingsFolder + $@"\{artemisSettings.Name}.json", json);
File.WriteAllText(SettingsFolder + $@"\{artemisSettings.GetType()}.json", json);
}
/// <summary>
/// Restores the settings object to its default values
/// Ensures the settings folder exists
/// </summary>
/// <param name="settings"></param>
public static void SetToDefault(ref IArtemisSettings settings)
{
// Loading the object from an empty JSON object makes Json.NET use all the default values
settings = (IArtemisSettings) JsonConvert.DeserializeObject("{}", settings.GetType());
}
private static void CheckSettings()
{
if (!Directory.Exists(SettingsFolder))
Directory.CreateDirectory(SettingsFolder);
}
/// <summary>
/// Checks to see if the given type is a setting
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
private static bool AreSettings(Type t)
{
return typeof(IArtemisSettings).IsAssignableFrom(t);

View File

@ -24,7 +24,7 @@ namespace Artemis.Managers
public DeviceManager(ILogger logger, List<DeviceProvider> deviceProviders)
{
_logger = logger;
_generalSettings = SettingsProvider.Load<GeneralSettings>("GeneralSettings");
_generalSettings = SettingsProvider.Load<GeneralSettings>();
KeyboardProviders = deviceProviders.Where(d => d.Type == DeviceType.Keyboard)
.Cast<KeyboardProvider>().ToList();

View File

@ -25,7 +25,7 @@ namespace Artemis.Managers
{
EffectModels = new List<EffectModel>();
_generalSettings = DAL.SettingsProvider.Load<GeneralSettings>("GeneralSettings");
_generalSettings = DAL.SettingsProvider.Load<GeneralSettings>();
_logger = logger;
_deviceManager = deviceManager;

View File

@ -40,7 +40,7 @@ namespace Artemis.Managers
Running = false;
// Create and start the web server
GameStateWebServer = new GameStateWebServer();
GameStateWebServer = new GameStateWebServer(logger);
GameStateWebServer.Start();
// Start the named pipe

View File

@ -16,6 +16,7 @@ namespace Artemis.Managers
private readonly EffectManager _effectManager;
private readonly ILogger _logger;
private readonly LoopManager _loopManager;
private GeneralSettings _generalSettings;
public ProfileManager(ILogger logger, EffectManager effectManager, DeviceManager deviceManager,
LoopManager loopManager)
@ -24,6 +25,7 @@ namespace Artemis.Managers
_effectManager = effectManager;
_deviceManager = deviceManager;
_loopManager = loopManager;
_generalSettings = SettingsProvider.Load<GeneralSettings>();
GameViewModels = new List<GameViewModel>();
@ -45,7 +47,7 @@ namespace Artemis.Managers
/// <param name="e"></param>
private void SetupProfilePreview(object sender, ElapsedEventArgs e)
{
if (string.IsNullOrEmpty(SettingsProvider.Load<GeneralSettings>("GeneralSettings").LastKeyboard) || _deviceManager.ChangingKeyboard ||
if (string.IsNullOrEmpty(_generalSettings.LastKeyboard) || _deviceManager.ChangingKeyboard ||
ProfilePreviewModel == null)
return;

View File

@ -8,6 +8,7 @@ using Artemis.Models.Interfaces;
using Artemis.Profiles;
using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Settings;
using Newtonsoft.Json;
namespace Artemis.Models

View File

@ -1,20 +0,0 @@
namespace Artemis.Models
{
public abstract class EffectSettings
{
/// <summary>
/// Loads the settings from the settings file
/// </summary>
public abstract void Load();
/// <summary>
/// Saves the settings to the settings file
/// </summary>
public abstract void Save();
/// <summary>
/// Returns the settings to their default value
/// </summary>
public abstract void ToDefault();
}
}

View File

@ -1,5 +1,6 @@
using Artemis.Managers;
using Artemis.Models.Interfaces;
using Artemis.Settings;
namespace Artemis.Models
{

View File

@ -1,26 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace Artemis.Models
{
public class GamePointersCollectionModel
{
public string Game { get; set; }
public string GameVersion { get; set; }
public List<GamePointer> GameAddresses { get; set; }
}
public class GamePointer
{
public string Description { get; set; }
public IntPtr BasePointer { get; set; }
public int[] Offsets { get; set; }
public override string ToString()
{
return Offsets.Aggregate(BasePointer.ToString("X"),
(current, offset) => current + $"+{offset.ToString("X")}");
}
}
}

View File

@ -1,8 +0,0 @@
namespace Artemis.Models
{
public abstract class GameSettings : EffectSettings
{
public bool Enabled { get; set; }
public string LastProfile { get; set; }
}
}

View File

@ -1,6 +1,6 @@
namespace Artemis.Models.Interfaces
{
public interface IDataModel
{
}
namespace Artemis.Models.Interfaces
{
public interface IDataModel
{
}
}

View File

@ -1,4 +1,5 @@
using Artemis.Managers;
using Artemis.Settings;
namespace Artemis.Models
{

View File

@ -1,7 +0,0 @@
namespace Artemis.Models
{
public abstract class OverlaySettings : EffectSettings
{
public bool Enabled { get; set; }
}
}

View File

@ -1,110 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Effects.AudioVisualizer {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class AudioVisualization : global::System.Configuration.ApplicationSettingsBase {
private static AudioVisualization defaultInstance = ((AudioVisualization)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new AudioVisualization())));
public static AudioVisualization Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("4")]
public int Sensitivity {
get {
return ((int)(this["Sensitivity"]));
}
set {
this["Sensitivity"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("21")]
public int Bars {
get {
return ((int)(this["Bars"]));
}
set {
this["Bars"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool FromBottom {
get {
return ((bool)(this["FromBottom"]));
}
set {
this["FromBottom"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("3")]
public int FadeSpeed {
get {
return ((int)(this["FadeSpeed"]));
}
set {
this["FadeSpeed"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("#FFF90000")]
public global::System.Windows.Media.Color TopColor {
get {
return ((global::System.Windows.Media.Color)(this["TopColor"]));
}
set {
this["TopColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("#FFFF761E")]
public global::System.Windows.Media.Color MiddleColor {
get {
return ((global::System.Windows.Media.Color)(this["MiddleColor"]));
}
set {
this["MiddleColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("#FF00DF00")]
public global::System.Windows.Media.Color BottomColor {
get {
return ((global::System.Windows.Media.Color)(this["BottomColor"]));
}
set {
this["BottomColor"] = value;
}
}
}
}

View File

@ -1,29 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Effects.AudioVisualizer" GeneratedClassName="AudioVisualization">
<Profiles />
<Settings>
<Setting Name="Sensitivity" Type="System.Int32" Scope="User">
<Value Profile="(Default)">4</Value>
</Setting>
<Setting Name="Bars" Type="System.Int32" Scope="User">
<Value Profile="(Default)">21</Value>
</Setting>
<Setting Name="FromBottom" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="FadeSpeed" Type="System.Int32" Scope="User">
<Value Profile="(Default)">3</Value>
</Setting>
<Setting Name="TopColor" Type="System.Windows.Media.Color" Scope="User">
<Value Profile="(Default)">#FFF90000</Value>
</Setting>
<Setting Name="MiddleColor" Type="System.Windows.Media.Color" Scope="User">
<Value Profile="(Default)">#FFFF761E</Value>
</Setting>
<Setting Name="BottomColor" Type="System.Windows.Media.Color" Scope="User">
<Value Profile="(Default)">#FF00DF00</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -23,18 +23,16 @@ namespace Artemis.Modules.Effects.AudioVisualizer
private int _sensitivity;
private IWaveIn _waveIn;
public AudioVisualizerModel(MainManager mainManager) : base(mainManager, new AudioVisualizerSettings(), null)
public AudioVisualizerModel(MainManager mainManager) : base(mainManager, null, null)
{
Name = "Audiovisualizer";
DeviceIds = new List<string>();
SpectrumData = new List<byte>();
Initialized = false;
Settings = (AudioVisualizerSettings) base.Settings;
}
public int Lines { get; set; }
public new AudioVisualizerSettings Settings { get; set; }
public List<byte> SpectrumData { get; set; }
public List<KeyboardRectangle> SoundRectangles { get; set; }
@ -72,15 +70,15 @@ namespace Artemis.Modules.Effects.AudioVisualizer
MainManager.DeviceManager.ActiveKeyboard,
0, 0, new List<Color>
{
ColorHelpers.ToDrawingColor(Settings.TopColor),
ColorHelpers.ToDrawingColor(Settings.MiddleColor),
ColorHelpers.ToDrawingColor(Settings.BottomColor)
Color.Red,
Color.Yellow,
Color.Lime
},
LinearGradientMode.Vertical)
{ContainedBrush = false, Height = 0});
}
_sensitivity = Settings.Sensitivity;
_fromBottom = Settings.FromBottom;
_sensitivity = 2;
_fromBottom = true;
_sampleAggregator.FftCalculated += FftCalculated;
_sampleAggregator.PerformFFT = true;
@ -127,7 +125,7 @@ namespace Artemis.Modules.Effects.AudioVisualizer
SoundRectangles[i].Height = keyboardHeight;
else
SoundRectangles[i].Height = SoundRectangles[i].Height -
Settings.FadeSpeed;
5; // was FadeSpeed setting
// Apply Bars setting
SoundRectangles[i].X = i*KeyboardScale;
SoundRectangles[i].Width = KeyboardScale;

View File

@ -1,56 +0,0 @@
using System.Windows.Media;
using Artemis.Models;
namespace Artemis.Modules.Effects.AudioVisualizer
{
public class AudioVisualizerSettings : EffectSettings
{
public AudioVisualizerSettings()
{
Load();
}
public int Sensitivity { get; set; }
public int Bars { get; set; }
public bool FromBottom { get; set; }
public int FadeSpeed { get; set; }
public Color TopColor { get; set; }
public Color MiddleColor { get; set; }
public Color BottomColor { get; set; }
public sealed override void Load()
{
Sensitivity = AudioVisualization.Default.Sensitivity;
Bars = AudioVisualization.Default.Bars;
FromBottom = AudioVisualization.Default.FromBottom;
FadeSpeed = AudioVisualization.Default.FadeSpeed;
TopColor = AudioVisualization.Default.TopColor;
MiddleColor = AudioVisualization.Default.MiddleColor;
BottomColor = AudioVisualization.Default.BottomColor;
}
public sealed override void Save()
{
AudioVisualization.Default.Sensitivity = Sensitivity;
AudioVisualization.Default.Bars = Bars;
AudioVisualization.Default.FromBottom = FromBottom;
AudioVisualization.Default.FadeSpeed = FadeSpeed;
AudioVisualization.Default.TopColor = TopColor;
AudioVisualization.Default.MiddleColor = MiddleColor;
AudioVisualization.Default.BottomColor = BottomColor;
AudioVisualization.Default.Save();
}
public sealed override void ToDefault()
{
Sensitivity = 4;
Bars = 21;
FromBottom = true;
FadeSpeed = 3;
TopColor = Color.FromArgb(255, 249, 0, 0);
MiddleColor = Color.FromArgb(255, 255, 118, 30);
BottomColor = Color.FromArgb(255, 0, 223, 0);
}
}
}

View File

@ -1,122 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Effects.Bubbles {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Bubbles : global::System.Configuration.ApplicationSettingsBase {
private static Bubbles defaultInstance = ((Bubbles)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Bubbles())));
public static Bubbles Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool IsRandomColors {
get {
return ((bool)(this["IsRandomColors"]));
}
set {
this["IsRandomColors"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("#FFFF0000")]
public global::System.Windows.Media.Color BubbleColor {
get {
return ((global::System.Windows.Media.Color)(this["BubbleColor"]));
}
set {
this["BubbleColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool IsShiftColors {
get {
return ((bool)(this["IsShiftColors"]));
}
set {
this["IsShiftColors"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("25")]
public int BubbleSize {
get {
return ((int)(this["BubbleSize"]));
}
set {
this["BubbleSize"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("4")]
public int MoveSpeed {
get {
return ((int)(this["MoveSpeed"]));
}
set {
this["MoveSpeed"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("12")]
public int ShiftColorSpeed {
get {
return ((int)(this["ShiftColorSpeed"]));
}
set {
this["ShiftColorSpeed"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("14")]
public int BubbleCount {
get {
return ((int)(this["BubbleCount"]));
}
set {
this["BubbleCount"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("25")]
public int Smoothness {
get {
return ((int)(this["Smoothness"]));
}
set {
this["Smoothness"] = value;
}
}
}
}

View File

@ -1,32 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Effects.Bubbles" GeneratedClassName="Bubbles">
<Profiles />
<Settings>
<Setting Name="IsRandomColors" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="BubbleColor" Type="System.Windows.Media.Color" Scope="User">
<Value Profile="(Default)">#FFFF0000</Value>
</Setting>
<Setting Name="IsShiftColors" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="BubbleSize" Type="System.Int32" Scope="User">
<Value Profile="(Default)">25</Value>
</Setting>
<Setting Name="MoveSpeed" Type="System.Int32" Scope="User">
<Value Profile="(Default)">4</Value>
</Setting>
<Setting Name="ShiftColorSpeed" Type="System.Int32" Scope="User">
<Value Profile="(Default)">12</Value>
</Setting>
<Setting Name="BubbleCount" Type="System.Int32" Scope="User">
<Value Profile="(Default)">14</Value>
</Setting>
<Setting Name="Smoothness" Type="System.Int32" Scope="User">
<Value Profile="(Default)">25</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,60 +1,54 @@
using System.Windows.Media;
using Artemis.Models;
using System.ComponentModel;
using System.Windows.Media;
using Artemis.DAL;
using Artemis.Settings;
using Newtonsoft.Json;
namespace Artemis.Modules.Effects.Bubbles
{
public class BubblesSettings : EffectSettings
{
public BubblesSettings()
{
Load();
}
[DefaultValue(true)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public bool IsRandomColors { get; set; }
public Color BubbleColor { get; set; }
[DefaultValue(true)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public bool IsShiftColors { get; set; }
[DefaultValue(12)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public int ShiftColorSpeed { get; set; }
[DefaultValue(25)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public int BubbleSize { get; set; }
[DefaultValue(4)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public int MoveSpeed { get; set; }
[DefaultValue(14)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public int BubbleCount { get; set; }
[DefaultValue(25)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public int Smoothness { get; set; }
public sealed override void Load()
public new void Reset(bool save = false)
{
IsRandomColors = Bubbles.Default.IsRandomColors;
BubbleColor = Bubbles.Default.BubbleColor;
IsShiftColors = Bubbles.Default.IsShiftColors;
ShiftColorSpeed = Bubbles.Default.ShiftColorSpeed;
BubbleSize = Bubbles.Default.BubbleSize;
MoveSpeed = Bubbles.Default.MoveSpeed;
BubbleCount = Bubbles.Default.BubbleCount;
Smoothness = Bubbles.Default.Smoothness;
}
JsonConvert.PopulateObject("{}", this, new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Reuse
});
public sealed override void Save()
{
Bubbles.Default.IsRandomColors = IsRandomColors;
Bubbles.Default.BubbleColor = BubbleColor;
Bubbles.Default.IsShiftColors = IsShiftColors;
Bubbles.Default.ShiftColorSpeed = ShiftColorSpeed;
Bubbles.Default.BubbleSize = BubbleSize;
Bubbles.Default.MoveSpeed = MoveSpeed;
Bubbles.Default.BubbleCount = BubbleCount;
Bubbles.Default.Smoothness = Smoothness;
BubbleColor = Colors.Red;
Bubbles.Default.Save();
}
public sealed override void ToDefault()
{
IsRandomColors = true;
BubbleColor = Color.FromArgb(255, 255, 0, 0);
IsShiftColors = true;
ShiftColorSpeed = 12;
BubbleSize = 25;
MoveSpeed = 4;
BubbleCount = 14;
Smoothness = 25;
if (save)
SettingsProvider.Save(this);
}
}
}

View File

@ -0,0 +1,48 @@
using System;
using System.Runtime.InteropServices;
namespace Artemis.Modules.Effects.WindowsProfile
{
internal static class PerformanceInfo
{
[DllImport("psapi.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetPerformanceInfo([Out] out PerformanceInformation performanceInformation,
[In] int size);
public static long GetPhysicalAvailableMemoryInMiB()
{
var pi = new PerformanceInformation();
if (GetPerformanceInfo(out pi, Marshal.SizeOf(pi)))
return Convert.ToInt64(pi.PhysicalAvailable.ToInt64()*pi.PageSize.ToInt64()/1048576);
return -1;
}
public static long GetTotalMemoryInMiB()
{
var pi = new PerformanceInformation();
if (GetPerformanceInfo(out pi, Marshal.SizeOf(pi)))
return Convert.ToInt64(pi.PhysicalTotal.ToInt64()*pi.PageSize.ToInt64()/1048576);
return -1;
}
[StructLayout(LayoutKind.Sequential)]
public struct PerformanceInformation
{
public int Size;
public IntPtr CommitTotal;
public IntPtr CommitLimit;
public IntPtr CommitPeak;
public IntPtr PhysicalTotal;
public IntPtr PhysicalAvailable;
public IntPtr SystemCache;
public IntPtr KernelTotal;
public IntPtr KernelPaged;
public IntPtr KernelNonPaged;
public IntPtr PageSize;
public int HandlesCount;
public int ProcessCount;
public int ThreadCount;
}
}
}

View File

@ -1,38 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Effects.WindowsProfile {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class WindowsProfile : global::System.Configuration.ApplicationSettingsBase {
private static WindowsProfile defaultInstance = ((WindowsProfile)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new WindowsProfile())));
public static WindowsProfile Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Demo (Duplicate to keep changes)")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
}
}

View File

@ -1,11 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Effects.WindowsProfile" GeneratedClassName="WindowsProfile">
<Profiles />
<Settings>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Demo (Duplicate to keep changes)</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
@ -12,54 +12,6 @@ using SpotifyAPI.Local;
namespace Artemis.Modules.Effects.WindowsProfile
{
internal static class PerformanceInfo
{
[DllImport("psapi.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetPerformanceInfo([Out] out PerformanceInformation performanceInformation,
[In] int size);
public static long GetPhysicalAvailableMemoryInMiB()
{
var pi = new PerformanceInformation();
if (GetPerformanceInfo(out pi, Marshal.SizeOf(pi)))
{
return Convert.ToInt64(pi.PhysicalAvailable.ToInt64()*pi.PageSize.ToInt64()/1048576);
}
return -1;
}
public static long GetTotalMemoryInMiB()
{
var pi = new PerformanceInformation();
if (GetPerformanceInfo(out pi, Marshal.SizeOf(pi)))
{
return Convert.ToInt64(pi.PhysicalTotal.ToInt64()*pi.PageSize.ToInt64()/1048576);
}
return -1;
}
[StructLayout(LayoutKind.Sequential)]
public struct PerformanceInformation
{
public int Size;
public IntPtr CommitTotal;
public IntPtr CommitLimit;
public IntPtr CommitPeak;
public IntPtr PhysicalTotal;
public IntPtr PhysicalAvailable;
public IntPtr SystemCache;
public IntPtr KernelTotal;
public IntPtr KernelPaged;
public IntPtr KernelNonPaged;
public IntPtr PageSize;
public int HandlesCount;
public int ProcessCount;
public int ThreadCount;
}
}
public class WindowsProfileModel : EffectModel
{
private readonly ILogger _logger;
@ -70,7 +22,7 @@ namespace Artemis.Modules.Effects.WindowsProfile
private bool _spotifySetupBusy;
public WindowsProfileModel(ILogger logger, MainManager mainManager)
: base(mainManager, new WindowsProfileSettings(), new WindowsProfileDataModel())
: base(mainManager, SettingsProvider.Load<WindowsProfileSettings>(), new WindowsProfileDataModel())
{
_logger = logger;
Name = "WindowsProfile";
@ -133,7 +85,7 @@ namespace Artemis.Modules.Effects.WindowsProfile
private void UpdateCpu(WindowsProfileDataModel dataModel)
{
if (_cores == null || _overallCpu == null)
if ((_cores == null) || (_overallCpu == null))
return;
// CPU is only updated every 15 frames, the performance counter gives 0 if updated too often

View File

@ -1,28 +1,8 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Effects.WindowsProfile
{
public class WindowsProfileSettings : GameSettings
{
public WindowsProfileSettings()
{
Load();
}
public sealed override void Load()
{
LastProfile = WindowsProfile.Default.LastProfile;
}
public sealed override void Save()
{
WindowsProfile.Default.LastProfile = LastProfile;
WindowsProfile.Default.Save();
}
public sealed override void ToDefault()
{
}
}
}

View File

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.CounterStrike {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class CounterStrike : global::System.Configuration.ApplicationSettingsBase {
private static CounterStrike defaultInstance = ((CounterStrike)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new CounterStrike())));
public static CounterStrike Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string GameDirectory {
get {
return ((string)(this["GameDirectory"]));
}
set {
this["GameDirectory"] = value;
}
}
}
}

View File

@ -1,17 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.CounterStrike" GeneratedClassName="CounterStrike">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
<Setting Name="GameDirectory" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
@ -11,7 +12,8 @@ namespace Artemis.Modules.Games.CounterStrike
{
public class CounterStrikeModel : GameModel
{
public CounterStrikeModel(MainManager mainManager): base(mainManager, new CounterStrikeSettings(), new CounterStrikeDataModel())
public CounterStrikeModel(MainManager mainManager)
: base(mainManager, SettingsProvider.Load<CounterStrikeSettings>(), new CounterStrikeDataModel())
{
Name = "CounterStrike";
ProcessName = "csgo";

View File

@ -1,35 +1,9 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.CounterStrike
{
public class CounterStrikeSettings : GameSettings
{
public CounterStrikeSettings()
{
Load();
}
public string GameDirectory { get; set; }
public sealed override void Load()
{
Enabled = CounterStrike.Default.Enabled;
LastProfile = CounterStrike.Default.LastProfile;
GameDirectory = CounterStrike.Default.GameDirectory;
}
public sealed override void Save()
{
CounterStrike.Default.Enabled = Enabled;
CounterStrike.Default.GameDirectory = GameDirectory;
CounterStrike.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
GameDirectory = string.Empty;
}
}
}

View File

@ -23,7 +23,7 @@ namespace Artemis.Modules.Games.CounterStrike
{
var gameSettings = (CounterStrikeSettings) GameSettings;
// If already propertly set up, don't do anything
if (gameSettings.GameDirectory != null && File.Exists(gameSettings.GameDirectory + "csgo.exe") &&
if ((gameSettings.GameDirectory != null) && File.Exists(gameSettings.GameDirectory + "csgo.exe") &&
File.Exists(gameSettings.GameDirectory + "/csgo/cfg/gamestate_integration_artemis.cfg"))
return;

View File

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.Dota2 {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Dota2 : global::System.Configuration.ApplicationSettingsBase {
private static Dota2 defaultInstance = ((Dota2)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Dota2())));
public static Dota2 Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string GameDirectory {
get {
return ((string)(this["GameDirectory"]));
}
set {
this["GameDirectory"] = value;
}
}
}
}

View File

@ -1,17 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.Dota2" GeneratedClassName="Dota2">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
<Setting Name="GameDirectory" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
@ -9,7 +10,8 @@ namespace Artemis.Modules.Games.Dota2
{
public class Dota2Model : GameModel
{
public Dota2Model(MainManager mainManager): base(mainManager, new Dota2Settings(), new Dota2DataModel())
public Dota2Model(MainManager mainManager)
: base(mainManager, SettingsProvider.Load<Dota2Settings>(), new Dota2DataModel())
{
Name = "Dota2";
ProcessName = "dota2";

View File

@ -1,36 +1,9 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.Dota2
{
internal class Dota2Settings : GameSettings
{
public Dota2Settings()
{
Load();
}
public string GameDirectory { get; set; }
public sealed override void Load()
{
Enabled = Dota2.Default.Enabled;
GameDirectory = Dota2.Default.GameDirectory;
}
public sealed override void Save()
{
Dota2.Default.Enabled = Enabled;
Dota2.Default.LastProfile = LastProfile;
Dota2.Default.GameDirectory = GameDirectory;
Dota2.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
GameDirectory = string.Empty;
}
}
}

View File

@ -10,7 +10,8 @@ namespace Artemis.Modules.Games.Dota2
{
public sealed class Dota2ViewModel : GameViewModel
{
public Dota2ViewModel(MainManager main, IProfileEditorVmFactory pFactory, Dota2Model model) : base(main, model, pFactory)
public Dota2ViewModel(MainManager main, IProfileEditorVmFactory pFactory, Dota2Model model)
: base(main, model, pFactory)
{
DisplayName = "Dota 2";
@ -22,7 +23,7 @@ namespace Artemis.Modules.Games.Dota2
{
var gameSettings = (Dota2Settings) GameSettings;
// If already propertly set up, don't do anything
if (gameSettings.GameDirectory != null && File.Exists(gameSettings.GameDirectory + "csgo.exe") &&
if ((gameSettings.GameDirectory != null) && File.Exists(gameSettings.GameDirectory + "csgo.exe") &&
File.Exists(gameSettings.GameDirectory + "/csgo/cfg/gamestate_integration_artemis.cfg"))
return;

View File

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.EurotruckSimulator2 {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class EurotruckSimulator2 : global::System.Configuration.ApplicationSettingsBase {
private static EurotruckSimulator2 defaultInstance = ((EurotruckSimulator2)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new EurotruckSimulator2())));
public static EurotruckSimulator2 Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string GameDirectory {
get {
return ((string)(this["GameDirectory"]));
}
set {
this["GameDirectory"] = value;
}
}
}
}

View File

@ -1,15 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Artemis.Modules.Games.EurotruckSimulator2" GeneratedClassName="EurotruckSimulator2">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
<Setting Name="GameDirectory" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
@ -10,7 +11,8 @@ namespace Artemis.Modules.Games.EurotruckSimulator2
public class EurotruckSimulator2Model : GameModel
{
public EurotruckSimulator2Model(MainManager mainManager)
: base(mainManager, new EurotruckSimulator2Settings(), new EurotruckSimulator2DataModel())
: base(mainManager, SettingsProvider.Load<EurotruckSimulator2Settings>(), new EurotruckSimulator2DataModel()
)
{
Name = "EurotruckSimulator2";
ProcessName = "eurotrucks2";

View File

@ -1,35 +1,9 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.EurotruckSimulator2
{
public class EurotruckSimulator2Settings : GameSettings
{
public EurotruckSimulator2Settings()
{
Load();
}
public string GameDirectory { get; set; }
public sealed override void Load()
{
Enabled = EurotruckSimulator2.Default.Enabled;
LastProfile = EurotruckSimulator2.Default.LastProfile;
GameDirectory = EurotruckSimulator2.Default.GameDirectory;
}
public sealed override void Save()
{
EurotruckSimulator2.Default.Enabled = Enabled;
EurotruckSimulator2.Default.GameDirectory = GameDirectory;
EurotruckSimulator2.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
GameDirectory = string.Empty;
}
}
}

View File

@ -9,7 +9,8 @@ namespace Artemis.Modules.Games.EurotruckSimulator2
{
public sealed class EurotruckSimulator2ViewModel : GameViewModel
{
public EurotruckSimulator2ViewModel(MainManager main, IProfileEditorVmFactory pFactory, EurotruckSimulator2Model model): base(main, model, pFactory)
public EurotruckSimulator2ViewModel(MainManager main, IProfileEditorVmFactory pFactory,
EurotruckSimulator2Model model) : base(main, model, pFactory)
{
DisplayName = "ETS 2";

View File

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.Overwatch {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Overwatch : global::System.Configuration.ApplicationSettingsBase {
private static Overwatch defaultInstance = ((Overwatch)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Overwatch())));
public static Overwatch Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string GameDirectory {
get {
return ((string)(this["GameDirectory"]));
}
set {
this["GameDirectory"] = value;
}
}
}
}

View File

@ -1,17 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.Overwatch" GeneratedClassName="Overwatch">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
<Setting Name="GameDirectory" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@ -2,10 +2,12 @@
using System.Collections.Generic;
using System.Linq;
using System.Windows.Media;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Models.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Settings;
using Artemis.Utilities;
namespace Artemis.Modules.Games.Overwatch
@ -21,7 +23,8 @@ namespace Artemis.Modules.Games.Overwatch
private DateTime _ultimateReady;
private DateTime _ultimateUsed;
public OverwatchModel(MainManager mainManager): base(mainManager, new OverwatchSettings(), new OverwatchDataModel())
public OverwatchModel(MainManager mainManager)
: base(mainManager, SettingsProvider.Load<OverwatchSettings>(), new OverwatchDataModel())
{
Name = "Overwatch";
ProcessName = "Overwatch";
@ -133,10 +136,10 @@ namespace Artemis.Modules.Games.Overwatch
// Ult can't possibly be ready within 2 seconds of changing, this avoids false positives.
// Filtering on ultReady and ultUsed removes false positives from the native ultimate effects
// The control keys don't show during character select, so don't continue on those either.
if (_characterChange.AddSeconds(2) >= DateTime.Now ||
_ultimateUsed.AddSeconds(2) >= DateTime.Now ||
_ultimateReady.AddSeconds(2) >= DateTime.Now ||
_stickyStatus.Value == OverwatchStatus.InCharacterSelect)
if ((_characterChange.AddSeconds(2) >= DateTime.Now) ||
(_ultimateUsed.AddSeconds(2) >= DateTime.Now) ||
(_ultimateReady.AddSeconds(2) >= DateTime.Now) ||
(_stickyStatus.Value == OverwatchStatus.InCharacterSelect))
return;
ParseSpecialKeys(gameDataModel, characterMatch, colors);
@ -148,7 +151,7 @@ namespace Artemis.Modules.Games.Overwatch
if (string.IsNullOrEmpty(arrayString))
return null;
var intermediateArray = arrayString.Split('|');
if (intermediateArray[0] == "1" || intermediateArray.Length < 2)
if ((intermediateArray[0] == "1") || (intermediateArray.Length < 2))
return null;
var array = intermediateArray[1].Substring(1).Split(' ');
if (!array.Any())
@ -164,7 +167,7 @@ namespace Artemis.Modules.Games.Overwatch
// Can't parse to a byte directly since it may contain values >254
var parts = intermediate.Split(',').Select(int.Parse).ToArray();
if (parts[0] >= 5 && parts[1] >= 21)
if ((parts[0] >= 5) && (parts[1] >= 21))
continue;
colors[parts[0], parts[1]] = Color.FromRgb((byte) parts[2], (byte) parts[3], (byte) parts[4]);
@ -218,13 +221,13 @@ namespace Artemis.Modules.Games.Overwatch
private bool ControlsShown(Color[,] colors)
{
var keyColor = Color.FromRgb(222, 153, 0);
return colors[2, 3] == keyColor || colors[3, 2] == keyColor ||
colors[3, 3] == keyColor || colors[3, 4] == keyColor;
return (colors[2, 3] == keyColor) || (colors[3, 2] == keyColor) ||
(colors[3, 3] == keyColor) || (colors[3, 4] == keyColor);
}
private void ParseSpecialKeys(OverwatchDataModel gameDataModel, CharacterColor? characterMatch, Color[,] colors)
{
if (characterMatch == null || characterMatch.Value.Character == OverwatchCharacter.None)
if ((characterMatch == null) || (characterMatch.Value.Character == OverwatchCharacter.None))
return;
// Ultimate is ready when Q is blinking

View File

@ -1,36 +1,9 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.Overwatch
{
public class OverwatchSettings : GameSettings
{
public OverwatchSettings()
{
Load();
}
public string GameDirectory { get; set; }
public sealed override void Load()
{
Enabled = Overwatch.Default.Enabled;
LastProfile = Overwatch.Default.LastProfile;
GameDirectory = Overwatch.Default.GameDirectory;
}
public sealed override void Save()
{
Overwatch.Default.Enabled = Enabled;
Overwatch.Default.LastProfile = LastProfile;
Overwatch.Default.GameDirectory = GameDirectory;
Overwatch.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
GameDirectory = string.Empty;
}
}
}

View File

@ -22,7 +22,7 @@ namespace Artemis.Modules.Games.Overwatch
{
var gameSettings = (OverwatchSettings) GameSettings;
// If already propertly set up, don't do anything
if (gameSettings.GameDirectory != null && File.Exists(gameSettings.GameDirectory + "Overwatch.exe") &&
if ((gameSettings.GameDirectory != null) && File.Exists(gameSettings.GameDirectory + "Overwatch.exe") &&
File.Exists(gameSettings.GameDirectory + "RzChromaSDK64.dll"))
return;

View File

@ -1,50 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.RocketLeague {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class RocketLeague : global::System.Configuration.ApplicationSettingsBase {
private static RocketLeague defaultInstance = ((RocketLeague)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new RocketLeague())));
public static RocketLeague Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
}
}

View File

@ -1,14 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.RocketLeague" GeneratedClassName="RocketLeague">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,12 +1,12 @@
using System.Collections.Generic;
using System.Linq;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
using Artemis.Settings;
using Artemis.Utilities;
using Artemis.Utilities.Memory;
using Newtonsoft.Json;
namespace Artemis.Modules.Games.RocketLeague
{
@ -16,7 +16,7 @@ namespace Artemis.Modules.Games.RocketLeague
private GamePointersCollection _pointer;
public RocketLeagueModel(MainManager mainManager)
: base(mainManager, new RocketLeagueSettings(), new RocketLeagueDataModel())
: base(mainManager, SettingsProvider.Load<RocketLeagueSettings>(), new RocketLeagueDataModel())
{
Name = "RocketLeague";
ProcessName = "RocketLeague";
@ -25,20 +25,20 @@ namespace Artemis.Modules.Games.RocketLeague
Initialized = false;
// Generate a new offset when the game is updated
//var offset = new GamePointersCollection
//{
// Game = "RocketLeague",
// GameVersion = "1.21",
// GameAddresses = new List<GamePointer>
// {
// new GamePointer
// {
// Description = "Boost",
// BasePointer = new IntPtr(0x016AD528),
// Offsets = new[] {0x304, 0x8, 0x50, 0x720, 0x224}
// }
// }
//};
// var offset = new GamePointersCollection
// {
// Game = "RocketLeague",
// GameVersion = "1.21",
// GameAddresses = new List<GamePointer>
// {
// new GamePointer
// {
// Description = "Boost",
// BasePointer = new IntPtr(0x016AD528),
// Offsets = new[] {0x304, 0x8, 0x50, 0x720, 0x224}
// }
// }
// };
//var res = JsonConvert.SerializeObject(offset, Formatting.Indented);
}
@ -55,7 +55,7 @@ namespace Artemis.Modules.Games.RocketLeague
Initialized = false;
Updater.GetPointers();
_pointer = JsonConvert.DeserializeObject<GamePointersCollection>(Offsets.Default.RocketLeague);
_pointer = SettingsProvider.Load<OffsetSettings>().RocketLeague;
var tempProcess = MemoryHelpers.GetProcessIfRunning(ProcessName);
if (tempProcess == null)
@ -68,7 +68,7 @@ namespace Artemis.Modules.Games.RocketLeague
public override void Update()
{
if (Profile == null || DataModel == null || _memory == null)
if ((Profile == null) || (DataModel == null) || (_memory == null))
return;
var offsets = _pointer.GameAddresses.First(ga => ga.Description == "Boost").ToString();

View File

@ -1,31 +1,8 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.RocketLeague
{
public class RocketLeagueSettings : GameSettings
{
public RocketLeagueSettings()
{
Load();
}
public sealed override void Load()
{
Enabled = RocketLeague.Default.Enabled;
LastProfile = RocketLeague.Default.LastProfile;
}
public sealed override void Save()
{
RocketLeague.Default.Enabled = Enabled;
RocketLeague.Default.LastProfile = LastProfile;
RocketLeague.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
}
}
}

View File

@ -1,10 +1,9 @@
using Artemis.InjectionFactories;
using Artemis.DAL;
using Artemis.InjectionFactories;
using Artemis.Managers;
using Artemis.Settings;
using Artemis.Utilities;
using Artemis.Utilities.Memory;
using Artemis.ViewModels.Abstract;
using Newtonsoft.Json;
namespace Artemis.Modules.Games.RocketLeague
{
@ -12,7 +11,8 @@ namespace Artemis.Modules.Games.RocketLeague
{
private string _versionText;
public RocketLeagueViewModel(MainManager main, IProfileEditorVmFactory pFactory, RocketLeagueModel model) : base(main, model, pFactory)
public RocketLeagueViewModel(MainManager main, IProfileEditorVmFactory pFactory, RocketLeagueModel model)
: base(main, model, pFactory)
{
DisplayName = "Rocket League";
SetVersionText();
@ -33,7 +33,7 @@ namespace Artemis.Modules.Games.RocketLeague
private void SetVersionText()
{
if (!DAL.SettingsProvider.Load<GeneralSettings>("GeneralSettings").EnablePointersUpdate)
if (!SettingsProvider.Load<GeneralSettings>().EnablePointersUpdate)
{
VersionText = "Note: You disabled pointer updates, this could result in the " +
"Rocket League effect not working after a game update.";
@ -41,9 +41,7 @@ namespace Artemis.Modules.Games.RocketLeague
}
Updater.GetPointers();
var version = JsonConvert
.DeserializeObject<GamePointersCollection>(Offsets.Default.RocketLeague)
.GameVersion;
var version = SettingsProvider.Load<OffsetSettings>().RocketLeague.GameVersion;
VersionText = $"Note: Requires patch {version}. When a new patch is released Artemis downloads " +
"new pointers for the latest version (unless disabled in settings).";
}

View File

@ -1,50 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.TheDivision {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class TheDivision : global::System.Configuration.ApplicationSettingsBase {
private static TheDivision defaultInstance = ((TheDivision)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new TheDivision())));
public static TheDivision Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
}
}

View File

@ -1,14 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.TheDivision" GeneratedClassName="TheDivision">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
@ -15,7 +16,7 @@ namespace Artemis.Modules.Games.TheDivision
private StickyValue<bool> _stickyHp;
public TheDivisionModel(MainManager mainManager)
: base(mainManager, new TheDivisionSettings(), new TheDivisionDataModel())
: base(mainManager, SettingsProvider.Load<TheDivisionSettings>(), new TheDivisionDataModel())
{
Name = "TheDivision";
ProcessName = "TheDivision";
@ -81,7 +82,7 @@ namespace Artemis.Modules.Games.TheDivision
var bPer = parts[4];
// F1 to F4 indicate the player and his party. Blinks red on damage taken
if (keyCode >= 59 && keyCode <= 62)
if ((keyCode >= 59) && (keyCode <= 62))
{
var playerId = keyCode - 58;
@ -105,15 +106,15 @@ namespace Artemis.Modules.Games.TheDivision
// R blinks white when low on ammo
else if (keyCode == 19)
{
_stickyAmmo.Value = rPer == 100 && gPer > 1 && bPer > 1;
_stickyAmmo.Value = (rPer == 100) && (gPer > 1) && (bPer > 1);
gameDataModel.LowAmmo = _stickyAmmo.Value;
}
// G turns white when holding a grenade, turns off when out of grenades
else if (keyCode == 34)
{
if (rPer == 100 && gPer < 10 && bPer < 10)
if ((rPer == 100) && (gPer < 10) && (bPer < 10))
gameDataModel.GrenadeState = GrenadeState.HasGrenade;
else if (rPer == 100 && gPer > 10 && bPer > 10)
else if ((rPer == 100) && (gPer > 10) && (bPer > 10))
gameDataModel.GrenadeState = GrenadeState.GrenadeEquipped;
else
gameDataModel.GrenadeState = GrenadeState.HasNoGrenade;
@ -121,7 +122,7 @@ namespace Artemis.Modules.Games.TheDivision
// V blinks on low HP
else if (keyCode == 47)
{
_stickyHp.Value = rPer == 100 && gPer > 1 && bPer > 1;
_stickyHp.Value = (rPer == 100) && (gPer > 1) && (bPer > 1);
gameDataModel.LowHp = _stickyHp.Value;
}
}

View File

@ -1,31 +1,8 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.TheDivision
{
public class TheDivisionSettings : GameSettings
{
public TheDivisionSettings()
{
Load();
}
public sealed override void Load()
{
Enabled = TheDivision.Default.Enabled;
LastProfile = TheDivision.Default.LastProfile;
}
public sealed override void Save()
{
TheDivision.Default.Enabled = Enabled;
TheDivision.Default.LastProfile = LastProfile;
TheDivision.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
}
}
}

View File

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.UnrealTournament {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class UnrealTournament : global::System.Configuration.ApplicationSettingsBase {
private static UnrealTournament defaultInstance = ((UnrealTournament)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new UnrealTournament())));
public static UnrealTournament Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string GameDirectory {
get {
return ((string)(this["GameDirectory"]));
}
set {
this["GameDirectory"] = value;
}
}
}
}

View File

@ -1,17 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.UnrealTournament" GeneratedClassName="UnrealTournament">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
<Setting Name="GameDirectory" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@ -32,17 +32,25 @@ namespace Artemis.Modules.Games.UnrealTournament
public string PlayerName { get; set; }
public string UniqueId { get; set; }
public int Score { get; set; }
[JsonProperty("Team Num")]
public int TeamNum { get; set; }
public int RankCheck { get; set; }
[JsonProperty("Duel Rank")]
public int DuelRank { get; set; }
public int No_of_Duel_Played { get; set; }
[JsonProperty("CTF Rank")]
public int CTFRank { get; set; }
public int No_CTF_MatchesPlayed { get; set; }
[JsonProperty("TDM Rank")]
public int TDMRank { get; set; }
public int No_TDM_MatchesPlayed { get; set; }
public int DMRank { get; set; }
public int No_DM_Matches_Played { get; set; }
@ -100,5 +108,4 @@ namespace Artemis.Modules.Games.UnrealTournament
public int RespawnWaitTime { get; set; }
public int ForceRespawnTime { get; set; }
}
}

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
@ -9,8 +10,8 @@ namespace Artemis.Modules.Games.UnrealTournament
{
public class UnrealTournamentModel : GameModel
{
public UnrealTournamentModel(MainManager mainManager, UnrealTournamentSettings settings)
: base(mainManager, settings, new UnrealTournamentDataModel())
public UnrealTournamentModel(MainManager mainManager)
: base(mainManager, SettingsProvider.Load<UnrealTournamentSettings>(), new UnrealTournamentDataModel())
{
Name = "UnrealTournament";
ProcessName = "UE4-Win64-Shipping";

View File

@ -1,36 +1,9 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.UnrealTournament
{
public class UnrealTournamentSettings : GameSettings
{
public UnrealTournamentSettings()
{
Load();
}
public string GameDirectory { get; set; }
public sealed override void Load()
{
Enabled = UnrealTournament.Default.Enabled;
LastProfile = UnrealTournament.Default.LastProfile;
GameDirectory = UnrealTournament.Default.GameDirectory;
}
public sealed override void Save()
{
UnrealTournament.Default.Enabled = Enabled;
UnrealTournament.Default.LastProfile = LastProfile;
UnrealTournament.Default.GameDirectory = GameDirectory;
UnrealTournament.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
GameDirectory = string.Empty;
}
}
}

View File

@ -32,7 +32,8 @@ namespace Artemis.Modules.Games.UnrealTournament
{
var gameSettings = (UnrealTournamentSettings) GameSettings;
// If already propertly set up, don't do anything
if (gameSettings.GameDirectory != null && File.Exists(gameSettings.GameDirectory + "UE4-Win64-Shipping.exe"))
if ((gameSettings.GameDirectory != null) &&
File.Exists(gameSettings.GameDirectory + "UE4-Win64-Shipping.exe"))
return;
// Attempt to read the file
@ -119,7 +120,8 @@ namespace Artemis.Modules.Games.UnrealTournament
{
var gif = Resources.redeemer;
ProfileProvider.InsertGif(ProfileProvider.GetAll()
.Where(p => p.GameName == "UnrealTournament" && p.Name == "Default"), "Redeemer GIF", gif, "redeemer");
.Where(p => (p.GameName == "UnrealTournament") && (p.Name == "Default")), "Redeemer GIF", gif,
"redeemer");
}
}
}

View File

@ -1,50 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.Witcher3 {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Witcher3 : global::System.Configuration.ApplicationSettingsBase {
private static Witcher3 defaultInstance = ((Witcher3)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Witcher3())));
public static Witcher3 Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
}
}

View File

@ -1,14 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.Witcher3" GeneratedClassName="Witcher3">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -4,6 +4,7 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Artemis.DAL;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
@ -17,7 +18,7 @@ namespace Artemis.Modules.Games.Witcher3
private string _witcherSettings;
public Witcher3Model(MainManager mainManager)
: base(mainManager, new Witcher3Settings(), new Witcher3DataModel())
: base(mainManager, SettingsProvider.Load<Witcher3Settings>(), new Witcher3DataModel())
{
Name = "Witcher3";
ProcessName = "witcher3";

View File

@ -1,31 +1,10 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.Witcher3
{
public class Witcher3Settings : GameSettings
{
public Witcher3Settings()
{
Load();
}
public sealed override void Load()
{
Enabled = Witcher3.Default.Enabled;
LastProfile = Witcher3.Default.LastProfile;
}
public sealed override void Save()
{
Witcher3.Default.Enabled = Enabled;
Witcher3.Default.LastProfile = LastProfile;
Witcher3.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
}
// TODO: Change this to work the same as UT
public string GameDirectory { get; set; }
}
}

View File

@ -60,8 +60,6 @@ namespace Artemis.Modules.Games.Witcher3
Directory.GetFiles(dialog.SelectedPath + @"\mods", "playerWitcher.ws", SearchOption.AllDirectories)
.FirstOrDefault();
if (file != null)
{
// Don't trip over our own mod
if (!file.Contains("modArtemis"))
{
var viewHelp = await
@ -82,7 +80,6 @@ namespace Artemis.Modules.Games.Witcher3
new ProcessStartInfo("https://github.com/SpoinkyNL/Artemis/wiki/The-Witcher-3"));
return;
}
}
}
archive.ExtractToDirectory(dialog.SelectedPath, true);

View File

@ -1,50 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.WorldofWarcraft {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class WoW : global::System.Configuration.ApplicationSettingsBase {
private static WoW defaultInstance = ((WoW)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new WoW())));
public static WoW Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
}
}

View File

@ -1,14 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Modules.Games.WoW" GeneratedClassName="WoW">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -10,7 +10,7 @@
// {
// private Memory _memory;
//
// public WoWModel(MainManager mainManager): base(mainManager, new WoWSettings(), new WoWDataModel())
// public WoWModel(MainManager mainManager): base(mainManager, SettingsProvider.Load<WoWSettings>(), new WoWDataModel())
// {
// Name = "WoW";
// ProcessName = "Wow-64";
@ -50,4 +50,5 @@
// return Profile.GetRenderLayers(DataModel, keyboardOnly);
// }
// }
//}
//}

View File

@ -1,31 +1,11 @@
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Games.WorldofWarcraft
{
public class WoWSettings : GameSettings
{
public WoWSettings()
private WoWSettings()
{
Load();
}
public sealed override void Load()
{
Enabled = WoW.Default.Enabled;
LastProfile = WoW.Default.LastProfile;
}
public sealed override void Save()
{
WoW.Default.Enabled = Enabled;
WoW.Default.LastProfile = LastProfile;
WoW.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
}
}
}

View File

@ -11,4 +11,5 @@
// DisplayName = "WoW";
// }
// }
//}
//}

View File

@ -1,39 +1,11 @@
using System.Windows.Media;
using Artemis.Models;
using Artemis.Settings;
namespace Artemis.Modules.Overlays.VolumeDisplay
{
public class VolumeDisplaySettings : OverlaySettings
{
public VolumeDisplaySettings()
{
Load();
}
public Color MainColor { get; set; }
public Color SecondaryColor { get; set; }
public sealed override void Load()
{
Enabled = VolumeDisplay.Default.Enabled;
MainColor = VolumeDisplay.Default.MainColor;
SecondaryColor = VolumeDisplay.Default.SecondaryColor;
}
public sealed override void Save()
{
VolumeDisplay.Default.Enabled = Enabled;
VolumeDisplay.Default.MainColor = MainColor;
VolumeDisplay.Default.SecondaryColor = SecondaryColor;
VolumeDisplay.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
MainColor = Color.FromArgb(255, 38, 246, 0);
SecondaryColor = Color.FromArgb(255, 255, 41, 0);
}
}
}

View File

@ -0,0 +1,24 @@
using Artemis.DAL;
using Newtonsoft.Json;
namespace Artemis.Settings
{
public class EffectSettings : IArtemisSettings
{
public void Save()
{
SettingsProvider.Save(this);
}
public void Reset(bool save = false)
{
JsonConvert.PopulateObject("{}", this, new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Reuse
});
if (save)
SettingsProvider.Save(this);
}
}
}

View File

@ -0,0 +1,16 @@
using System.ComponentModel;
using Newtonsoft.Json;
namespace Artemis.Settings
{
public abstract class GameSettings : EffectSettings
{
[DefaultValue(true)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public bool Enabled { get; set; }
[DefaultValue("Default")]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public string LastProfile { get; set; }
}
}

View File

@ -6,6 +6,7 @@ using System.Runtime.InteropServices.ComTypes;
using System.Windows;
using Artemis.DAL;
using Artemis.Utilities;
using Caliburn.Micro;
using MahApps.Metro;
using Newtonsoft.Json;
@ -16,7 +17,6 @@ namespace Artemis.Settings
public GeneralSettings()
{
ThemeManager.AddAccent("CorsairYellow", new Uri("pack://application:,,,/Styles/Accents/CorsairYellow.xaml"));
ApplyTheme();
}
[DefaultValue("WindowsProfile")]
@ -59,8 +59,6 @@ namespace Artemis.Settings
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public string LogLevel { get; set; }
public string Name { get; } = "GeneralSettings";
public void Save()
{
SettingsProvider.Save(this);
@ -70,6 +68,17 @@ namespace Artemis.Settings
Logging.SetupLogging(LogLevel);
}
public void Reset(bool save = false)
{
JsonConvert.PopulateObject("{}", this, new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Reuse
});
if (save)
SettingsProvider.Save(this);
}
private void ApplyGamestatePort()
{
// TODO: Restart Gamestate server with new port
@ -90,27 +99,30 @@ namespace Artemis.Settings
File.Delete(startupFolder + @"\Artemis.lnk");
}
private void ApplyTheme()
public void ApplyTheme()
{
switch (Theme)
Execute.OnUIThread(delegate
{
case "Light":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("Teal"),
ThemeManager.GetAppTheme("BaseLight"));
break;
case "Dark":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("Teal"),
ThemeManager.GetAppTheme("BaseDark"));
break;
case "Corsair Light":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CorsairYellow"),
ThemeManager.GetAppTheme("BaseLight"));
break;
case "Corsair Dark":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CorsairYellow"),
ThemeManager.GetAppTheme("BaseDark"));
break;
}
switch (Theme)
{
case "Light":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("Teal"),
ThemeManager.GetAppTheme("BaseLight"));
break;
case "Dark":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("Teal"),
ThemeManager.GetAppTheme("BaseDark"));
break;
case "Corsair Light":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CorsairYellow"),
ThemeManager.GetAppTheme("BaseLight"));
break;
case "Corsair Dark":
ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CorsairYellow"),
ThemeManager.GetAppTheme("BaseDark"));
break;
}
});
}
}
}

View File

@ -2,7 +2,16 @@
{
public interface IArtemisSettings
{
string Name { get; }
/// <summary>
/// Utility method for quickly saving this instance of settings.
/// Some settings might wrap logic around this
/// </summary>
void Save();
/// <summary>
/// Resets this settings instance to its default values
/// </summary>
/// <param name="save">Save the settings after resetting them</param>
void Reset(bool save = false);
}
}

View File

@ -0,0 +1,27 @@
using Artemis.DAL;
using Artemis.Utilities.Memory;
using Newtonsoft.Json;
namespace Artemis.Settings
{
public class OffsetSettings : IArtemisSettings
{
public GamePointersCollection RocketLeague { get; set; }
public void Save()
{
SettingsProvider.Save(this);
}
public void Reset(bool save = false)
{
JsonConvert.PopulateObject("{}", this, new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Reuse
});
if (save)
SettingsProvider.Save(this);
}
}
}

View File

@ -1,52 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Settings {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Offsets : global::System.Configuration.ApplicationSettingsBase {
private static Offsets defaultInstance = ((Offsets)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Offsets())));
public static Offsets Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("{\"Game\":\"RocketLeague\",\"GameVersion\":\"1.10\",\"GameAddresses\":[{\"Description\":\"Boos" +
"t\",\"BasePointer\":{\"value\":21998084},\"Offsets\":[88,1452,1780,540]}]}")]
public string RocketLeague {
get {
return ((string)(this["RocketLeague"]));
}
set {
this["RocketLeague"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("{\"Game\":\"Witcher3\",\"GameVersion\":\"1.11\",\"GameAddresses\":[{\"Description\":\"Sign\",\"B" +
"asePointer\":{\"value\":42942304},\"Offsets\":[40,16,32,3008]}]}")]
public string Witcher3 {
get {
return ((string)(this["Witcher3"]));
}
set {
this["Witcher3"] = value;
}
}
}
}

View File

@ -1,14 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"
GeneratedClassNamespace="Artemis.Settings" GeneratedClassName="Offsets">
<Profiles />
<Settings>
<Setting Name="RocketLeague" Type="System.String" Scope="User">
<Value Profile="(Default)">{"Game":"RocketLeague","GameVersion":"1.10","GameAddresses":[{"Description":"Boost","BasePointer":{"value":21998084},"Offsets":[88,1452,1780,540]}]}</Value>
</Setting>
<Setting Name="Witcher3" Type="System.String" Scope="User">
<Value Profile="(Default)">{"Game":"Witcher3","GameVersion":"1.11","GameAddresses":[{"Description":"Sign","BasePointer":{"value":42942304},"Offsets":[40,16,32,3008]}]}</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -0,0 +1,12 @@
using System.ComponentModel;
using Newtonsoft.Json;
namespace Artemis.Settings
{
public class OverlaySettings : EffectSettings
{
[DefaultValue(true)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public bool Enabled { get; set; }
}
}

View File

@ -2,9 +2,10 @@
using System.IO;
using System.Net;
using System.Threading;
using System.Windows.Forms;
using Artemis.DAL;
using Artemis.Settings;
using Newtonsoft.Json;
using Ninject.Extensions.Logging;
namespace Artemis.Utilities.GameState
{
@ -17,12 +18,15 @@ namespace Artemis.Utilities.GameState
public delegate void GameDataReceivedEventHandler(
object sender, GameDataReceivedEventArgs gameDataReceivedEventArgs);
private readonly ILogger _logger;
private readonly AutoResetEvent _waitForConnection = new AutoResetEvent(false);
private HttpListener _listener;
public GameStateWebServer()
public GameStateWebServer(ILogger logger)
{
_logger = logger;
Start();
}
@ -36,7 +40,7 @@ namespace Artemis.Utilities.GameState
if (Running)
return;
Port = DAL.SettingsProvider.Load<GeneralSettings>("GeneralSettings").GamestatePort;
Port = SettingsProvider.Load<GeneralSettings>().GamestatePort;
_listener = new HttpListener();
_listener.Prefixes.Add($"http://localhost:{Port}/");
@ -45,10 +49,9 @@ namespace Artemis.Utilities.GameState
{
_listener.Start();
}
catch (HttpListenerException)
catch (HttpListenerException e)
{
MessageBox.Show("Couldn't start the webserver. CS:GO/Dota2 effects won't work :c \n\n" +
"Try changing the port in Settings and restart Artemis.");
_logger.Error(e, "Couldn't start the webserver on port {0}.", Port);
Running = false;
return;
}

View File

@ -1,13 +1,12 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using Artemis.DAL;
using Artemis.Settings;
using Artemis.Utilities.Memory;
using Newtonsoft.Json;
using Squirrel;
using SettingsProvider = Artemis.DAL.SettingsProvider;
namespace Artemis.Utilities
{
@ -16,7 +15,7 @@ namespace Artemis.Utilities
public static async void UpdateApp()
{
// Only update if the user allows it
if (!SettingsProvider.Load<GeneralSettings>("GeneralSettings").AutoUpdate)
if (!SettingsProvider.Load<GeneralSettings>().AutoUpdate)
return;
// TODO: Remove prerelease before releasing
@ -48,7 +47,7 @@ namespace Artemis.Utilities
private static void AppUninstall(IUpdateManager mgr)
{
// Use GeneralSettings to get rid of the autorun shortcut
var fakeSettings = new GeneralSettings { Autorun = false };
var fakeSettings = new GeneralSettings {Autorun = false};
fakeSettings.ApplyAutorun();
mgr.RemoveShortcutForThisExe();
@ -56,32 +55,60 @@ namespace Artemis.Utilities
public static void GetPointers()
{
if (!DAL.SettingsProvider.Load<GeneralSettings>("GeneralSettings").EnablePointersUpdate)
if (!SettingsProvider.Load<GeneralSettings>().EnablePointersUpdate)
{
LoadNullDefaults();
return;
}
try
{
var jsonClient = new WebClient();
var offsetSettings = SettingsProvider.Load<OffsetSettings>();
// Random number to get around cache issues
var rand = new Random(DateTime.Now.Millisecond);
var json = jsonClient.DownloadString(
"https://raw.githubusercontent.com/SpoinkyNL/Artemis/master/pointers.json?random=" + rand.Next());
var json = jsonClient.DownloadString("https://raw.githubusercontent.com/SpoinkyNL/" +
"Artemis/master/pointers.json?random=" + rand.Next());
// Get a list of pointers
var pointers = JsonConvert.DeserializeObject<List<GamePointersCollection>>(json);
// Assign each pointer to the settings file
var rlPointers = JsonConvert.SerializeObject(pointers.FirstOrDefault(p => p.Game == "RocketLeague"));
if (rlPointers != null)
{
Offsets.Default.RocketLeague = rlPointers;
Offsets.Default.Save();
}
if (pointers.FirstOrDefault(p => p.Game == "RocketLeague") != null)
offsetSettings.RocketLeague = pointers.FirstOrDefault(p => p.Game == "RocketLeague");
offsetSettings.Save();
}
catch (Exception)
{
// ignored
}
}
/// <summary>
/// JSON default value handling can only go so far, so the update will take care of defaults
/// on the offsets if they are null
/// </summary>
private static void LoadNullDefaults()
{
var offsetSettings = SettingsProvider.Load<OffsetSettings>();
if (offsetSettings.RocketLeague == null)
offsetSettings.RocketLeague = new GamePointersCollection
{
Game = "RocketLeague",
GameVersion = "1.21",
GameAddresses = new List<GamePointer>
{
new GamePointer
{
Description = "Boost",
BasePointer = new IntPtr(0x016AD528),
Offsets = new[] {0x304, 0x8, 0x50, 0x720, 0x224}
}
}
};
offsetSettings.Save();
}
}
}

View File

@ -1,8 +1,10 @@
using System;
using Artemis.DAL;
using Artemis.Events;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Services;
using Artemis.Settings;
using Caliburn.Micro;
using Ninject;
@ -90,7 +92,7 @@ namespace Artemis.ViewModels.Abstract
if (!resetConfirm.Value)
return;
EffectSettings.ToDefault();
EffectSettings.Reset(true);
NotifyOfPropertyChange(() => EffectSettings);
SaveSettings();

View File

@ -4,6 +4,7 @@ using Artemis.Managers;
using Artemis.Models;
using Artemis.Modules.Effects.ProfilePreview;
using Artemis.Services;
using Artemis.Settings;
using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
using Ninject;
@ -80,7 +81,7 @@ namespace Artemis.ViewModels.Abstract
if (!resetConfirm.Value)
return;
GameSettings.ToDefault();
GameSettings.Reset(true);
NotifyOfPropertyChange(() => GameSettings);
SaveSettings();

View File

@ -1,6 +1,7 @@
using Artemis.Managers;
using Artemis.Models;
using Artemis.Services;
using Artemis.Settings;
using Caliburn.Micro;
using Ninject;
@ -53,7 +54,7 @@ namespace Artemis.ViewModels.Abstract
if (!resetConfirm.Value)
return;
OverlaySettings.ToDefault();
OverlaySettings.Reset(true);
NotifyOfPropertyChange(() => OverlaySettings);
OverlayModel.Enabled = OverlaySettings.Enabled;

View File

@ -32,7 +32,7 @@ namespace Artemis.ViewModels.Flyouts
MainManager = mainManager;
Header = "Settings";
Position = Position.Right;
GeneralSettings = SettingsProvider.Load<GeneralSettings>("GeneralSettings");
GeneralSettings = SettingsProvider.Load<GeneralSettings>();
LogLevels = new BindableCollection<string>();
LogLevels.AddRange(LogLevel.AllLoggingLevels.Select(l => l.Name));
@ -201,9 +201,7 @@ namespace Artemis.ViewModels.Flyouts
public void ResetSettings()
{
IArtemisSettings generalSettings = GeneralSettings;
SettingsProvider.SetToDefault(ref generalSettings);
GeneralSettings.Save();
GeneralSettings.Reset(true);
NotifyOfPropertyChange(() => GeneralSettings);
}

View File

@ -32,7 +32,7 @@ namespace Artemis.ViewModels
MainManager.EnableProgram();
MainManager.OnEnabledChangedEvent += MainManagerOnOnEnabledChangedEvent;
var generalSettings = SettingsProvider.Load<GeneralSettings>("GeneralSettings");
var generalSettings = SettingsProvider.Load<GeneralSettings>();
Enabled = !generalSettings.Suspended;
if (generalSettings.ShowOnStartup)
ShowWindow();
@ -116,6 +116,7 @@ namespace Artemis.ViewModels
NotifyOfPropertyChange(() => CanHideWindow);
ShowKeyboardDialog();
SettingsProvider.Load<GeneralSettings>().ApplyTheme();
CheckDuplicateInstances();
}
@ -132,7 +133,8 @@ namespace Artemis.ViewModels
DialogService.ShowMessageBox("Multiple instances found",
"It looks like there are multiple running instances of Artemis. " +
"This can cause issues. If so, please make sure Artemis isn't already running");
"This can cause issues, especially with CS:GO and Dota2. " +
"If so, please make sure Artemis isn't already running");
}
private async void ShowKeyboardDialog()