NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name HordesMoveableUI // @namespace https://hordes.io/ // @version 1.0.5 // @description title says it all // @author NaNraptor // @match https://hordes.io/play // @grant none // @copyright 2019, NaNraptor // @license GPL-3.0-only // @icon https://i.ibb.co/Cz6VJQp/favicon.png // @updateURL https://openuserjs.org/meta/NaNraptor/HordesMoveableUI.user.js // ==/UserScript== /********** * * Currently supports pretty much all windows, except hot bar, party menu, and minimap * **********/ (function () { "use strict" let DOMdragEl, DOMdragElWindow, DOMdragElWindowRect document.addEventListener("mousedown", function (event) { if (!event) event = window.event; if (!event.path) event.path = (event.composedPath && event.composedPath()) for (let i = 0; i < event.path.length - 3 /*Dont need doc, html, body*/ ; ++i) { DOMdragEl = event.path[i] DOMdragElWindow = event.path[i + 1] DOMdragElWindowRect = DOMdragElWindow.getBoundingClientRect() if (DOMdragEl.classList.contains("titleframe")) { //we only drag if click is here if (DOMdragElWindow.classList.contains("window")) { //check.. just in case? there may be titleframes that are not within a window setNeccessaryStylesForThisAbominationToWork(DOMdragElWindow, DOMdragEl, DOMdragElWindowRect) drag(DOMdragEl, event) } } } }, false) })() let setNeccessaryStylesForThisAbominationToWork = function (parent, child, parentRect) { let totalPadding = 10 parent.style.height = child.innerText === "Inventory" ? "auto" : (parentRect.height - totalPadding) + "px" parent.style.width = (parentRect.width - totalPadding) + "px" parent.style.position = "fixed" parent.parentNode.style.margin = "0 0 0 0" parent.parentNode.style.transform = "none" parent.parentNode.parentNode.style.transform = "none" parent.style.top = ( /*savedPos.top*/ false || parentRect.top) + "px" parent.style.left = ( /*savedPos.left*/ false || parentRect.left) + "px" } let drag = function (elmnt, event) { var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0 //elmnt.onmousedown = dragMouseDown dragMouseDown(event) //mouse is alraedy down so just execute straight away function dragMouseDown(e) { e = e || window.event e.preventDefault() // get the mouse cursor position at startup: pos3 = e.clientX pos4 = e.clientY document.onmouseup = closeDragElement // call a function whenever the cursor moves: document.onmousemove = elementDrag } function elementDrag(e) { e = e || window.event e.preventDefault() // calculate the new cursor position: pos1 = pos3 - e.clientX pos2 = pos4 - e.clientY pos3 = e.clientX pos4 = e.clientY // set the element's new position: elmnt.parentNode.style.top = (elmnt.parentNode.offsetTop - pos2) + "px" elmnt.parentNode.style.left = (elmnt.parentNode.offsetLeft - pos1) + "px" } function closeDragElement() { /* stop moving when mouse button is released:*/ document.onmouseup = null document.onmousemove = null } }