From 74c616959492738213f79023c5bb2e97143a62b8 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 21 Oct 2017 03:35:00 +0200 Subject: [PATCH] fixed after HDT update --- Autosquelch/Autosquelch.csproj | 4 +++ Autosquelch/AutosquelchPlugin.cs | 5 ++-- Autosquelch/HueAndBrightness.cs | 44 ++++++++++++++++++++++++++++++++ Autosquelch/MouseHelpers.cs | 3 --- 4 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 Autosquelch/HueAndBrightness.cs diff --git a/Autosquelch/Autosquelch.csproj b/Autosquelch/Autosquelch.csproj index 25b4fc7..ed8848a 100644 --- a/Autosquelch/Autosquelch.csproj +++ b/Autosquelch/Autosquelch.csproj @@ -40,6 +40,9 @@ MinimumRecommendedRules.ruleset + + ..\..\..\..\AppData\Local\HearthstoneDeckTracker\app-1.5.1\HearthstoneDeckTracker.exe + @@ -54,6 +57,7 @@ + diff --git a/Autosquelch/AutosquelchPlugin.cs b/Autosquelch/AutosquelchPlugin.cs index cab8dfa..1765365 100644 --- a/Autosquelch/AutosquelchPlugin.cs +++ b/Autosquelch/AutosquelchPlugin.cs @@ -89,7 +89,6 @@ public void OnLoad() { Squelched = false; PluginRunning = true; - var d = Config.Instance.DeckExportDelay; GameEvents.OnGameStart.Add(() => { @@ -155,8 +154,8 @@ public async Task Squelch() await MouseHelpers.ClickOnPoint(hearthstoneWindow, opponentHeroPosition, false); - await Task.Delay(TimeSpan.FromMilliseconds(Config.Instance.DeckExportDelay * 4)); - var capture = await ScreenCapture.CaptureHearthstoneAsync(squelchBubblePosition, lockWidth, lockHeight, hearthstoneWindow); + await Task.Delay(TimeSpan.FromSeconds(0.3)); + var capture = await ScreenCapture.CaptureHearthstoneAsync(squelchBubblePosition, lockWidth, lockHeight, hearthstoneWindow); squelchBubbleVisible = HueAndBrightness.GetAverage(capture).Brightness > minBrightness; if (!squelchBubbleVisible) await Task.Delay(TimeSpan.FromSeconds(0.5)); diff --git a/Autosquelch/HueAndBrightness.cs b/Autosquelch/HueAndBrightness.cs new file mode 100644 index 0000000..6d9aeb8 --- /dev/null +++ b/Autosquelch/HueAndBrightness.cs @@ -0,0 +1,44 @@ +#region + +using System.Drawing; + +#endregion + +namespace Hearthstone_Deck_Tracker.Exporting +{ + public class HueAndBrightness + { + public HueAndBrightness(double hue, double brightness) + { + Hue = hue; + Brightness = brightness; + } + + public double Hue { get; } + public double Brightness { get; } + + public static HueAndBrightness GetAverage(Bitmap bmp, double saturationThreshold = 0.05) + { + var totalHue = 0.0f; + var totalBrightness = 0.0f; + var validPixels = 0; + for(var i = 0; i < bmp.Width; i++) + { + for(var j = 0; j < bmp.Height; j++) + { + var pixel = bmp.GetPixel(i, j); + + //ignore sparkle + if(pixel.GetSaturation() > saturationThreshold) + { + totalHue += pixel.GetHue(); + totalBrightness += pixel.GetBrightness(); + validPixels++; + } + } + } + + return new HueAndBrightness(totalHue / validPixels, totalBrightness / validPixels); + } + } +} \ No newline at end of file diff --git a/Autosquelch/MouseHelpers.cs b/Autosquelch/MouseHelpers.cs index 6b546bc..33b7998 100644 --- a/Autosquelch/MouseHelpers.cs +++ b/Autosquelch/MouseHelpers.cs @@ -28,15 +28,12 @@ public static async Task ClickOnPoint(IntPtr wndHandle, Point clientPoint, bool else mouse_event((uint)RightDown, 0, 0, 0, UIntPtr.Zero); - await Task.Delay(Config.Instance.DeckExportDelay); - //mouse up if (leftMouseButton) mouse_event((uint)LeftUp, 0, 0, 0, UIntPtr.Zero); else mouse_event((uint)RightUp, 0, 0, 0, UIntPtr.Zero); - await Task.Delay(Config.Instance.DeckExportDelay); } } }