(async function () {
    setGameMetrics(1920, 1080, 2);

    async function logTaskStart() {
        const messages = [
            '确保地图的按键为M键',
            '左上角派蒙头像未被其他悬浮窗遮挡',
            '运行时默认使用常用路径追踪队伍',
            '请于【路径追踪】选项卡自行配置',
            '【自动】将以每天4点为界限交替运行'
        ];

        for (let message of messages) {
            log.info(message); 
            await sleep(1000);
        }
    }
    async function resetMap() {
        log.info("重置地图大小...");
        await sleep(1000);
        keyPress("M");
        await sleep(1000);
        click(1840, 1010);
        await sleep(1000);
        click(1450, 460);
        await sleep(1000);
        click(1840, 1010);
        await sleep(1000);
        click(1450, 140);
        await sleep(1000);
        keyPress("M");
        log.info("重置地图大小完成");
    }

    async function AutoPathA(locationName) {
        log.info(`前往 ${locationName}`);
        try {
        let filePath = `assets/AutoArtifacts(A)/${locationName}.json`;
            await pathingScript.runFile(filePath);
        } catch (error) {
            log.error(`执行 ${locationName} 路径时发生错误`);
        }
        await sleep(2000);
    }
    async function AutoPathB(locationName) {
        log.info(`前往 ${locationName}`);
        try {
        let filePath = `assets/AutoArtifacts(B)/${locationName}.json`;
            await pathingScript.runFile(filePath);
        } catch (error) {
            log.error(`执行 ${locationName} 路径时发生错误`);
        }
        await sleep(2000);
    }

    function logTimeTaken(startTime) {
        const currentTime = Date.now();
        const totalTimeInSeconds = (currentTime - startTime) / 1000;
        const minutes = Math.floor(totalTimeInSeconds / 60);
        const seconds = totalTimeInSeconds % 60;
        const formattedTime = `${minutes}分${seconds.toFixed(0).padStart(2, '0')}秒`;
        log.info(`当前运行总时长：${formattedTime}`);
    }

    //判断AB线
    async function runAlternateTasks() {
        const dayDifference = Math.floor((Date.now() + 1000 * 60 * 60 * 4) / (1000 * 60 * 60 * 24));
        if (settings.selectway === undefined){
            log.info('未设置自定义选项，将默认【自动】选择路线');
        }
        if ((dayDifference % 2 == 0 && (settings.selectway == "自动" || settings.selectway === undefined)) || settings.selectway == "A线") {
            log.info("{xx}","---今天运行A线---");
            // 执行 A 的代码
            await logTaskStart();

            await resetMap();//重置地图大小避免传错

            log.info('前往地区：璃月');
            await AutoPathA('狗粮-璃月-沉玉谷上谷-东-2个');
            await AutoPathA('狗粮-璃月-沉玉谷南陵-3个（另一个太远）');
            await AutoPathA('狗粮-璃月-珉林-东北-9个');
            await AutoPathA('狗粮-璃月-珉林-北-5个');
            await AutoPathA('狗粮-璃月-珉林-天道谷-3个');
            await AutoPathA('狗粮-璃月-珉林-奥藏山南-3个');
            await resetMap();//重置地图大小避免传错
            await AutoPathA('狗粮-璃月-珉林-绝云间-3个');//会传到太山府。已解决
            await AutoPathA('狗粮-璃月-琼玑野-绿华池-3个');
            await AutoPathA('狗粮-璃月-碧水源-望舒客栈-1个');
            await AutoPathA('狗粮-璃月-碧水源-盐中之地-3个');
            await AutoPathA('狗粮-璃月-碧水源-轻策庄-3个');
            logTimeTaken(startTime);

            log.info('前往地区：须弥');
            await AutoPathA('狗粮-须弥-上风蚀地-东北营地-2个');
            await AutoPathA('狗粮-须弥-下风蚀地-阿如村-4个');
            await AutoPathA('狗粮-须弥-下风蚀地-阿如村-北-1个');
            await AutoPathA('狗粮-须弥-二净甸-七天神像-4个(重兵把守，其余不拿)');
            await AutoPathA('狗粮-须弥-二净甸-觉王之殿南-6个');
            await AutoPathA('狗粮-须弥-千壑沙地-圣显厅西-3个');
            await AutoPathA('狗粮-须弥-千壑沙地-塔尼特露营地-3个');
            await AutoPathA('狗粮-须弥-千壑沙地-神的棋盘-1个（只拿前一个）');
            await AutoPathA('狗粮-须弥-失落的苗圃-南-8个');
            await AutoPathA('狗粮-须弥-护世森-卡萨扎莱宫南-2个');
            await AutoPathA('狗粮-须弥-浮罗囿-甘露花海北-4个');
            await AutoPathA('狗粮-须弥-道成林-化城郭-西-3个');
            await AutoPathA('狗粮-须弥-须弥城-3个（有一个剧烈摇晃，不拿）');
            logTimeTaken(startTime);

            log.info('前往地区：纳塔');
            await AutoPathA('狗粮-纳塔-万火之瓯-竞技场东-4个');
            await AutoPathA('狗粮-纳塔-坚岩隘谷-回声之子南-7个');
            await AutoPathA('狗粮-纳塔-涌流地-流泉之众-4个');
            logTimeTaken(startTime);

            log.info('前往地区：稻妻');
            await AutoPathA('【收尾】狗粮-稻妻-神无冢-踏鞴砂-21个');//飞行体力不够，被火深渊法师击落，爬墙卡死，冲刺摔落。已解决：删除了两个调查点位
            logTimeTaken(startTime);
            // 计算并输出总时长
            const endTime = Date.now();
            const totalTimeInSeconds = (endTime - startTime) / 1000;
            const minutes = Math.floor(totalTimeInSeconds / 60);
            const seconds = totalTimeInSeconds % 60;
            const formattedTime = `${minutes}分${seconds.toFixed(0).padStart(2, '0')}秒`;
            log.info(`自动狗粮运行总时长：${formattedTime}`);
        }
        else {
            log.info("{xx}","---今天运行B线---");

            await logTaskStart();
            await resetMap();//重置地图大小避免传错

            log.info('前往地区：枫丹');
            await AutoPathB('狗粮-枫丹-伊黎耶林区-欧庇克莱歌剧院东南-2个');
            //await AutoPathB('狗粮-枫丹-白露区-秋分山东侧-2个');//有役人，点位过多，或许可删除。已删除
            await AutoPathB('狗粮-枫丹-白露区-秋分山西侧-北-2个');
            await AutoPathB('狗粮-枫丹-研究院区-东-3个');
            await AutoPathB('狗粮-枫丹-研究院区-中央实验室遗址-北侧屋内-4个');
            await AutoPathB('狗粮-枫丹-研究院区-学术会堂-1个（另一个太远）');
            await AutoPathB('狗粮-枫丹-研究院区-新枫丹科学院-东南侧-8个');
            await AutoPathB('狗粮-枫丹-研究院区-西北-6个(有一个不拿，有干扰)');
            await AutoPathB('狗粮-枫丹-研究院区-西南偏南-6个');
            await AutoPathB('狗粮-枫丹-研究院区-西南偏西-4个');
            await AutoPathB('狗粮-枫丹-莫尔泰区-七天神像-1个');
            await AutoPathB('狗粮-枫丹-黎翡区-七天神像-5个');
            await AutoPathB('狗粮-枫丹-黎翡区-芒索斯山东-3个');
            logTimeTaken(startTime);

            log.info('前往地区：稻妻');
            await AutoPathB('狗粮-稻妻-海祇岛-东方小岛-2个');
            await AutoPathB('狗粮-稻妻-海祇岛-望泷村西南-4个');
            await AutoPathB('狗粮-稻妻-海祇岛-珊瑚宫东北-6个');
            await AutoPathB('狗粮-稻妻-清籁岛-平海砦西-8个');
            await AutoPathB('狗粮-稻妻-清籁岛-浅濑神社-3个');
            await AutoPathB('狗粮-稻妻-清籁岛-越石村-8个');
            await AutoPathB('狗粮-稻妻-神无冢-东-5个（最后一个不拿，重兵把守）');
            await AutoPathB('狗粮-稻妻-神无冢-九条阵屋-3个');//有概率被挡住导致只能捡一个。忽略。
            await AutoPathB('狗粮-稻妻-神无冢-堇色之庭-4个');
            await AutoPathB('狗粮-稻妻-神无冢-无相之火-4个（第5个有干扰，不拿）');
            await AutoPathB('狗粮-稻妻-鹤观-东-3个');
            await AutoPathB('【收尾】狗粮-稻妻-清籁岛-清籁丸-20个');
            logTimeTaken(startTime);

            // 计算并输出总时长
            const endTime = Date.now();
            const totalTimeInSeconds = (endTime - startTime) / 1000;
            const minutes = Math.floor(totalTimeInSeconds / 60);
            const seconds = totalTimeInSeconds % 60;
            const formattedTime = `${minutes}分${seconds.toFixed(0).padStart(2, '0')}秒`;
            log.info(`自动狗粮运行总时长：${formattedTime}`);
        }
    };
    // 启用自动拾取的实时任务
    dispatcher.addTimer(new RealtimeTimer("AutoPick"));
    const startTime = Date.now();
    await runAlternateTasks();
})();