Extension for HeroWarsHelper script
// ==UserScript==
// @name HWHHideButtonsExt
// @name:en HWHHideButtonsExt
// @name:ru HWHHideButtonsExt
// @namespace HWHHideButtonsExt
// @version 1.8
// @description Extension for HeroWarsHelper script
// @description:en Extension for HeroWarsHelper script
// @description:ru Расширение для скрипта HeroWarsHelper
// @author Green
// @license Copyright Green
// @icon https://i.ibb.co/xtmhK7zS/icon.png
// @match https://www.hero-wars.com/*
// @match https://apps-1701433570146040.apps.fbsbx.com/*
// @run-at document-start
// ==/UserScript==
(async function () {
if (!this.HWHClasses) {
console.log('%cObject for extension not found', 'color: red');
return;
}
console.log('%cStart Extension ' + GM_info.script.name + ', v' + GM_info.script.version + ' by ' + GM_info.script.author, 'color: red');
const { addExtentionName } = HWHFuncs;
addExtentionName(GM_info.script.name, GM_info.script.version, GM_info.script.author);
const { buttons, othersPopupButtons, i18nLangData, extintionsList} = HWHData;
const { popup, confShow, setSaveVal, getSaveVal, I18N, getCheckBoxes } = HWHFuncs;
const i18nLangDataEn = {
HIDE_BUTTONS: 'Hide buttons',
HIDE_BUTTONS_TITLE: 'Button settings in the "Others" section',
HB_SELECT_BUTTONS:
`Choose the buttons you want to hide <br>
<span style="color: DeepSkyBlue;">The game will restart automatically to apply the changes</span>`,
HB_APPLY: 'Apply',
HB_OTHERS_SETTINGS:
`<span style="color: White;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="currentColor" style="width: 22px;height: 22px;"><path d="M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"></path></svg>
</span>`,
HB_GRAPHICS_SWITCH_ON_TITLE: 'Turn on game graphics',
HB_GRAPHICS_SWITCH_OFF_TITLE: 'Turn off game graphics',
HB_GRAPHICS_SWITCH_OFF:
`<span style="color: Lime;">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="22px" height="22px" viewBox="0 0 512 512" fill="currentColor" xml:space="preserve">
<path d="M237.545,255.816c9.899,0,18.468-3.609,25.696-10.848c7.23-7.229,10.854-15.799,10.854-25.694V36.547
c0-9.9-3.62-18.464-10.854-25.693C256.014,3.617,247.444,0,237.545,0c-9.9,0-18.464,3.621-25.697,10.854
c-7.233,7.229-10.85,15.797-10.85,25.693v182.728c0,9.895,3.617,18.464,10.85,25.694
C219.081,252.207,227.648,255.816,237.545,255.816z"/>
<path d="M433.836,157.887c-15.325-30.642-36.878-56.339-64.666-77.084c-7.994-6.09-17.035-8.47-27.123-7.139
c-10.089,1.333-18.083,6.091-23.983,14.273c-6.091,7.993-8.418,16.986-6.994,26.979c1.423,9.998,6.139,18.037,14.133,24.128
c18.645,14.084,33.072,31.312,43.25,51.678c10.184,20.364,15.27,42.065,15.27,65.091c0,19.801-3.854,38.688-11.561,56.678
c-7.706,17.987-18.13,33.544-31.265,46.679c-13.135,13.131-28.688,23.551-46.678,31.261c-17.987,7.71-36.878,11.57-56.673,11.57
c-19.792,0-38.684-3.86-56.671-11.57c-17.989-7.71-33.547-18.13-46.682-31.261c-13.129-13.135-23.551-28.691-31.261-46.679
c-7.708-17.99-11.563-36.877-11.563-56.678c0-23.026,5.092-44.724,15.274-65.091c10.183-20.364,24.601-37.591,43.253-51.678
c7.994-6.095,12.703-14.133,14.133-24.128c1.427-9.989-0.903-18.986-6.995-26.979c-5.901-8.182-13.844-12.941-23.839-14.273
c-9.994-1.332-19.085,1.049-27.268,7.139c-27.792,20.745-49.344,46.442-64.669,77.084c-15.324,30.646-22.983,63.288-22.983,97.927
c0,29.697,5.806,58.054,17.415,85.082c11.613,27.028,27.218,50.34,46.826,69.948c19.602,19.603,42.919,35.215,69.949,46.815
c27.028,11.615,55.388,17.426,85.08,17.426c29.693,0,58.052-5.811,85.081-17.426c27.031-11.604,50.347-27.213,69.952-46.815
c19.602-19.602,35.207-42.92,46.818-69.948s17.412-55.392,17.412-85.082C456.809,221.174,449.16,188.532,433.836,157.887z"/>
</svg>
</span>`,
HB_GRAPHICS_SWITCH_ON:
`<span style="color: Silver;">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="22px" height="22px" viewBox="0 0 512 512" fill="currentColor" xml:space="preserve">
<path d="M237.545,255.816c9.899,0,18.468-3.609,25.696-10.848c7.23-7.229,10.854-15.799,10.854-25.694V36.547
c0-9.9-3.62-18.464-10.854-25.693C256.014,3.617,247.444,0,237.545,0c-9.9,0-18.464,3.621-25.697,10.854
c-7.233,7.229-10.85,15.797-10.85,25.693v182.728c0,9.895,3.617,18.464,10.85,25.694
C219.081,252.207,227.648,255.816,237.545,255.816z"/>
<path d="M433.836,157.887c-15.325-30.642-36.878-56.339-64.666-77.084c-7.994-6.09-17.035-8.47-27.123-7.139
c-10.089,1.333-18.083,6.091-23.983,14.273c-6.091,7.993-8.418,16.986-6.994,26.979c1.423,9.998,6.139,18.037,14.133,24.128
c18.645,14.084,33.072,31.312,43.25,51.678c10.184,20.364,15.27,42.065,15.27,65.091c0,19.801-3.854,38.688-11.561,56.678
c-7.706,17.987-18.13,33.544-31.265,46.679c-13.135,13.131-28.688,23.551-46.678,31.261c-17.987,7.71-36.878,11.57-56.673,11.57
c-19.792,0-38.684-3.86-56.671-11.57c-17.989-7.71-33.547-18.13-46.682-31.261c-13.129-13.135-23.551-28.691-31.261-46.679
c-7.708-17.99-11.563-36.877-11.563-56.678c0-23.026,5.092-44.724,15.274-65.091c10.183-20.364,24.601-37.591,43.253-51.678
c7.994-6.095,12.703-14.133,14.133-24.128c1.427-9.989-0.903-18.986-6.995-26.979c-5.901-8.182-13.844-12.941-23.839-14.273
c-9.994-1.332-19.085,1.049-27.268,7.139c-27.792,20.745-49.344,46.442-64.669,77.084c-15.324,30.646-22.983,63.288-22.983,97.927
c0,29.697,5.806,58.054,17.415,85.082c11.613,27.028,27.218,50.34,46.826,69.948c19.602,19.603,42.919,35.215,69.949,46.815
c27.028,11.615,55.388,17.426,85.08,17.426c29.693,0,58.052-5.811,85.081-17.426c27.031-11.604,50.347-27.213,69.952-46.815
c19.602-19.602,35.207-42.92,46.818-69.948s17.412-55.392,17.412-85.082C456.809,221.174,449.16,188.532,433.836,157.887z"/>
</svg>
</span>`,
HB_GRAPHICS_SWITCH_OFF_MESSEAGE:
`You are going to <span style="color: Lime;"> turn of </span> game graphics
<br><span style="color: DeepSkyBlue;">The game will restart automatically to apply the changes</span>
<br> <br> This mode disables the game's graphics and keeps only the essential script buttons active.
This significantly lowers the strain on your computer, which is perfect for running multiple accounts during long tasks like titanite mining.
<br>Click the same button again to <span style="color: Lime;">restore the graphics</span>
<br><br>`,
HB_GRAPHICS_SWITCH_ON_MESSEAGE:
`You are going to <span style="color: Lime;"> turn on </span> game graphics
<br><span style="color: DeepSkyBlue;">The game will restart automatically to apply the changes</span>
<br><br>`,
HB_DO_NOT_SHOW_AGAIN: 'Don\'t show this window again',
};
i18nLangData['en'] = Object.assign(i18nLangData['en'], i18nLangDataEn);
const i18nLangDataRu = {
BATTLE_RECALCULATION: 'Предрасчет боя',
HIDE_BUTTONS: 'Скрыть кнопки',
HIDE_BUTTONS_TITLE: 'Настройки кнопок',
HB_SELECT_BUTTONS:
`Выберите кнопки, которые нужно скрыть <br>
<span style="color: DeepSkyBlue;"> Для применения настроек игра будет перезагружена автоматически </span>`,
HB_APPLY: 'Применить',
HB_OTHERS_SETTINGS:
`<span style="color: White;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="currentColor" style="width: 22px;height: 22px;"><path d="M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"></path></svg>
</span>`,
HB_GRAPHICS_SWITCH_ON_TITLE: 'Включить графику игры',
HB_GRAPHICS_SWITCH_OFF_TITLE: 'Выключить графику игры',
HB_GRAPHICS_SWITCH_OFF:
`<span style="color: Lime;">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="22px" height="22px" viewBox="0 0 512 512" fill="currentColor" xml:space="preserve">
<path d="M237.545,255.816c9.899,0,18.468-3.609,25.696-10.848c7.23-7.229,10.854-15.799,10.854-25.694V36.547
c0-9.9-3.62-18.464-10.854-25.693C256.014,3.617,247.444,0,237.545,0c-9.9,0-18.464,3.621-25.697,10.854
c-7.233,7.229-10.85,15.797-10.85,25.693v182.728c0,9.895,3.617,18.464,10.85,25.694
C219.081,252.207,227.648,255.816,237.545,255.816z"/>
<path d="M433.836,157.887c-15.325-30.642-36.878-56.339-64.666-77.084c-7.994-6.09-17.035-8.47-27.123-7.139
c-10.089,1.333-18.083,6.091-23.983,14.273c-6.091,7.993-8.418,16.986-6.994,26.979c1.423,9.998,6.139,18.037,14.133,24.128
c18.645,14.084,33.072,31.312,43.25,51.678c10.184,20.364,15.27,42.065,15.27,65.091c0,19.801-3.854,38.688-11.561,56.678
c-7.706,17.987-18.13,33.544-31.265,46.679c-13.135,13.131-28.688,23.551-46.678,31.261c-17.987,7.71-36.878,11.57-56.673,11.57
c-19.792,0-38.684-3.86-56.671-11.57c-17.989-7.71-33.547-18.13-46.682-31.261c-13.129-13.135-23.551-28.691-31.261-46.679
c-7.708-17.99-11.563-36.877-11.563-56.678c0-23.026,5.092-44.724,15.274-65.091c10.183-20.364,24.601-37.591,43.253-51.678
c7.994-6.095,12.703-14.133,14.133-24.128c1.427-9.989-0.903-18.986-6.995-26.979c-5.901-8.182-13.844-12.941-23.839-14.273
c-9.994-1.332-19.085,1.049-27.268,7.139c-27.792,20.745-49.344,46.442-64.669,77.084c-15.324,30.646-22.983,63.288-22.983,97.927
c0,29.697,5.806,58.054,17.415,85.082c11.613,27.028,27.218,50.34,46.826,69.948c19.602,19.603,42.919,35.215,69.949,46.815
c27.028,11.615,55.388,17.426,85.08,17.426c29.693,0,58.052-5.811,85.081-17.426c27.031-11.604,50.347-27.213,69.952-46.815
c19.602-19.602,35.207-42.92,46.818-69.948s17.412-55.392,17.412-85.082C456.809,221.174,449.16,188.532,433.836,157.887z"/>
</svg>
</span>`,
HB_GRAPHICS_SWITCH_ON:
`<span style="color: Silver;">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="22px" height="22px" viewBox="0 0 512 512" fill="currentColor" xml:space="preserve">
<path d="M237.545,255.816c9.899,0,18.468-3.609,25.696-10.848c7.23-7.229,10.854-15.799,10.854-25.694V36.547
c0-9.9-3.62-18.464-10.854-25.693C256.014,3.617,247.444,0,237.545,0c-9.9,0-18.464,3.621-25.697,10.854
c-7.233,7.229-10.85,15.797-10.85,25.693v182.728c0,9.895,3.617,18.464,10.85,25.694
C219.081,252.207,227.648,255.816,237.545,255.816z"/>
<path d="M433.836,157.887c-15.325-30.642-36.878-56.339-64.666-77.084c-7.994-6.09-17.035-8.47-27.123-7.139
c-10.089,1.333-18.083,6.091-23.983,14.273c-6.091,7.993-8.418,16.986-6.994,26.979c1.423,9.998,6.139,18.037,14.133,24.128
c18.645,14.084,33.072,31.312,43.25,51.678c10.184,20.364,15.27,42.065,15.27,65.091c0,19.801-3.854,38.688-11.561,56.678
c-7.706,17.987-18.13,33.544-31.265,46.679c-13.135,13.131-28.688,23.551-46.678,31.261c-17.987,7.71-36.878,11.57-56.673,11.57
c-19.792,0-38.684-3.86-56.671-11.57c-17.989-7.71-33.547-18.13-46.682-31.261c-13.129-13.135-23.551-28.691-31.261-46.679
c-7.708-17.99-11.563-36.877-11.563-56.678c0-23.026,5.092-44.724,15.274-65.091c10.183-20.364,24.601-37.591,43.253-51.678
c7.994-6.095,12.703-14.133,14.133-24.128c1.427-9.989-0.903-18.986-6.995-26.979c-5.901-8.182-13.844-12.941-23.839-14.273
c-9.994-1.332-19.085,1.049-27.268,7.139c-27.792,20.745-49.344,46.442-64.669,77.084c-15.324,30.646-22.983,63.288-22.983,97.927
c0,29.697,5.806,58.054,17.415,85.082c11.613,27.028,27.218,50.34,46.826,69.948c19.602,19.603,42.919,35.215,69.949,46.815
c27.028,11.615,55.388,17.426,85.08,17.426c29.693,0,58.052-5.811,85.081-17.426c27.031-11.604,50.347-27.213,69.952-46.815
c19.602-19.602,35.207-42.92,46.818-69.948s17.412-55.392,17.412-85.082C456.809,221.174,449.16,188.532,433.836,157.887z"/>
</svg>
</span>`,
HB_GRAPHICS_SWITCH_OFF_MESSEAGE:
`Вы собираетесь <span style="color: Lime;">отключить</span> графику игры
<br><span style="color: DeepSkyBlue;"> Для применения изменений игра будет перезагружена автоматически </span>
<br> <br> Отключается визуальная часть игры, остаются активными только кнопки скрипта.
Это значительно снижает нагрузку на компьютер, что особенно полезно при копании титанита несколькими аккаунтами одновременно.
<br>Чтобы <span style="color: Lime;">включить графику </span> обратно, просто нажмите на эту же кнопку.
<br><br>`,
HB_GRAPHICS_SWITCH_ON_MESSEAGE:
`Вы собираетесь <span style="color: Lime;">включить</span> графику игры
<br><span style="color: DeepSkyBlue;"> Для применения изменений игра будет перезагружена автоматически </span>
<br><br>`,
HB_DO_NOT_SHOW_AGAIN: `Больше не показывать это сообщение`,
};
i18nLangData['ru'] = Object.assign(i18nLangData['ru'], i18nLangDataRu);
document.addEventListener('DOMContentLoaded', () => {
const style = document.createElement('style');
style.innerText = `.scriptMenu_otherButton {width: 114px;}`;
document.head.appendChild(style);
});
//Для включения / отключения графики
let buttonState = null;
let graphicsEnabled = true;
let doNotShowAgain = false;
const buttonStateString = localStorage.getItem('buttonState');
if (buttonStateString) {
buttonState = JSON.parse(buttonStateString);
graphicsEnabled = buttonState.graphicsEnabled;
doNotShowAgain = buttonState.doNotShowAgain;
}
//Выключить графику при старте игры
if (!graphicsEnabled) {
turnOffGraphics();
}
//Список расширений
let versionHWHBestDungeonExt = '0.0.23';
if (extintionsList) {
for (let ext of extintionsList) {
if (ext.name == 'HWHBestDungeonExt') {
versionHWHBestDungeonExt = ext.ver;
}
}
}
//Замена кнопки "Разное"
buttons['doOthers'] = {
isCombine: true,
combineList: [
{
get name() {
return I18N('OTHERS');
},
get title() {
return I18N('OTHERS_TITLE');
},
onClick: async function () {
await makeListOfButtons();
},
classes: ['scriptMenu_otherButton']
},
/*{
get name() {
if (scriptInfo.version >= 2.402){
return I18N('HB_OTHERS_SETTINGS');
}
return '<span style="color: White; font-size: 28px;">⚙</span>';
},
get title() {
return I18N('HIDE_BUTTONS_TITLE');
},
onClick: async function () {
await selectButtons();
},
},*/
{
get name() {
if (graphicsEnabled) {
if (compareVersions(scriptInfo.version, '2.400') >= 0 && compareVersions(versionHWHBestDungeonExt, '0.0.23') >= 0) {
return I18N('HB_GRAPHICS_SWITCH_OFF');
}
return '<span style="color: Lime; font-size: 25px;">⏻</span>';
}
if (compareVersions(scriptInfo.version, '2.400') >= 0 && compareVersions(versionHWHBestDungeonExt, '0.0.23') >= 0) {
return I18N('HB_GRAPHICS_SWITCH_ON');
}
return '<span style="color: Silver; font-size: 25px;">⏻</span>';
},
get title() {
if (graphicsEnabled) {
return I18N('HB_GRAPHICS_SWITCH_OFF_TITLE');
}
return I18N('HB_GRAPHICS_SWITCH_ON_TITLE');
},
onClick: async function () {
await onClicGraphicsSwitchButton();
}
},
],
};
//Добавить кнопку в Разное
othersPopupButtons.unshift({
get msg() {
if (compareVersions(scriptInfo.version, '2.400') >= 0) {
return I18N('HB_OTHERS_SETTINGS');
}
return '<span style="color: White; font-size: 28px;">⚙</span>';
},
get title() {
return I18N('HIDE_BUTTONS_TITLE');
},
result:async function () {
await selectButtons();
},
color: 'green',
});
async function makeListOfButtons() {
let { othersPopupButtons } = HWHData;
let hideSelectedButtons = null;
const hideSelectedButtonsString = localStorage.getItem('hideSelectedButtons');
if (hideSelectedButtonsString) {
hideSelectedButtons = JSON.parse(hideSelectedButtonsString);
}
let buttonLanguage = null;
const buttonLanguageString = localStorage.getItem('buttonLanguage');
if (buttonLanguageString) {
buttonLanguage = JSON.parse(buttonLanguageString);
}
let changedGameLanguage = false;
if (buttonLanguage != I18N('HIDE_BUTTONS')) {
changedGameLanguage = true;
}
let newOthersPopupButtons = othersPopupButtons;
if (hideSelectedButtons && !changedGameLanguage) {
for (let button of hideSelectedButtons) {
if (button.checked == true) {
newOthersPopupButtons = newOthersPopupButtons.filter((e) => e.msg != button.name);
}
}
}
newOthersPopupButtons.push({ result: false, isClose: true });
const answer = await popup.confirm(`${I18N('CHOOSE_ACTION')}:`, newOthersPopupButtons);
if (typeof answer === 'function') {
answer();
}
}
async function selectButtons() {
let hideSelectedButtons = null;
const hideSelectedButtonsString = localStorage.getItem('hideSelectedButtons');
if (hideSelectedButtonsString) {
hideSelectedButtons = JSON.parse(hideSelectedButtonsString)
}
let buttonLanguage = null;
const buttonLanguageString = localStorage.getItem('buttonLanguage');
if (buttonLanguageString) {
buttonLanguage = JSON.parse(buttonLanguageString)
}
let changedGameLanguage = false;
if (buttonLanguage != I18N('HIDE_BUTTONS')) {
changedGameLanguage = true;
}
//Пересобираем список чекбоксов
if (hideSelectedButtons && !changedGameLanguage){
let newSelectedButtons = [];
for (let button of othersPopupButtons) {
if (!button.result || button.title == I18N('HIDE_BUTTONS_TITLE')) {
continue;
}
let newButton = true;
for (let b of hideSelectedButtons) {
if (button.msg == b.name) {
newSelectedButtons.push({
name:button.msg,
label: button.msg,
title: button.title,
checked: b.checked,
});
newButton = false;
break;
}
}
if (newButton) {
newSelectedButtons.push({
name:button.msg,
label: button.msg,
title: button.title,
checked: false,
});
}
}
hideSelectedButtons = newSelectedButtons;
}
//Впервые собираем или пересобираем все чекбоксы если изменен язык игры
if (!hideSelectedButtons || changedGameLanguage){
hideSelectedButtons = [];
for (let button of othersPopupButtons) {
if (!button.result || button.title == I18N('HIDE_BUTTONS_TITLE')) {
continue;
}
hideSelectedButtons.push({
name:button.msg,
label: button.msg,
title: button.title,
checked: false,
});
}
}
let answer = await popup.confirm(
I18N('HB_SELECT_BUTTONS'),
[
{ msg: I18N('HB_APPLY'), result: true, color: 'green' },
{ msg: I18N('BTN_CANCEL'), result: false, isCancel: true, color: 'red' },
],
hideSelectedButtons
);
if (!answer) {
return;
}
const taskList = popup.getCheckBoxes();
for (let button of taskList) {
hideSelectedButtons[taskList.indexOf(button)].checked = button.checked;
}
localStorage.setItem('hideSelectedButtons', JSON.stringify(hideSelectedButtons));
localStorage.setItem('buttonLanguage', JSON.stringify(I18N('HIDE_BUTTONS')));
//Перезагрузить игру
location.reload();
}
async function onClicGraphicsSwitchButton() {
//Если галочка "не показывать это" не выбрана
if (!doNotShowAgain) {
//Показать предупреждающее окно
let result = await showWarningWindow();
if(!result) {
return;
}
}
//Если графика включена, то выключаем
if (graphicsEnabled) {
graphicsEnabled = false;
//Если выключена, то включаем
} else {
graphicsEnabled = true;
}
buttonState = {graphicsEnabled :graphicsEnabled, doNotShowAgain: doNotShowAgain};
localStorage.setItem('buttonState', JSON.stringify(buttonState));
//Перезагрузить игру
location.reload();
}
async function showWarningWindow() {
let checkboxDoNotShowAgain = [];
checkboxDoNotShowAgain.push({
name: I18N('HB_DO_NOT_SHOW_AGAIN'),
label: I18N('HB_DO_NOT_SHOW_AGAIN'),
checked: false,
});
let massege = '';
if(graphicsEnabled)
{
massege = I18N('HB_GRAPHICS_SWITCH_OFF_MESSEAGE')
} else {
massege = I18N('HB_GRAPHICS_SWITCH_ON_MESSEAGE')
}
let answer = await popup.confirm(
massege,
[
{ msg: I18N('HB_APPLY'), result: true, color: 'green' },
{ msg: I18N('BTN_CANCEL'), result: false, isCancel: true, color: 'red' },
],
checkboxDoNotShowAgain
);
if (!answer) {
return false;
}
const taskList = popup.getCheckBoxes();
for (let button of taskList) {
if(button.checked) {
doNotShowAgain = true;
}
}
return true;
}
function turnOffGraphics(){
// Контроль FPS
const oldRequestAnimationFrame = this.requestAnimationFrame;
this.requestAnimationFrame = async function (e) {
const delay = 100000000;
await new Promise((e) => setTimeout(e, delay));
};
}
function compareVersions(version1, version2) {
const v1 = version1.split('.').map(Number);
const v2 = version2.split('.').map(Number);
const maxLength = Math.max(v1.length, v2.length);
for (let i = 0; i < maxLength; i++) {
const num1 = v1[i] || 0;
const num2 = v2[i] || 0;
if (num1 > num2) return 1;
if (num1 < num2) return -1;
}
return 0;
}
})();