diff --git a/BetterGenshinImpact/GameTask/AutoEat/AutoEatTask.cs b/BetterGenshinImpact/GameTask/AutoEat/AutoEatTask.cs index 2ff472f4..aea4956f 100644 --- a/BetterGenshinImpact/GameTask/AutoEat/AutoEatTask.cs +++ b/BetterGenshinImpact/GameTask/AutoEat/AutoEatTask.cs @@ -9,6 +9,7 @@ using BetterGenshinImpact.GameTask.GetGridIcons; using BetterGenshinImpact.GameTask.Model; using BetterGenshinImpact.GameTask.Model.Area; using BetterGenshinImpact.GameTask.Model.GameUI; +using BetterGenshinImpact.Helpers; using BetterGenshinImpact.View.Drawable; using Fischless.WindowsInput; using Microsoft.Extensions.Logging; @@ -104,7 +105,8 @@ public class AutoEatTask : BaseIndependentTask, ISoloTask itemRegion.Click(); #region 识别数量 - string numStr = itemRegion.SrcMat.GetGridItemIconText(OcrFactory.Paddle); + string ocrText = itemRegion.SrcMat.GetGridItemIconText(OcrFactory.Paddle); + string numStr = StringUtils.ConvertFullWidthNumToHalfWidth(ocrText); if (int.TryParse(numStr, out int num)) { count = num - 1; // 算上吃掉的1个 diff --git a/BetterGenshinImpact/GameTask/Common/Job/CountInventoryItem.cs b/BetterGenshinImpact/GameTask/Common/Job/CountInventoryItem.cs index 82fe8218..d0e83699 100644 --- a/BetterGenshinImpact/GameTask/Common/Job/CountInventoryItem.cs +++ b/BetterGenshinImpact/GameTask/Common/Job/CountInventoryItem.cs @@ -5,6 +5,7 @@ using BetterGenshinImpact.GameTask.GetGridIcons; using BetterGenshinImpact.GameTask.Model.Area; using BetterGenshinImpact.GameTask.Model.GameUI; using BetterGenshinImpact.View.Drawable; +using BetterGenshinImpact.Helpers; using Fischless.WindowsInput; using Microsoft.Extensions.Logging; using Microsoft.ML.OnnxRuntime; @@ -100,7 +101,8 @@ namespace BetterGenshinImpact.GameTask.Common.Job string predName = result.Item1; if (predName == this.itemName!) { - string numStr = itemRegion.SrcMat.GetGridItemIconText(OcrFactory.Paddle); + string ocrText = itemRegion.SrcMat.GetGridItemIconText(OcrFactory.Paddle); + string numStr = StringUtils.ConvertFullWidthNumToHalfWidth(ocrText); if (int.TryParse(numStr, out int num)) { count = num; @@ -149,7 +151,8 @@ namespace BetterGenshinImpact.GameTask.Common.Job if (this.itemNames!.Contains(predName) && !itemsCountDic!.ContainsKey(predName)) { int count; - string numStr = itemRegion.SrcMat.GetGridItemIconText(OcrFactory.Paddle); + string ocrText = itemRegion.SrcMat.GetGridItemIconText(OcrFactory.Paddle); + string numStr = StringUtils.ConvertFullWidthNumToHalfWidth(ocrText); if (int.TryParse(numStr, out int num)) { count = num; diff --git a/BetterGenshinImpact/Helpers/StringUtils.cs b/BetterGenshinImpact/Helpers/StringUtils.cs index b98ac369..db9f37f6 100644 --- a/BetterGenshinImpact/Helpers/StringUtils.cs +++ b/BetterGenshinImpact/Helpers/StringUtils.cs @@ -71,6 +71,24 @@ public partial class StringUtils return chineseString; } + /// + /// 将全角数字转换为半角数字 + /// + /// 需要转换的文本 + /// 转换后的文本,全角数字被替换为半角数字 + public static string ConvertFullWidthNumToHalfWidth(string text) + { + StringBuilder sb = new StringBuilder(text.Length); + foreach (char c in text) + { + if (c >= 0xFF10 && c <= 0xFF19) // 全角数字 0-9 + sb.Append((char)(c - 0xFF10 + '0')); + else + sb.Append(c); + } + return sb.ToString(); + } + public static double TryParseDouble(string text) { _ = double.TryParse(text, out double result);