From 9a583764c5c833efa64b32ffb866afae1bd676ee Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Mon, 7 Mar 2016 17:39:38 +0100 Subject: [PATCH] Untracked files --- Artemis/Artemis/Models/GameSettings.cs | 7 + Artemis/Artemis/Resources/logo-disabled.ico | Bin 0 -> 370070 bytes Artemis/Artemis/Resources/logo.ico | Bin 0 -> 370070 bytes Artemis/Artemis/Services/DialogService.cs | 48 ++++++ .../Artemis/Services/MetroDialogService.cs | 143 ++++++++++++++++++ .../Artemis/Utilities/Memory/GamePointer.cs | 26 ++++ .../ViewModels/Abstract/GameViewModel.cs | 57 +++++++ 7 files changed, 281 insertions(+) create mode 100644 Artemis/Artemis/Models/GameSettings.cs create mode 100644 Artemis/Artemis/Resources/logo-disabled.ico create mode 100644 Artemis/Artemis/Resources/logo.ico create mode 100644 Artemis/Artemis/Services/DialogService.cs create mode 100644 Artemis/Artemis/Services/MetroDialogService.cs create mode 100644 Artemis/Artemis/Utilities/Memory/GamePointer.cs create mode 100644 Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs diff --git a/Artemis/Artemis/Models/GameSettings.cs b/Artemis/Artemis/Models/GameSettings.cs new file mode 100644 index 000000000..dcfe3527f --- /dev/null +++ b/Artemis/Artemis/Models/GameSettings.cs @@ -0,0 +1,7 @@ +namespace Artemis.Models +{ + public abstract class GameSettings : EffectSettings + { + public bool Enabled { get; set; } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Resources/logo-disabled.ico b/Artemis/Artemis/Resources/logo-disabled.ico new file mode 100644 index 0000000000000000000000000000000000000000..da8f0f275051e86cf97748115d277ffbc040d4cb GIT binary patch literal 370070 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 Xfa8GUfa8GUfa8GUfa5^zIq?4j#q(%5 literal 0 HcmV?d00001 diff --git a/Artemis/Artemis/Resources/logo.ico b/Artemis/Artemis/Resources/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..e3f35618e6e2b5dbf3a9a23a90dd9180e8283034 GIT binary patch literal 370070 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 N63`OR63BQ7{C^p=3t0dF literal 0 HcmV?d00001 diff --git a/Artemis/Artemis/Services/DialogService.cs b/Artemis/Artemis/Services/DialogService.cs new file mode 100644 index 000000000..b5a312a7d --- /dev/null +++ b/Artemis/Artemis/Services/DialogService.cs @@ -0,0 +1,48 @@ +//The MIT License(MIT) + +//Copyright(c) 2015 ihtfw + +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: + +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. + +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. + +using System; +using System.Threading.Tasks; + +namespace Artemis.Services +{ + public abstract class DialogService + { + public void ShowErrorMessageBox(Exception e) + { + ShowErrorMessageBox(e.Message); + } + + public void ShowErrorMessageBox(string message) + { + ShowMessageBox("Error", message); + } + + public abstract void ShowMessageBox(string title, string message); + + public abstract bool ShowOpenDialog(out string path, string defaultExt, string filter, string initialDir = null); + + public abstract Task ShowInputDialog(string title, string message); + + public abstract Task ShowQuestionMessageBox(string title, string message); + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Services/MetroDialogService.cs b/Artemis/Artemis/Services/MetroDialogService.cs new file mode 100644 index 000000000..e8ef0b398 --- /dev/null +++ b/Artemis/Artemis/Services/MetroDialogService.cs @@ -0,0 +1,143 @@ +//The MIT License(MIT) + +//Copyright(c) 2015 ihtfw + +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: + +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. + +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. + +using System.Linq; +using System.Threading.Tasks; +using System.Windows; +using Artemis.ViewModels; +using Caliburn.Micro; +using MahApps.Metro.Controls; +using MahApps.Metro.Controls.Dialogs; +using Microsoft.Win32; + +namespace Artemis.Services +{ + public class MetroDialogService : DialogService + { + private readonly ShellViewModel _shellViewModel; + + public MetroDialogService(ShellViewModel shellViewModel) + { + _shellViewModel = shellViewModel; + } + + private MetroWindow GetActiveWindow() + { + MetroWindow window = null; + + Execute.OnUIThread(() => + { + window = Application.Current.Windows.OfType().FirstOrDefault(w => w.IsActive); + if (window == null) + { + window = Application.Current.Windows.OfType().FirstOrDefault(); + } + }); + + return window; + } + + public override void ShowMessageBox(string title, string message) + { + if (_shellViewModel.IsActive == false) + return; + + Execute.OnUIThread(() => GetActiveWindow().ShowMessageAsync(title, message)); + } + + public override async Task ShowQuestionMessageBox(string title, string message) + { + if (_shellViewModel.IsActive == false) + return null; + + var metroDialogSettings = new MetroDialogSettings {AffirmativeButtonText = "Yes", NegativeButtonText = "No"}; + var result = + await + GetActiveWindow() + .ShowMessageAsync(title, message, MessageDialogStyle.AffirmativeAndNegative, metroDialogSettings); + switch (result) + { + case MessageDialogResult.Negative: + return false; + case MessageDialogResult.Affirmative: + return true; + default: + return null; + } + } + + public override Task ShowInputDialog(string title, string message) + { + if (_shellViewModel.IsActive == false) + return null; + + return GetActiveWindow().ShowInputAsync(title, message); + } + + public override bool ShowOpenDialog(out string path, string defaultExt, string filter, string initialDir = null) + { + if (_shellViewModel.IsActive == false) + { + path = null; + return false; + } + + bool? res = null; + string lPath = null; + + Execute.OnUIThread(() => + { + var ofd = new OpenFileDialog + { + DefaultExt = defaultExt, + Filter = filter + }; + + if (initialDir != null) + { + ofd.InitialDirectory = initialDir; + } + + if (Application.Current.MainWindow != null) + { + res = ofd.ShowDialog(Application.Current.MainWindow); + } + else + { + res = ofd.ShowDialog(); + } + if (res == true) + { + lPath = ofd.FileName; + } + else + { + res = false; + } + }); + + path = lPath; + + return res.Value; + } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Utilities/Memory/GamePointer.cs b/Artemis/Artemis/Utilities/Memory/GamePointer.cs new file mode 100644 index 000000000..856fc1d73 --- /dev/null +++ b/Artemis/Artemis/Utilities/Memory/GamePointer.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Artemis.Utilities.Memory +{ + 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")}"); + } + } + + public class GamePointersCollection + { + public string Game { get; set; } + public string GameVersion { get; set; } + public List GameAddresses { get; set; } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs b/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs new file mode 100644 index 000000000..857c35b46 --- /dev/null +++ b/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs @@ -0,0 +1,57 @@ +using Artemis.Managers; +using Artemis.Models; +using Caliburn.Micro; + +namespace Artemis.ViewModels.Abstract +{ + public abstract class GameViewModel : Screen + { + private GameSettings _gameSettings; + + public GameModel GameModel { get; set; } + public MainManager MainManager { get; set; } + + public GameSettings GameSettings + { + get { return _gameSettings; } + set + { + if (Equals(value, _gameSettings)) return; + _gameSettings = value; + NotifyOfPropertyChange(() => GameSettings); + } + } + + public bool GameEnabled => MainManager.EffectManager.ActiveEffect == GameModel; + + public void ToggleEffect() + { + GameModel.Enabled = GameSettings.Enabled; + } + + public void SaveSettings() + { + GameSettings?.Save(); + if (!GameEnabled) + return; + + // Restart the game if it's currently running to apply settings. + MainManager.EffectManager.ChangeEffect(GameModel, true); + } + + public async void ResetSettings() + { + var resetConfirm = await + MainManager.DialogService.ShowQuestionMessageBox("Reset effect settings", + "Are you sure you wish to reset this effect's settings? \nAny changes you made will be lost."); + + if (!resetConfirm.Value) + return; + + GameSettings.ToDefault(); + NotifyOfPropertyChange(() => GameSettings); + + SaveSettings(); + } + } +} \ No newline at end of file