mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-21 09:45:48 +08:00
* 修改调度器任务和部分独立任务失去焦点时,强制切换回游戏窗口,如果用常规的方式无法激活窗口,则第10次会尝试最小化所有窗口后激活游戏。 * 去除未引入的类引用 * 修正战斗结束后,大概率打开队伍界面的问题 * 修复有些电脑上因未知原因,战斗0秒打断 * 把失焦激活放入了设置-通用设置-其他设置中,默认关闭。暂停恢复时,重置移动的起始时间,防止因暂停而导致超时放弃任务。 * 在调度器里面的任务之前,增加月卡处理,解决4点如果未进入任务会卡住的问题。增加了日志分析小怪详细。解决日志分析兜底结束日期不生效的问题。 * 在设置=》其他设置中 增加调度器任务传送过程中自动领取探索奖励功能配置。 * 调整自动派遣后恢复原任务的逻辑 * 自动领取派遣奖励时,跳过异常,防止整个配置组任务被打断。 * 把打开大地图方法从TpTask中抽出为公共方法,自动领取派遣代码调整到了调度器中。 * 去除了未使用的引用 * 暂停恢复逻辑增加恢复中条件和非空判断 * 增加了临时暂停自动拾取的逻辑(RunnerContext.AutoPickTriggerStopCount 为0时不限制,大于0时停止,多次暂停会累加该值,每次恢复-1),支持嵌套情况的暂停,在自动派遣(和结束后5秒)或暂停调度器任务时,同时暂停自动拾取功能。 * 调整暂停拾取方法 * 调整个日志输出 * 路径追踪复苏时,暂停拾取 * 增加根据点位配置,支持能在点位未识别情况下,使用大地图中心点的方式来定位,从而支持像铜锁小岛处这种小地图无法识别的点位。调整了对未识别点位的默认逻辑,未配置点位配置情况下,未识别点位,会取上一个识别的点位,从而支持在某些地方断续小地图能识别情况下的脚本。 * Changes * 修复暂停后,距离过远,小地图无法识别时,无限取当前一个坐标,导致无法正常恢复的问题。调度器管理增加了按天为单位的周期配置,适用于批量执行时,无需人工判断当天执行哪个任务。 * 调度器配置增加,或开启万叶拾取,并且不存在万叶,但配置了万叶队伍情况下,会切换队伍进行拾取。
59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using System;
|
||
using CommunityToolkit.Mvvm.ComponentModel;
|
||
|
||
namespace BetterGenshinImpact.Core.Config;
|
||
|
||
[Serializable]
|
||
public partial class PathingPartyTaskCycleConfig : ObservableObject
|
||
{
|
||
//启用执行周期配置
|
||
[ObservableProperty]
|
||
private bool _enable = false;
|
||
|
||
//周期分界时间点
|
||
[ObservableProperty]
|
||
private int _boundaryTime = 0;
|
||
|
||
//不同材料有不同的周期,按需配置,如矿石类是3、突破材料是2,或按照自已想几天执行一次配置即可
|
||
[ObservableProperty]
|
||
private int _cycle = 1;
|
||
|
||
|
||
|
||
//执行周期序号,按时间戳对应的天数,对周期求余值加1,得出的值和配置执一致就会执行,否则跳过任务。
|
||
[ObservableProperty]
|
||
private int _index = 1;
|
||
|
||
|
||
public int GetExecutionOrder(DateTime now)
|
||
{
|
||
try
|
||
{
|
||
if (_cycle <= 0 || _boundaryTime <0 || _boundaryTime > 24 )
|
||
return -1;
|
||
|
||
// 修正时间:如果当前时间小于当天的分界时间,则视为前一天
|
||
DateTime boundaryTimeToday = new DateTime(now.Year, now.Month, now.Day, _boundaryTime, 0, 0);
|
||
if (now < boundaryTimeToday)
|
||
{
|
||
now = now.AddDays(-1); // 归属到前一天
|
||
}
|
||
|
||
// 获取从某个固定点(如 Unix 纪元)起的“修正天数”
|
||
// 可以使用 DateTime.UnixEpoch(从 1970-01-01 00:00:00 开始)
|
||
DateTime baseDate = DateTime.UnixEpoch; // 即 1970-01-01
|
||
TimeSpan daysSinceBase = now.Date - baseDate.Date;
|
||
int totalDays = (int)daysSinceBase.TotalDays;
|
||
|
||
// 执行序号 = (修正天数 % 周期) + 1
|
||
int executionOrder = (totalDays % _cycle) + 1;
|
||
return executionOrder;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
return -1;
|
||
}
|
||
|
||
}
|
||
|
||
} |