Linescript controls for agma.io by Wynell
当前为
// ==UserScript==
// @name Agma.io linesplit controls
// @namespace eeWynell#4980
// @version 1.1
// @description Linescript controls for agma.io by Wynell
// @author eeWynell#4980
// @match https://agma.io/
// @grant none
// ==/UserScript==
(function() {
'use strict';
let controls = {
getEnabled() {
return localStorage.getItem("linesplit_controls_enabled") == "true";
},
setEnabled(bool) {
localStorage.setItem("linesplit_controls_enabled", bool)
},
generatePoint(x, y) {
let div = document.createElement("DIV");
div.style.border = "2px solid white";
div.style.width = "10px";
div.style.height = "10px";
div.style.transform = "translate(-50%, -50%)";
div.style.position = "fixed";
div.style.borderRadius = "50%";
div.style.left = `${x}px`;
div.style.top = `${y}px`;
div.style.zIndex = 10 ** 6;
return div;
},
generateWrapper(points) {
let div = document.createElement("DIV");
div.id = "linesplit-controls";
div.style.display = this.getEnabled() ? "block" : "none";
for (let point of points) div.appendChild(point);
return div;
},
getPoints() {
let [w, h] = [window.innerWidth, window.innerHeight];
return [
this.generatePoint(w / 2, 0),
this.generatePoint(w, h / 2),
this.generatePoint(w / 2, h),
this.generatePoint(0, h / 2)
];
},
generateSetting(name, on_change) {
let div = document.createElement("DIV");
div.className = "role-setting";
div.id = "linesplit-controls-enabled";
let label = document.createElement("LABEL");
let checkbox = document.createElement("INPUT");
checkbox.type = "checkbox";
checkbox.onchange = on_change;
let span = document.createElement("SPAN");
span.innerHTML = ` ${name}`;
let br = document.createElement("BR");
label.appendChild(checkbox);
label.appendChild(span);
div.appendChild(label);
div.appendChild(br);
return div;
},
updateControls() {
let points = this.getPoints();
let wrapper = document.getElementById("linesplit-controls");
console.log(wrapper);
document.body.replaceChild(this.generateWrapper(points), wrapper);
},
checkboxHandler({ target: { checked } }) {
this.setEnabled(checked);
let wrapper = document.getElementById("linesplit-controls");
wrapper.style.display = checked ? "block" : "none";
},
showRoleSettings() {
if (document.getElementById("linesplit-controls-enabled")) return;
let role_settings = document.getElementById("roleSettings");
role_settings.style.display = "block";
role_settings.appendChild(this.generateSetting("Linesplit controls", this.checkboxHandler.bind(this)));
},
createControls() {
let points = this.getPoints();
document.body.appendChild(this.generateWrapper(points));
let [settings_tab] = document.getElementsByClassName("dash-tab-settings");
settings_tab.addEventListener("click", this.showRoleSettings.bind(this));
}
};
window.addEventListener("resize", controls.updateControls.bind(controls));
controls.createControls();
})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址