Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Ctrl + Shift + C to open Console
- //--------------------------------
- //Then >>> Copy & Paste the code shown below to run the script
- //*JavaScript code used
- //--------------------------------
- OWOP.tool.addToolObject(new OWOP.tool.class("Text", OWOP.cursors.write, OWOP.fx.player.NONE, OWOP.RANK.NONE, function(tool) {
- var xPos = null;
- var yPos = null;
- var fonts = {};
- var font = null;
- var fontInput = new OWOP.windowSys.class.input("Choose Font", 955, "number", function(value) {
- var id = parseInt(value);
- if (id in fonts) {
- font = id;
- return;
- }
- var xhttp = new XMLHttpRequest();
- xhttp.addEventListener("load", function() {
- var source = xhttp.responseXML.body.children[2].innerHTML;
- var data = JSON.parse(source.match(/loadData\('(.+)'\)/)[1]);
- var meta = source.match(/drawSample\('',([0-9]+),(-?[0-9]+)\)/);
- data.letterspace = parseInt(meta[1]);
- data.monospacewidth = parseInt(meta[2]);
- fonts[id] = data;
- font = id;
- });
- xhttp.open("GET", "https://cors-anywhere.herokuapp.com/http://www.pentacom.jp/pentacom/bitfontmaker2/gallery/?id=" + id);
- xhttp.responseType = "document";
- xhttp.send();
- });
- var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
- chars += "¡¢£€¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
- chars += "ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž";
- tool.setFxRenderer(function (fx, ctx, time) {
- var x = fx.extra.player.x;
- var y = fx.extra.player.y;
- if (xPos !== null && yPos !== null) {
- x = xPos * 16;
- y = yPos * 16;
- }
- var fxx = (Math.floor(x / 16) - OWOP.camera.x) * OWOP.camera.zoom;
- var fxy = (Math.floor(y / 16) - OWOP.camera.y) * OWOP.camera.zoom;
- ctx.globalAlpha = 0.8;
- ctx.strokeStyle = fx.extra.player.htmlRgb;
- ctx.strokeRect(fxx, fxy, OWOP.camera.zoom, OWOP.camera.zoom * 12);
- return 0;
- });
- tool.setEvent("select", function() {
- OWOP.windowSys.addWindow(fontInput);
- });
- tool.setEvent("deselect", function() {
- font = null;
- });
- tool.setEvent("mousedown mousemove", function (mouse, event) {
- if (mouse.buttons === 1) {
- xPos = mouse.tileX;
- yPos = mouse.tileY;
- }
- });
- tool.setEvent("keydown", function() {return true;});
- tool.setEvent("keyup", function() {return true;});
- window.addEventListener("keypress", function(event) {
- if (font === null || xPos === null || yPos === null || ["INPUT", "TEXTAREA"].includes(document.activeElement.tagName)) {
- return;
- }
- var f = fonts[font];
- var letterSpacing = (f.letterspace / 64 | 0) - 1;
- var isMono = f.monospacewidth !== -1;
- if (event.which == 32) {
- xPos += isMono ? f.monospacewidth : 4 + letterSpacing;
- return;
- }
- var char = f[event.which];
- if (!char) {
- return;
- }
- var width = 0;
- for (var y=0; y<16; y++) {
- for (var x=0; x<16; x++) {
- if (char[y] & (1 << x) && x > width) width = x;
- }
- }
- var color = OWOP.player.palette[OWOP.player.paletteIndex];
- for (var y=0; y<16; y++) {
- for (var x=0; x<16; x++) {
- if (!(char[y] & (1 << x))) {
- continue;
- }
- OWOP.world.setPixel(xPos + x - 2, yPos + y, color);
- }
- }
- xPos += isMono ? f.monospacewidth : width + letterSpacing;
- });
- }));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement