From 20edc36e604238ce814ca40d71dfad9bf28eaa1d Mon Sep 17 00:00:00 2001 From: Jos Demmers Date: Tue, 26 Mar 2024 17:33:05 +0100 Subject: [PATCH] - Fixed item power detection. - Fixed item type detection. --- D4Companion.Services/OcrHandler.cs | 14 ++++++++------ D4Companion/common.props | 4 ++-- README.md | 2 +- downloads/systempresets-v3/2160p_SSF_en.zip | Bin 23337 -> 25005 bytes .../images/2160p_SSF_en/dot-splitter_1.png | Bin 4609 -> 3080 bytes .../2160p_SSF_en/dot-splitter_top_1.png | Bin 0 -> 3015 bytes downloads/systempresets-v3/systempresets.json | 4 ++-- 7 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 downloads/systempresets-v3/images/2160p_SSF_en/dot-splitter_top_1.png diff --git a/D4Companion.Services/OcrHandler.cs b/D4Companion.Services/OcrHandler.cs index e5673eb9..0e15ed00 100644 --- a/D4Companion.Services/OcrHandler.cs +++ b/D4Companion.Services/OcrHandler.cs @@ -164,10 +164,11 @@ public OcrResultItemType ConvertToItemType(string rawText) // Check if there is an item power int powerIndex = -1; - for (int i = 0; i < lines.Count; i++) + for (int i = lines.Count - 1; i >= 0; i--) { string resultString = Regex.Match(lines[i], @"\d+").Value; - if (resultString.Length >= 3) + // Item power 150 is the minimum value for Tier 1 items. + if (resultString.Length >= 3 && int.Parse(resultString) >= 150) { powerIndex = i; break; @@ -234,12 +235,13 @@ public OcrResult ConvertToPower(string rawText) var lines = rawText.Split(new string[] { "\n" }, StringSplitOptions.None).ToList(); lines.RemoveAll(line => string.IsNullOrWhiteSpace(line)); - foreach (var line in lines) + for (int i = lines.Count - 1; i >= 0; i--) { - string resultString = Regex.Match(line, @"\d+").Value; - if (resultString.Length >= 3) + string resultString = Regex.Match(lines[i], @"\d+").Value; + // Item power 150 is the minimum value for Tier 1 items. + if (resultString.Length >= 3 && int.Parse(resultString) >= 150) { - result.Text = line; + result.Text = lines[i]; result.TextClean = resultString; break; } diff --git a/D4Companion/common.props b/D4Companion/common.props index 7fe77588..86de9433 100644 --- a/D4Companion/common.props +++ b/D4Companion/common.props @@ -1,7 +1,7 @@ - 3.2.0.0 - 3.2.0.0 + 3.2.1.0 + 3.2.1.0 Copyright © 2024 net6.0-windows diff --git a/README.md b/README.md index 3e7305b6..b8e82753 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Currently the following system presets are included: | 1440p_SMF_en | | SDR (HDR off) with font set to medium for the English language | ![Static Badge](https://img.shields.io/badge/status-ready-green) | | | 1600p_SMF_zh-CN | | SDR (HDR off) with font set to medium for the Chinese (Simplified) language | ![Static Badge](https://img.shields.io/badge/status-unknown-red) | | | 2160p_HSF_en | | HDR with font set to small for the English language. | ![Static Badge](https://img.shields.io/badge/status-unknown-red) | | -| 2160p_SSF_en | | SDR (HDR off) with font set to small for the English language. | ![Static Badge](https://img.shields.io/badge/status-ready-yellow) | | +| 2160p_SSF_en | | SDR (HDR off) with font set to small for the English language. | ![Static Badge](https://img.shields.io/badge/status-ready-green) | | Each preset works for both normal and widescreen resolutions. e.g. for 2560x1440 and 3440x1440 use the 1440p preset. diff --git a/downloads/systempresets-v3/2160p_SSF_en.zip b/downloads/systempresets-v3/2160p_SSF_en.zip index 93a052f809828406647fc42a188ff537ef7ada4b..9e8bb88333a0eb800a4371443e45cb65757bf072 100644 GIT binary patch delta 6415 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 delta 4894 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