mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-25 10:05:49 +08:00
Merge branch 'main' into d-v3
This commit is contained in:
@@ -67,7 +67,9 @@ public partial class App : Application
|
||||
.WriteTo.File(logFile,
|
||||
outputTemplate:
|
||||
"[{Timestamp:HH:mm:ss.fff}] [{Level:u3}] {SourceContext}{NewLine}{Message}{NewLine}{Exception}{NewLine}",
|
||||
rollingInterval: RollingInterval.Day)
|
||||
rollingInterval: RollingInterval.Day,
|
||||
retainedFileCountLimit: 31,
|
||||
retainedFileTimeLimit: TimeSpan.FromDays(21))
|
||||
.WriteTo.Console(outputTemplate:
|
||||
"[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}")
|
||||
.MinimumLevel.Debug()
|
||||
|
||||
@@ -40,6 +40,8 @@ public class AutoFightTask : ISoloTask
|
||||
private readonly double _dpi = TaskContext.Instance().DpiScale;
|
||||
|
||||
public static OtherConfig Config { get; set; } = TaskContext.Instance().Config.OtherConfig;
|
||||
|
||||
public static bool FightStatusFlag { get; set; } = false;
|
||||
|
||||
private class TaskFightFinishDetectConfig
|
||||
{
|
||||
@@ -287,6 +289,8 @@ public class AutoFightTask : ISoloTask
|
||||
{
|
||||
try
|
||||
{
|
||||
FightStatusFlag = true;
|
||||
|
||||
while (!cts2.Token.IsCancellationRequested)
|
||||
{
|
||||
// 所有战斗角色都可以被取消
|
||||
@@ -442,6 +446,7 @@ public class AutoFightTask : ISoloTask
|
||||
finally
|
||||
{
|
||||
Simulation.ReleaseAllKey();
|
||||
FightStatusFlag = false;
|
||||
}
|
||||
}, cts2.Token);
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ public class Avatar
|
||||
NameRect = nameRect;
|
||||
CombatAvatar = DefaultAutoFightConfig.CombatAvatarMap[name];
|
||||
ManualSkillCd = manualSkillCd;
|
||||
AutoFightTask.FightStatusFlag = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -291,7 +292,7 @@ public class Avatar
|
||||
private void Offset60Fix(int i)
|
||||
{
|
||||
// 3次失败考虑是否偏移出现问题,修改偏移位置
|
||||
if (i <= 2)
|
||||
if (i <= 2 || AutoFightTask.FightStatusFlag)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -300,18 +301,18 @@ public class Avatar
|
||||
{
|
||||
foreach (var avatar in CombatScenes.GetAvatars())
|
||||
{
|
||||
var rect1 = avatar.IndexRect;
|
||||
rect1.Y += 14;
|
||||
var originalRect = AutoFightAssets.Instance.AvatarIndexRectList[avatar.Index - 1];
|
||||
var rect1 = new Rect(originalRect.X, originalRect.Y, originalRect.Width, originalRect.Height);
|
||||
avatar.IndexRect = rect1;
|
||||
}
|
||||
|
||||
CombatScenes.IndexRectOffset60Fix = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var avatar in CombatScenes.GetAvatars())
|
||||
{
|
||||
var rect1 = avatar.IndexRect;
|
||||
var originalRect = AutoFightAssets.Instance.AvatarIndexRectList[avatar.Index - 1];
|
||||
var rect1 = new Rect(originalRect.X, originalRect.Y, originalRect.Width, originalRect.Height);
|
||||
rect1.Y -= 14;
|
||||
avatar.IndexRect = rect1;
|
||||
}
|
||||
|
||||
@@ -96,15 +96,15 @@ public class CombatScenes : IDisposable
|
||||
Logger.LogInformation("当前处于联机状态,且在别人世界中,联机人数{Num}人", num);
|
||||
}
|
||||
|
||||
avatarSideIconRectList = AutoFightAssets.Instance.AvatarSideIconRectListMap[$"{p}_{num}"];
|
||||
avatarIndexRectList = AutoFightAssets.Instance.AvatarIndexRectListMap[$"{p}_{num}"];
|
||||
avatarSideIconRectList = new List<Rect>(AutoFightAssets.Instance.AvatarSideIconRectListMap[$"{p}_{num}"]);
|
||||
avatarIndexRectList = new List<Rect>(AutoFightAssets.Instance.AvatarIndexRectListMap[$"{p}_{num}"]);
|
||||
|
||||
ExpectedTeamAvatarNum = avatarSideIconRectList.Count;
|
||||
}
|
||||
else
|
||||
{
|
||||
avatarSideIconRectList = AutoFightAssets.Instance.AvatarSideIconRectList;
|
||||
avatarIndexRectList = AutoFightAssets.Instance.AvatarIndexRectList;
|
||||
avatarSideIconRectList = new List<Rect>(AutoFightAssets.Instance.AvatarSideIconRectList);
|
||||
avatarIndexRectList = new List<Rect>(AutoFightAssets.Instance.AvatarIndexRectList);
|
||||
}
|
||||
|
||||
// 6.0 版本 队伍下的 草露 进度条 导致位置偏移
|
||||
@@ -158,7 +158,7 @@ public class CombatScenes : IDisposable
|
||||
{
|
||||
// 角色序号 左上角 坐标偏移(+2, -5)后存在3个白色点,则认为存在 草露 进度条
|
||||
// 存在 草露 进度条时候整体上移 14 个像素
|
||||
int whitePointCount = 0;
|
||||
var whitePointCount = 0;
|
||||
foreach (var rectIndex in avatarIndexRectList)
|
||||
{
|
||||
int x = rectIndex.X + 2;
|
||||
@@ -170,47 +170,28 @@ public class CombatScenes : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
if (whitePointCount >= 3)
|
||||
if (whitePointCount < 3)
|
||||
{
|
||||
Logger.LogInformation("检测到右侧队伍上偏移,进行位置偏移");
|
||||
|
||||
for (int i = 0; i < avatarSideIconRectList.Count; i++)
|
||||
{
|
||||
var rect = avatarSideIconRectList[i];
|
||||
rect.Y -= 14;
|
||||
avatarSideIconRectList[i] = rect;
|
||||
}
|
||||
|
||||
for (int i = 0; i < avatarIndexRectList.Count; i++)
|
||||
{
|
||||
var rect = avatarIndexRectList[i];
|
||||
rect.Y -= 14;
|
||||
avatarIndexRectList[i] = rect;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else if (whitePointCount <= 1) //发现有时候识别到一个白点
|
||||
{
|
||||
Logger.LogInformation("检测到右侧队伍下偏移,进行位置偏移");
|
||||
for (int i = 0; i < avatarSideIconRectList.Count; i++)
|
||||
{
|
||||
var rect = avatarSideIconRectList[i];
|
||||
rect.Y += 14;
|
||||
avatarSideIconRectList[i] = rect;
|
||||
}
|
||||
|
||||
for (int i = 0; i < avatarIndexRectList.Count; i++)
|
||||
{
|
||||
var rect = avatarIndexRectList[i];
|
||||
rect.Y += 14;
|
||||
avatarIndexRectList[i] = rect;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Logger.LogInformation("检测到右侧队伍上偏移,进行位置偏移");
|
||||
|
||||
for (var i = 0; i < avatarSideIconRectList.Count; i++)
|
||||
{
|
||||
var rect = avatarSideIconRectList[i];
|
||||
rect.Y -= 14;
|
||||
avatarSideIconRectList[i] = rect;
|
||||
}
|
||||
|
||||
for (var i = 0; i < avatarIndexRectList.Count; i++)
|
||||
{
|
||||
var rect = avatarIndexRectList[i];
|
||||
rect.Y -= 14;
|
||||
avatarIndexRectList[i] = rect;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1101,7 +1101,7 @@ public class PathExecutor
|
||||
return null;
|
||||
}
|
||||
|
||||
var success = avatar.TrySwitch();
|
||||
var success = avatar.TrySwitch(5);//多切换一次,否则如果切人纠正要等下一个循环
|
||||
if (success)
|
||||
{
|
||||
await Delay(100, ct);
|
||||
|
||||
Reference in New Issue
Block a user