66 lines
2.4 KiB
JavaScript
66 lines
2.4 KiB
JavaScript
import { getUIGap, getVar } from "./gameInterface.js";
|
|
import { getSettings } from "./settings.js";
|
|
|
|
export const keybindFunctions = {
|
|
setAbsolute: () => {},
|
|
setRelative: () => {},
|
|
repaintAttackPercentageBar: () => {}
|
|
};
|
|
export const keybindHandler = key => {
|
|
const keybindData = getSettings().attackPercentageKeybinds.find(keybind => keybind.key === key);
|
|
if (keybindData === undefined) return false;
|
|
if (getVar("gameState") !== 0) executeKeybind(keybindData);
|
|
return true;
|
|
};
|
|
function executeKeybind(keybind) {
|
|
if (keybind.type === "absolute") keybindFunctions.setAbsolute(keybind.value);
|
|
else keybindFunctions.setRelative(keybind.value);
|
|
keybindFunctions.repaintAttackPercentageBar();
|
|
}
|
|
|
|
// mobile keybinds (keybind buttons)
|
|
|
|
let canvas;
|
|
let width = 0;
|
|
let height = 0;
|
|
const maxCount = 6;
|
|
|
|
export const mobileKeybinds = {
|
|
setSize: (w, h, mainCanvas) => {
|
|
if (getSettings().keybindButtons !== true) return;
|
|
width = w;
|
|
height = h;
|
|
|
|
// redraw
|
|
canvas = document.createElement("canvas");
|
|
canvas.width = w;
|
|
canvas.height = h;
|
|
const ctx = canvas.getContext("2d");
|
|
const fontName = mainCanvas.font.split("px ", 2)[1];
|
|
ctx.font = "bold " + h / 2 + "px " + fontName;
|
|
ctx.textAlign = "center";
|
|
ctx.textBaseline = "middle";
|
|
|
|
const keybinds = getSettings().attackPercentageKeybinds.slice(0, maxCount);
|
|
const gap = getUIGap() / 4;
|
|
const buttonWidth = (w - gap * (maxCount - 1)) / maxCount;
|
|
keybinds.forEach((keybind, i) => {
|
|
ctx.fillStyle = "rgba(0, 0, 0, 0.8)";
|
|
ctx.fillRect(i * (buttonWidth + gap), 0, buttonWidth, h);
|
|
ctx.fillStyle = "white";
|
|
const label = keybind.type === "absolute" ? (keybind.value * 100).toFixed() + "%" : "x " + Math.round(keybind.value * 100) / 100;
|
|
ctx.fillText(label, (i + 0.5) * (buttonWidth + gap), h / 2);
|
|
});
|
|
},
|
|
click: (xRelative) => {
|
|
if (xRelative < 0 || xRelative > width) return false;
|
|
const keybinds = getSettings().attackPercentageKeybinds;
|
|
const index = Math.floor(xRelative / width * maxCount);
|
|
if (index >= keybinds.length) return false;
|
|
executeKeybind(keybinds[index]);
|
|
return true;
|
|
},
|
|
draw: (mainCanvas, x, y) => {
|
|
mainCanvas.drawImage(canvas, x, y - (height + getUIGap() / 4));
|
|
}
|
|
} |