Agma.io linesplit controls

Linescript controls for agma.io by Wynell

目前為 2020-06-02 提交的版本,檢視 最新版本

// ==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或关注我们的公众号极客氢云获取最新地址