sandboxels/mods/debugRework.js

170 lines
3.9 KiB
JavaScript
Raw Normal View History

2023-11-21 15:36:04 -05:00
let cssForDebug = `
#debugParent {
display: none;
}
#debugXButton {
position: absolute;
right: 0px;
top: 0px;
font-size: 2em;
background-color: rgb(100, 33, 33);
padding:5px;
text-align:center;
border: 1px solid #ffffff;
z-index: 12;
}
#debugXButton:hover {
background-color: rgb(200, 33, 33);
}
#debugMenuTitle {
position: absolute;
left: 175px;
font-size: 1.5em;
text-decoration: underline;
color: white;
}
#debugStats {
margin-top: 5px;
line-height: 1.5em;
color: white;
}
#debugLiveButton {
position: absolute;
left: 0px;
top: 0px;
font-size: 2em;
background-color: rgb(100, 33, 33);
padding:5px;
text-align:center;
border: 1px solid #ffffff;
z-index: 12;
}
#debugLiveButton.live {
background-color: #24fc03;
}
#debugLiveButton.live:hover {
background-color: #50ff36;
}
#debugStatList {
position: absolute;
border: 1px solid #ffffff;
left: 50%;
top: 5%;
transform: translate(-50%, 0%);
width: 95%;
height: 50%;
max-width: 700px;
padding: 10px;
background-color: rgb(31, 31, 31);
overflow-x: hidden;
z-index: 10;
}
`,
head = document.head || document.getElementsByTagName('head')[0],
styleElem = document.createElement('style');
2023-11-21 15:36:04 -05:00
head.appendChild(styleElem);
2023-11-21 15:36:04 -05:00
styleElem.type = 'text/css';
if (styleElem.styleSheet) {
styleElem.styleSheet.cssText = cssForDebug;
2023-11-21 15:36:04 -05:00
} else {
styleElem.appendChild(document.createTextNode(cssForDebug));
2023-11-21 15:36:04 -05:00
};
let debugMenu = document.createElement("div");
debugMenu.innerHTML = `
<div id="debugParent" style="display: none;">
<div id="debugStatList">
<button id="debugXButton" onclick="closeDebugUi()">X</button>
<button id="debugLiveButton" onclick="startDebugLive()">Live</button>
<span id="debugMenuTitle">
Debug Stats
</span>
<br><br>
<div id="debugStats">
No stats currently
</div>
</div>
</div>`
document.getElementById("gameDiv").appendChild(debugMenu);
var statChangeInterval;
let live = false;
let openedByClick = true;
let debugToggle = false;
var output;
var targetedPixel;
elements.debug = {
color: ["#b150d4", "#d1b74f"],
tool: function(pixel) {
startDebugUi(pixel);
},
maxSize: 1,
category: "tools"
}
function startDebugUi(pixel) {
if (debugToggle) return;
targetedPixel = pixel;
mouseIsDown = false;
shiftDown = false;
output = targetedPixel.element.toUpperCase() + " at x" + targetedPixel.x + ", y" + targetedPixel.y + ", tick: " + pixelTicks + `<br>`;
for (let i in targetedPixel) {
if (i !== "x" && i !== "y" && i !== "element") {
output += " " + i + ": " + targetedPixel[i] + `<br>`;
}
}
statChangeInterval = setInterval(statChange, 1000/tps);
document.getElementById("debugParent").style.display = "block";
document.getElementById("debugStats").innerHTML = output;
debugToggle = true;
setTimeout(() => {
openedByClick = false;
document.addEventListener('click', clickHandler);
2023-11-21 22:01:50 -05:00
}, 1000);
2023-11-21 15:36:04 -05:00
};
function closeDebugUi() {
if (!debugToggle) return;
openedByClick = true;
document.getElementById("debugParent").style.display = "none";
debugToggle = false;
document.removeEventListener('click', clickHandler);
clearInterval(statChangeInterval);
}
function clickHandler(event) {
const modParent = document.getElementById("debugParent");
if (event.target !== modParent && !modParent.contains(event.target)) {
closeDebugUi();
}
}
function startDebugLive() {
live = !live;
document.getElementById("debugLiveButton").classList.toggle("live");
}
function statChange() {
if (live == true) {
2023-11-21 18:44:01 -05:00
output = targetedPixel.element.toUpperCase() + " at x" + targetedPixel.x + ", y" + targetedPixel.y + ", tick: " + pixelTicks + `<br>`;
2023-11-21 15:36:04 -05:00
for (let i in targetedPixel) {
if (i !== "x" && i !== "y" && i !== "element") {
output += " " + i + ": " + targetedPixel[i] + `<br>`;
}
}
document.getElementById("debugStats").innerHTML = output;
}
}