448 lines
14 KiB
TypeScript
448 lines
14 KiB
TypeScript
import WuhuBase from "../WuhuBase";
|
||
import { MenuItemConfig } from "../ZhongIcon";
|
||
import Log from "../Log";
|
||
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 WuhuConfig from "../WuhuConfig";
|
||
import ViewLogsHandler from "./ViewLogsHandler";
|
||
import AdditionalSettingsHandler from "./AdditionalSettingsHandler";
|
||
import Popup from "../utils/Popup";
|
||
import CommonUtils from "../utils/CommonUtils";
|
||
|
||
export default class SettingsHandler extends WuhuBase {
|
||
className = 'SettingsHandler';
|
||
|
||
private list: MenuItemConfig[] = [];
|
||
|
||
constructor() {
|
||
super();
|
||
this.constructWuhuSettingList();
|
||
}
|
||
|
||
public handler(): void {
|
||
let startTime = new Timer();
|
||
Log.info('构造设置开始');
|
||
let pop = new Popup(CommonUtils.loading_gif_html(), '芜湖助手设置');
|
||
let tmp = document.createElement('div');
|
||
tmp.classList.add('gSetting');
|
||
this.list.forEach(set => CommonUtils.getInstance().elemGenerator(set, tmp));
|
||
pop.getElement().innerHTML = '';
|
||
pop.getElement().appendChild(tmp);
|
||
// 本日不提醒
|
||
pop.getElement().querySelector('#wh-qua-alarm-check-btn')
|
||
.addEventListener('click', () => BuyBeerHelper.getInstance().skip_today());
|
||
(window.initializeTooltip) && (window.initializeTooltip('#wh-popup-cont', 'white-tooltip'));
|
||
Log.info('构造设置结束 ' + startTime.getTimeMs());
|
||
}
|
||
|
||
// 设置
|
||
private constructWuhuSettingList(): SettingsHandler {
|
||
let timer = new Timer();
|
||
Log.info('构造设置列表开始');
|
||
const date = new Date();
|
||
|
||
let beer = BuyBeerHelper.getInstance();
|
||
|
||
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: 'button',
|
||
domId: '',
|
||
domText: '更新翻译词库',
|
||
clickFunc: () => UpdateTranslateDict.getInstance().handle()
|
||
});
|
||
|
||
// 战斗优化
|
||
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',
|
||
isHide: true,
|
||
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',
|
||
isHide: true,
|
||
tip: '<del>将结束后指定按钮移动到上面指定的格子上</del>暂时关闭',
|
||
});
|
||
// 攻击链接转跳
|
||
list.push({
|
||
domType: 'checkbox',
|
||
domId: 'wh-attack-relocate',
|
||
domText: ' 真·攻击界面转跳',
|
||
dictName: 'attRelocate',
|
||
tip: '在无法打开攻击界面的情况下依然可以转跳到正确的攻击页面',
|
||
isHide: true,
|
||
});
|
||
// 危险行为⚠️
|
||
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: '', 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: '<span> 啤酒提醒 </span><button id="wh-qua-alarm-check-btn">今日不提醒</button>',
|
||
dictName: '_15Alarm',
|
||
tip: '每小时的整15分钟的倍数时通知提醒抢啤酒或者血包',
|
||
isHide: true,
|
||
changeEv: function (ev) {
|
||
ev.target.checked ? beer.start() : beer.stop();
|
||
},
|
||
});
|
||
// 啤酒提醒状态
|
||
list.push({
|
||
domType: 'button',
|
||
domId: '',
|
||
domText: '啤酒提醒状态',
|
||
clickFunc: function () {
|
||
new Alert(`啤酒提醒${ beer.status() }`);
|
||
}
|
||
});
|
||
// 啤酒提醒时间
|
||
list.push({
|
||
domType: 'button',
|
||
domId: '',
|
||
domText: '啤酒提醒时间设定',
|
||
// tip: '通知提前时间',
|
||
clickFunc: () => BuyBeerHelper.getInstance().setTimeHandler()
|
||
});
|
||
|
||
// 其他
|
||
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,
|
||
});
|
||
// 4条转跳
|
||
list.push({
|
||
domType: 'checkbox',
|
||
domId: '',
|
||
domText: ' 4条转跳',
|
||
dictName: 'barsRedirect',
|
||
tip: '点击4条时转跳对应页面',
|
||
});
|
||
// 清除多余的脚本
|
||
// list.push({
|
||
// domType: 'checkbox',
|
||
// domId: '',
|
||
// domText: ' 清除多余的脚本',
|
||
// dictName: 'removeScripts',
|
||
// tip: '清除Google相关脚本、顶部横幅等',
|
||
// });
|
||
// dev
|
||
list.push({
|
||
domType: 'checkbox',
|
||
domId: 'wh-dev-mode',
|
||
domText: '开发模式',
|
||
dictName: 'isDev',
|
||
isHide: true,
|
||
});
|
||
// 查看logs
|
||
list.push({
|
||
domType: 'button',
|
||
domId: null,
|
||
domText: '查看日志',
|
||
clickFunc: () => ViewLogsHandler.getInstance().handle()
|
||
});
|
||
// 更多设定
|
||
list.push({
|
||
domType: 'button', domId: 'wh-otherBtn', domText: '更多设定',
|
||
clickFunc: () => AdditionalSettingsHandler.getInstance().handle()
|
||
});
|
||
|
||
Log.info('构造设置列表结束' + timer.getTimeMs());
|
||
return this;
|
||
}
|
||
} |