import { MenuItemConfig } from "../ZhongIcon"; import Timer from "../utils/Timer"; import BuyBeerHelper from "../action/BuyBeerHelper"; import UpdateTranslateDict from "./UpdateTranslateDict"; import landedRedirect from "../../func/module/landedRedirect"; import Alert from "../utils/Alert"; import ViewLogsHandler from "./ViewLogsHandler"; import AdditionalSettingsHandler from "./AdditionalSettingsHandler"; import Popup from "../utils/Popup"; import CommonUtils from "../utils/CommonUtils"; import CustomCssHandler from "./CustomCssHandler"; import Provider from "../provider/Provider"; import { MENU_ITEM_TYPE } from "../../interface/MenuItem"; import ClassName from "../../container/ClassName"; import { Injectable } from "../../container/Injectable"; import { Container } from "../../container/Container"; import Logger from "../Logger"; @ClassName('SettingsHandler') @Injectable() class SettingsHandler extends Provider { className = 'SettingsHandler'; private list: MenuItemConfig[] = []; constructor( private readonly buyBeerHelper: BuyBeerHelper, private readonly commonUtils: CommonUtils, private readonly updateTranslateDict: UpdateTranslateDict, private readonly customCssHandler: CustomCssHandler, private readonly viewLogsHandler: ViewLogsHandler, private readonly additionalSettingsHandler: AdditionalSettingsHandler, private readonly logger: Logger, ) { super(); this.constructWuhuSettingList(); } public show(): void { let startTime = new Timer(); this.logger.info('构造设置开始'); let pop = new Popup(CommonUtils.loading_gif_html(), '芜湖助手设置'); window.setTimeout(() => { let tmp = document.createElement('div'); tmp.classList.add('gSetting'); this.list.forEach(set => this.commonUtils.elemGenerator(set, tmp)); // 本日不提醒 tmp.querySelector('#wh-qua-alarm-check-btn') .addEventListener('click', () => this.buyBeerHelper.skip_today()); pop.getElement().innerHTML = ''; pop.getElement().appendChild(tmp); (window.initializeTooltip) && (window.initializeTooltip('#wh-popup-cont', 'white-tooltip')); this.logger.info('构造设置结束 ' + startTime.getTimeMs()); }, 0) } // 设置 private constructWuhuSettingList(): SettingsHandler { let timer = new Timer(); this.logger.info('构造设置列表开始'); const date = new Date(); let beer = this.buyBeerHelper; let list = this.list; // 12月时加入圣诞小镇选项 if (date.getMonth() === 11) { list.push({ domType: 'plain', domId: '', domHTML: '圣诞小镇', tagName: 'h4', }) list.push({ domType: 'checkbox', domId: 'wh-xmastown-wt', domText: ' 圣诞小镇攻略', dictName: 'xmasTownWT', isHide: true, }); list.push({ domType: 'checkbox', domId: 'wh-xmastown-notify', domText: ' 圣诞小镇物品提示', dictName: 'xmasTownNotify', isHide: true, }); } // 翻译 list.push({ domType: 'plain', domId: '', domHTML: '翻译', tagName: 'h4', }); // 开启翻译 list.push({ domType: 'checkbox', domId: 'wh-trans-enable', domText: ' 开启翻译', dictName: 'transEnable', isHide: true, }); list.push({ domType: 'checkbox', domId: '', domText: ' 新翻译', dictName: 'transNew', tip: '改进后的翻译,更好的性能', }); // 更新翻译词库 list.push({ domType: 'button', domId: '', domText: '更新翻译词库', isTornBtn: true, clickFunc: () => this.updateTranslateDict.handle() }); // 收集数据以改进翻译质量 list.push({ domType: 'checkbox', domId: '', domText: ' 收集数据以改进翻译质量', dictName: 'CollectPlayerData', tip: '未实现功能
收集玩家基础信息与页面上(未翻译)的内容上传以改进翻译' }); // 战斗 list.push({ domType: 'plain', domId: '', domHTML: '战斗', tagName: 'h4', }); // 光速拔刀 list.push({ domType: 'select', domId: 'wh-quick-attack-index', domText: '光速拔刀 ', domSelectOpt: [ { domVal: 'pri', domText: '主手', }, { domVal: 'sec', domText: '副手', }, { domVal: 'wea', domText: '近战', }, { domVal: 'gre', domText: '手雷', }, { domVal: 'fis', domText: '拳头', }, { domVal: 'kic', domText: '脚踢', }, { domVal: 'none', domText: '关闭', }, ], dictName: 'quickAttIndex', tip: '将Start Fight按钮移动到指定格子上', }); // 光速跑路 list.push({ domType: 'select', domId: 'wh-quick-mug', domText: '光速跑路 ', domSelectOpt: [ { domVal: 'leave', domText: '跑路(LEAVE)', }, { domVal: 'mug', domText: '打劫(MUG)', }, { domVal: 'hosp', domText: '住院(HOSP)', }, { domVal: 'none', domText: '关闭', }, ], dictName: 'quickFinishAtt', tip: '将结束后指定按钮移动到上面指定的格子上', }); // 攻击链接转跳 list.push({ domType: 'checkbox', domId: 'wh-attack-relocate', domText: ' 真·攻击界面转跳', dictName: 'attRelocate', tip: '在无法打开攻击界面的情况下依然可以转跳到正确的攻击页面,(失效,Ched疑似已移除此转跳)', }); // 盯梢模式强度 list.push({ domType: 'select', domId: '', domText: '盯梢模式强度 ', domSelectOpt: [ { domVal: '550', domText: '强' }, { domVal: '950', domText: '标准' }, { domVal: '1450', domText: '弱' } ], dictName: 'WatchTargetFreq', tip: '越强盯得越紧(刷新越快),越容易触发Torn大流量保护机制
强 ~0.6s
标准 ~1s
弱 ~1.5s', }) // 危险行为⚠️ // if (WuhuConfig.get('dangerZone') === true) { // // 攻击界面自刷新 // list.push({ // domType: 'select', // domId: 'wh-attack-reload', // domText: '⚠️攻击界面自动刷新 ', // dictName: 'attReload', // domSelectOpt: [ // { // domVal: 'none', // domText: '无间隔', // }, // { // domVal: '1', // domText: '约1s', // }, // { // domVal: '2', // domText: '约2s', // }, // { // domVal: '3', // domText: '约3s', // }, // { // domVal: '4', // domText: '约4s', // }, // { // domVal: '5', // domText: '约5s', // }, // { // domVal: 'disabled', // domText: '关闭', // }, // ], // isHide: true, // tip: '危险功能:接机时常用,将自动刷新页面直到目标落地', // }); // // 自动开打和结束 // list.push({ // domType: 'checkbox', // domId: 'wh-auto-start-finish', // domText: ' ⚠️自动开打和结束', // dictName: 'autoStartFinish', // tip: '脚本将会自动按下战斗和结束按钮', // isHide: true, // }); // } else { // WuhuConfig.set('autoStartFinish', false) // WuhuConfig.set('attReload', 6) // } // 飞行 list.push({ domType: 'plain', domId: '', domHTML: '飞行', tagName: 'h4', }); // 起飞警告 list.push({ domType: 'checkbox', domId: 'wh-energy-alert', domText: ' 起飞爆E警告', dictName: 'energyAlert', tip: '起飞前计算来回是否会爆体,红字警告', isHide: true, }); // 飞行闹钟 list.push({ domType: 'checkbox', domId: 'wh-trv-alarm-check', domText: ' 飞行闹钟', dictName: 'trvAlarm', tip: '(仅PC) 飞行页面将显示一个内建的闹钟,落地前声音提醒,需要打开浏览器声音权限', isHide: true, }); // 海外警告 list.push({ domType: 'checkbox', domId: '', domText: ' 海外警告', dictName: 'abroadWarning', tip: '海外落地后每30秒通知警告', }); // 落地转跳 list.push({ domType: 'button', domId: '', isTornBtn: true, domText: '落地转跳', clickFunc: landedRedirect }); // 公司 list.push({ domType: 'plain', domId: '', domHTML: '公司', tagName: 'h4', }); // 浮动存钱框 list.push({ domType: 'checkbox', domId: '', domText: ' 浮动存钱框', dictName: 'floatDepo', tip: '打开公司或帮派的存钱页面后存钱框将浮动显示', }); // 公司转跳存钱 list.push({ domType: 'checkbox', domId: '', domText: ' 公司转跳存钱', dictName: 'companyRedirect', tip: '打开公司页面时自动打开存钱选项卡', }); // 收起公司冰蛙效率表 list.push({ domType: 'checkbox', domId: '', domText: ' 收起公司冰蛙效率表', dictName: 'companyBWCollapse', tip: '开启后可手动显示隐藏冰蛙公司表格', }); // 任何位置一键存钱 list.push({ domType: 'checkbox', domId: '', domText: ' 任何位置一键存钱', dictName: 'companyDepositAnywhere', tip: '在所有页面显示一键存钱按钮,Torn OK状态下可用,此功能未完全测试无害,使用请慎重', }); // 火车检测开关 list.push({ domType: 'checkbox', domId: null, domText: '火车检测', dictName: 'CHTrainsDetectSwitch', tip: '检测明日火车是否会超出上限,需要系统通知权限' }); // 啤酒 list.push({ domType: 'plain', domId: '', domHTML: '啤酒', tagName: 'h4', }); // 啤酒提醒 list.push({ domType: 'checkbox', domId: 'wh-qua-alarm-check', domText: ' 啤酒提醒 ', dictName: '_15Alarm', tip: '每小时的整15分钟的倍数时通知提醒抢啤酒或者血包', isHide: true, changeEv: function (ev) { ev.target.checked ? beer.start() : beer.stop(); }, }); // 啤酒提醒状态 list.push({ domType: 'button', domId: '', isTornBtn: true, domText: '啤酒提醒状态', clickFunc: function () { new Alert(`啤酒提醒${ beer.status() }`); } }); // 啤酒提醒时间 list.push({ domType: 'button', domId: '', domText: '啤酒提醒时间设定', isTornBtn: true, // tip: '通知提前时间', clickFunc: () => this.buyBeerHelper.setTimeHandler() }); // 个人资料 list.push({ domType: 'plain', domId: '', domHTML: '个人资料', tagName: 'h4', }); list.push({ domType: 'checkbox', domText: '隐藏个人资料头像', dictName: 'HideProfileImg', domId: '' }); list.push({ domType: 'checkbox', domText: '显示曾用名', dictName: 'ShowNameHistory', domId: '' }); list.push({ domType: 'checkbox', domText: '迷你资料卡显示上次行动时间', dictName: 'ShowMiniProfLastAct', domId: '' }); // 侧边栏 list.push({ domType: 'plain', domId: '', domHTML: '侧边栏', tagName: 'h4', }); // 4条转跳 list.push({ domType: 'checkbox', domId: '', domText: ' 4条转跳', dictName: 'barsRedirect', tip: '点击4条时转跳对应页面,手机端不建议开启', }); // 添加隐藏边栏按钮 list.push({ domType: 'checkbox', domId: '', domText: ' 添加隐藏边栏按钮', dictName: 'HideSidebarBtn', tip: '仅PC' }); // 现金变动提醒 list.push({ domType: 'checkbox', domId: '', domText: ' 现金变动提醒', dictName: 'CashChangeAlert', tip: '插件图标下方显示现金、现金变动时通知提醒
注: 刷新页面生效、系统级通知需要浏览器权限' }); // 其他 list.push({ domType: 'plain', domId: '', domHTML: '其他', tagName: 'h4', }); // 任务助手 list.push({ domType: 'checkbox', domId: 'wh-mission-lint', domText: ' 任务助手', dictName: 'missionHint', tip: 'Duke任务的一些中文小提示', isHide: true, }); // 捡垃圾助手 list.push({ domType: 'checkbox', domId: 'wh-city-finder', domText: ' 捡垃圾助手', dictName: 'cityFinder', tip: '城市地图中放大显示物品并且估计价值', isHide: true, }); // 快速crime list.push({ domType: 'checkbox', domId: 'wh-quick-crime', domText: ' 快速犯罪', dictName: 'quickCrime', tip: '显示快捷操作按钮,目前不支持自定义', isHide: true, }); // 叠E保护 list.push({ domType: 'checkbox', domId: 'wh-SEProtect-check', domText: ' 叠E保护', dictName: 'SEProtect', tip: '隐藏健身房的锻炼按钮,防止误操作', isHide: true, }); // PT一键购买 list.push({ domType: 'checkbox', domId: 'wh-ptQuickBuy-check', domText: ' PT一键购买', dictName: 'ptQuickBuy', tip: 'PT市场页面购买时跳过确认', isHide: true, }); // 搜索页空白占位区 list.push({ domType: 'checkbox', domId: null, domText: ' 搜索页空白占位区', dictName: 'SearchPagePlaceholder', }); // 解决一直转圈(加载中)的问题 list.push({ domType: 'checkbox', domId: null, domText: ' 解决一直转圈(加载中)的问题', dictName: 'SolveGoogleScriptPendingIssue', tip: 'Torn引入Google登陆后可能会出现这种问题
启用功能影响:
页面加载速度变慢,与其他插件冲突,如遇到问题请关闭
并使用其他更科学的方法解决' }); // 记住图标位置 list.push({ domType: 'checkbox', domId: null, domText: ' 记住图标位置', dictName: 'SaveIconPosition', tip: '记住图标移动后的位置' }); // 清除多余的脚本 // list.push({ // domType: 'checkbox', // domId: '', // domText: ' 清除多余的脚本', // dictName: 'removeScripts', // tip: '清除Google相关脚本、顶部横幅等', // }); // dev list.push({ domType: 'checkbox', domId: 'wh-dev-mode', domText: '开发模式', dictName: 'isDev', isHide: true, }); // 自定义CSS list.push({ domType: 'button', domId: null, domText: '自定义CSS', isTornBtn: true, clickFunc: () => this.customCssHandler.handle() }); // 查看logs list.push({ domType: 'button', domId: null, domText: '查看日志', isTornBtn: true, clickFunc: () => this.viewLogsHandler.handle() }); // 更多设定 list.push({ domType: 'button', domId: 'wh-otherBtn', domText: '更多设定', isTornBtn: true, clickFunc: () => this.additionalSettingsHandler.show() }); this.logger.info('构造设置列表结束' + timer.getTimeMs()); return this; } } export default { domType: MENU_ITEM_TYPE.BUTTON, domText: '⚙️ 助手设置', clickFunc: () => Container.factory(SettingsHandler).show() };