// ==UserScript==
// @name OWOP Image To Pixel
// @match *.ourworldofpixels.com/*
// @description Pinta a Imagem esolhida dentro do OWOP
// @author Pedro Henrique
// @version 1.5
// @namespace https://greasyfork.org/users/831014
// @icon https://www.google.com/s2/favicons?domain=ourworldofpixels.com
// ==/UserScript==
var x = 0;
var y = 0;
var image = "";
var delay = 50;
var pointpaint = false;
var alphacheck = true;
var running;
function run()
{
console.log(image);
var eae = image.split(';');
var eaelength = eae.length;
var totalsize = [parseInt(eae[eaelength-7]),parseInt(eae[eaelength-6])];
running = setInterval(function() {
var iposX = OWOP.mouse.tileX-x;
var iposY = OWOP.mouse.tileY-y;
var currentpos = ((iposX+1) + (totalsize[0] * iposY))+iposY
if (pointpaint == true)
{
if (currentpos < 0 || currentpos > eaelength)
{
currentpos = 1
}
}
else
{
currentpos = 1
}
loop:
for (var i = currentpos; i < eae.length; i++) {
var x1 = x + parseInt(eae[(i*6)-6]);
var y1 = y + parseInt(eae[(i*6)-5]);
var red = parseInt(eae[(i*6)-4]);
var green = parseInt(eae[(i*6)-3]);
var blue = parseInt(eae[(i*6)-2]);
var alpha = parseInt(eae[(i*6)-1]);
if (alphacheck == true && alpha < 127)
{
red = OWOP.world.getPixel(x1,y1)[0];
green = OWOP.world.getPixel(x1,y1)[1];
blue = OWOP.world.getPixel(x1,y1)[2];
}
if (OWOP.world.getPixel(x1,y1) != null && OWOP.world.getPixel(x1,y1)[0] != red && OWOP.world.getPixel(x1, y1)[1] != green && OWOP.world.getPixel(x1, y1)[2] != blue)
{
if(x1<(OWOP.mouse.tileX+30) && x1>(OWOP.mouse.tileX-30) && y1>(OWOP.mouse.tileY-30) && y1<(OWOP.mouse.tileY+30))
{
OWOP.world.setPixel(x1, y1, [red, green, blue], false)
break loop;
}
}
}
}, delay);
}
function openSeekbarWindow() {
OWOP.windowSys.addWindow(new OWOP.windowSys.class.window('Colocar Imagem em pixel', {}, function(win) {
win.container.title = 'Pintar a Imagem';
win.container.style.height = 'auto';
win.container.style.width = '100px';
win.container.style.overflow = 'hidden';
win.addObj(document.createTextNode('Escolher Imagem'));
win.addObj(OWOP.util.mkHTML('div',{}));
var imagem = OWOP.util.mkHTML('img', {
id:'imagem',
width:32,
height:32,
})
win.addObj(imagem);
var escolherimagem = OWOP.util.mkHTML('input', {
id: 'imageminput',
type: 'file',
oninput: function(evt) {
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onloadend = async function (e) {
var img = new Image();
document.getElementById("imagem").src = e.target.result;
img.src = await e.target.result;
console.log(img.width);
console.log(img.height);
console.log(input.files[0]);
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var context = canvas.getContext('2d');
context.drawImage(img, 0, 0, img.width, img.height);
image = "";
for(var v = 0;v<img.height;v++)
{
for (var i = 0;i<img.width;i++)
{
var pixelData = context.getImageData(i, v, 1, 1).data;
let code = i + ";" + v + ";" + pixelData[0] +";"+pixelData[1]+";"+pixelData[2]+";"+pixelData[3]+";";
image += code.toString();
}
}
// console.log(image);
}
reader.readAsDataURL(input.files[0]);
}
}
readURL(this)
}
});
win.addObj(escolherimagem);
win.addObj(document.createTextNode('X : '));
var inputX = OWOP.util.mkHTML('input', {
id: 'Xinput',
oninput: function() {
x = parseInt(this.value);
}
});
win.addObj(inputX);
win.addObj(document.createTextNode('Y : '));
var inputY = OWOP.util.mkHTML('input', {
id: 'Yinput',
oninput: function() {
y = parseInt(this.value);
}
});
win.addObj(inputY);
var delaytext = win.addObj(document.createTextNode('Delay : '));
var delayinput = OWOP.util.mkHTML('input', {
id: 'delayinput',
type: 'range',
min: 1, max: 500,
oninput: function() {
delay = parseInt(this.value);
delaytext.nodeValue = "Delay : " + delay
}
});
win.addObj(delayinput);
win.addObj(document.createTextNode('Point Paint'));
var pointpaintcheck = OWOP.util.mkHTML('input', {
id: 'pointpaintcheck',
type: 'checkbox',
oninput: function() {
pointpaint = this.checked;
}
});
win.addObj(pointpaintcheck);
win.addObj(OWOP.util.mkHTML('div',{}));
win.addObj(document.createTextNode('Ignore Alpha (.png)'));
var alphainput = OWOP.util.mkHTML('input', {
id: 'alphacheck',
type: 'checkbox',
checked:'true',
oninput: function() {
alphacheck = this.checked;
}
});
win.addObj(alphainput);
win.addObj(OWOP.util.mkHTML('div',{}));
var button = OWOP.util.mkHTML('button', {
id: 'Ativacao',
innerHTML: 'Ativar',
onclick: function() {
if (document.getElementById("Xinput").value != "") {
if (document.getElementById("Yinput").value != "") {
run();
}
}
}
});
win.addObj(button);
var desativar = OWOP.util.mkHTML('button', {
id: 'Desativacao',
innerHTML: 'Desativar',
onclick: function() {
clearInterval(running);
}
});
win.addObj(desativar);
document.addEventListener('keydown', (event) => {
const keyName = event.key;
if (keyName == "e" || keyName == "E")
{
document.getElementById("Xinput").value = OWOP.mouse.tileX
document.getElementById("Yinput").value = OWOP.mouse.tileY
x=OWOP.mouse.tileX
y=OWOP.mouse.tileY
}
});
}).move(window.innerWidth - 500, 32));
}
if (typeof OWOP != 'undefined') openSeekbarWindow();
window.addEventListener('load', function() {
setTimeout(openSeekbarWindow, 1234);
});