Advertisement
DayDun

OWOP Brush Script

Sep 9th, 2017
3,196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         OWOP Brush Size
  3. // @version      1
  4. // @description  Adds brush size to OWOP
  5. // @author       DayDun
  6. // @match        http://ourworldofpixels.com/beta/*
  7. // ==/UserScript==
  8.  
  9. window.addEventListener("load", function() {
  10.     WorldOfPixels.events.onOnce("tools_rendered", function() {
  11.         var brushSize = 1;
  12.  
  13.         var slider = document.createElement("input");
  14.         slider.type = "number";
  15.         slider.min = 1;
  16.         slider.style.position = "absolute";
  17.         slider.style.top = "280px";
  18.         slider.style.left = "5px";
  19.         slider.style.width = "50px";
  20.         slider.style.boxSizing = "border-box";
  21.         slider.value = 1;
  22.         slider.addEventListener("input", function() {
  23.             brushSize = parseFloat(this.value) || 1;
  24.         });
  25.         document.body.appendChild(slider);
  26.  
  27.         WorldOfPixels.tools[0].click = function(x, y, buttons, isDrag) {
  28.             var tileX = this.camera.x + (x / this.camera.zoom);
  29.             var tileY = this.camera.y + (y / this.camera.zoom);
  30.             /* White color if right clicking */
  31.             var color = buttons === 2 ? [255, 255, 255] : this.palette[this.paletteIndex];
  32.             var b = brushSize / 2 - 0.5;
  33.             for (var x=Math.floor(tileX - b); x<Math.ceil(tileX + b + 0.01); x++) {
  34.                 for (var y=Math.floor(tileY - b); y<Math.ceil(tileY + b + 0.01); y++) {
  35.                     var pixel = this.getPixel(x, y);
  36.                     if (pixel !== null && !(color[0] === pixel[0] && color[1] === pixel[1] && color[2] === pixel[2])) {
  37.                         switch(buttons) {
  38.                             case 1:
  39.                             case 2:
  40.                                 this.undoHistory.push([x, y, [pixel[0], pixel[1], pixel[2]]]);
  41.                                 this.net.updatePixel(x, y, color);
  42.                                 break;
  43.                             case 4:
  44.                                 this.addPaletteColor(pixel);
  45.                                 break;
  46.                         }
  47.                     }
  48.                 }
  49.             }
  50.         }.bind(WorldOfPixels);
  51.  
  52.         WorldOfPixels.updateClientFx = function(force) {
  53.             var fxtileX = this.clientFx.x;
  54.             var fxtileY = this.clientFx.y;
  55.             var tileX   = this.mouse.worldX / 16;
  56.             var tileY   = this.mouse.worldY / 16;
  57.             var rgb = this.palette[this.paletteIndex];
  58.             rgb = rgb[0] << 16 | rgb[1] << 8 | rgb[2];
  59.             var tool = this.tools[this.toolSelected];
  60.             if (fxtileX !== tileX || fxtileY !== tileY || force) {
  61.                 var valid = this.validMousePos(tileX, tileY);
  62.                 if (valid) {
  63.                     this.clientFx.update(tool.fxType, tileX, tileY, {color: rgb});
  64.                 } else {
  65.                     this.clientFx.update(-1, tileX, tileY, {color: rgb});
  66.                 }
  67.                 this.renderer.requestRender(1);
  68.                 return true;
  69.             }
  70.             return false;
  71.         }.bind(WorldOfPixels);
  72.  
  73.         WorldOfPixels.renderer.renderFx = function(fx) {
  74.             var camx = this.camera.x;
  75.             var camy = this.camera.y;
  76.             var context = this.renderer.animcontext;
  77.             var cnvs = context.canvas;
  78.             var time = this.renderer.time;
  79.             var zoom = this.camera.zoom;
  80.             var fl = Math.floor;
  81.  
  82.             var fxx = fl(fx.x * zoom) - camx * zoom;
  83.             var fxy = fl(fx.y * zoom) - camy * zoom;
  84.  
  85.             if ((fxx < -zoom || fxy < -zoom
  86.                  || fxx > cnvs.width || fxy > cnvs.height) && fx.type != 3) {
  87.                 return true;
  88.             }
  89.  
  90.             switch(fx.type) {
  91.                 case 0:
  92.                     context.globalAlpha = 0.8;
  93.                     context.strokeStyle = fx.options.colorhex;
  94.                     if (fx == WorldOfPixels.clientFx) {
  95.                         context.strokeRect((Math.round(fx.x - brushSize / 2) - camx) * zoom, (Math.round(fx.y - brushSize / 2) - camy) * zoom, zoom * brushSize, zoom * brushSize);
  96.                     } else {
  97.                         context.strokeRect(fxx, fxy, zoom, zoom);
  98.                     }
  99.                     break;
  100.                 case 1:
  101.                     var alpha = 1 - (time - fx.options.time) / 1000;
  102.                     if (alpha <= 0) {
  103.                         fx.delete();
  104.                         break;
  105.                     }
  106.                     context.globalAlpha = alpha;
  107.                     context.strokeStyle = fx.options.colorhex;
  108.                     context.strokeRect(fxx, fxy, zoom, zoom);
  109.                     return false;
  110.                 case 3:
  111.                     var alpha = 1 - (time - fx.options.time) / 1000;
  112.                     if (alpha <= 0) {
  113.                         fx.delete();
  114.                         break;
  115.                     }
  116.                     context.globalAlpha = alpha;
  117.                     context.strokeStyle = "#000000";
  118.                     context.strokeRect((fl(fx.x / 16) * 16 - camx) * zoom,
  119.                                        (fl(fx.y / 16) * 16 - camy) * zoom,
  120.                                        zoom * 16, zoom * 16);
  121.                     return false;
  122.             }
  123.             return true;
  124.         }.bind(WorldOfPixels);
  125.     });
  126. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement