diff --git a/PressStart2P-License-OFL.txt b/PressStart2P-License-OFL.txt new file mode 100644 index 00000000..70041e12 --- /dev/null +++ b/PressStart2P-License-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2012 The Press Start 2P Project Authors (cody@zone38.net), with Reserved Font Name "Press Start 2P". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/PressStart2P-Regular.ttf b/PressStart2P-Regular.ttf new file mode 100644 index 00000000..2442affb Binary files /dev/null and b/PressStart2P-Regular.ttf differ diff --git a/UwUify.js b/UwUify.js new file mode 100644 index 00000000..b37b6305 --- /dev/null +++ b/UwUify.js @@ -0,0 +1,87 @@ +document.body.style.backgroundImage = 'url("https://jayd-rubies.github.io/image/uwuify.png")'; +document.body.style.backgroundSize = 'cover'; +gameDiv.style.border = "1px solid #ffffff00"; +var statsbar = document.getElementById("stats"); +var stylesheetchangevar = document.querySelector("link[rel=stylesheet]"); +stylesheetchangevar.href = "mods/UwUstyle.css"; +statsbar.style.backgroundColor = 'transparent'; +window.addEventListener("load",function(){ + document.querySelectorAll(".categoryButton").forEach(e => { + e.style.backgroundColor = "#ffc0cb40"; + }) +}); +function drawCursor() { + canvas.style.backgroundColor = "transparent"; + var layerCtx = canvasLayers.gui.getContext('2d'); + var mouseOffset = Math.trunc(mouseSize/2); + var topLeft = [mousePos.x-mouseOffset,mousePos.y-mouseOffset]; + var bottomRight = [mousePos.x+mouseOffset,mousePos.y+mouseOffset]; + // Draw a square around the mouse + layerCtx.strokeStyle = "#ffc0cb"; + layerCtx.fillStyle = "#ffc0cb40"; + layerCtx.strokeRect(topLeft[0]*pixelSize,topLeft[1]*pixelSize,(bottomRight[0]-topLeft[0]+1)*pixelSize,(bottomRight[1]-topLeft[1]+1)*pixelSize); + layerCtx.beginPath(); + layerCtx.lineWidth = 3; + layerCtx.stroke(); + layerCtx.fillRect(topLeft[0]*pixelSize,topLeft[1]*pixelSize,(bottomRight[0]-topLeft[0]+1)*pixelSize,(bottomRight[1]-topLeft[1]+1)*pixelSize); + layerCtx.fill(); + // draw one transparent pixel in the center + if (settings.precision) { + layerCtx.fillStyle = "#ffc0cb80"; + layerCtx.fillRect(mousePos.x*pixelSize,mousePos.y*pixelSize,pixelSize,pixelSize); + } + if (shaping) { + if (shaping === 1) { // Draw a white line from shapeStart.x to shapeStart.y + layerCtx.beginPath(); + layerCtx.strokeStyle = "#ffc0cb"; + layerCtx.lineWidth = 3; + layerCtx.moveTo(shapeStart.x*pixelSize+pixelSizeHalf, shapeStart.y*pixelSize+pixelSizeHalf); + layerCtx.lineTo(mousePos.x*pixelSize+pixelSizeHalf, mousePos.y*pixelSize+pixelSizeHalf); + layerCtx.stroke() + } + } +} +function pixelColorPick(pixel,customColor=null) { + var element = pixel.element; + var elementInfo = elements[element]; + //if (elementInfo.behavior instanceof Array) { + + if (pixel.charge && elementInfo.colorOn) { + customColor = elementInfo.colorOn; + } + if (customColor != null) { + if (Array.isArray(customColor)) { + customColor = customColor[Math.floor(Math.random() * customColor.length)]; + } + if (customColor.startsWith("#")) { + customColor = hexToRGB(customColor); + } + var rgb = customColor; + } + else { + var rgb = elements[element].colorObject; // {r, g, b} + // If rgb is an array, choose a random item + if (Array.isArray(rgb)) { + rgb = rgb[Math.floor(Math.random() * rgb.length)]; + } + } + // Randomly darken or lighten the RGB color + var coloroffset = Math.floor(Math.random() * (Math.random() > 0.5 ? -1 : 1) * Math.random() * 1); + var r = rgb.r + coloroffset; + var g = rgb.g + coloroffset; + var b = rgb.b + coloroffset; + // Make sure the color is within the RGB range + r = Math.max(0, Math.min(255, r)); + g = Math.max(0, Math.min(255, g)); + b = Math.max(0, Math.min(255, b)); + var color = "rgb("+r+","+g+","+b+")"; + + /*} + else { + var color = elementInfo.color; + if (Array.isArray(color)) { + color = color[Math.floor(Math.random() * color.length)]; + } + }*/ + return color; +} \ No newline at end of file diff --git a/UwUstyle.css b/UwUstyle.css new file mode 100644 index 00000000..9a5c04ee --- /dev/null +++ b/UwUstyle.css @@ -0,0 +1,679 @@ +html, body { + width: 100%; + height: 100%; + margin: 0; +} +/* Load the font PressStart2P-Regular.ttf */ +@font-face { + font-family: 'Press Start 2P'; + src: url('fonts/PressStart2P-Regular.ttf'); +} +@font-face { + font-family: 'VT323'; + src: url('fonts/VT323-Regular.ttf'); +} +body { + font-family: 'Press Start 2P', 'VT323', Arial; + background-color: #000000; + color: #ffffff; + caret-color: #ffc0cb; +} +::-moz-selection { + background: #948a54; +} +::selection { + background: #948a54; +} +.pagetitle { + padding: 10px; + padding-bottom: 0px; + font-size: 0.75em; + position: absolute; + top: 0; + left: 0; +} +a, .saveOption {color: rgb(255, 0, 255);text-decoration: none;} +a:hover, .saveOption:hover {filter: brightness(200%);} +a:active, a:hover:active, .saveOption:active, .saveOption:hover:active {filter: brightness(275%);} +#gameDiv { /*game canvas*/ + border: 3px solid rgba(255, 255, 255, 0.45); + position: relative; + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Safari */ + -khtml-user-select: none; /* Konqueror HTML */ + -moz-user-select: none; /* Old versions of Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; + /* margin-top: 15px; */ +} +.gameDiv-wide { + margin-top: 0!important; + border: none!important; +} +#game { + image-rendering: pixelated; +} +#bottomInfoBox { /* place under the game canvas */ + margin: 1.5em 50px 0px 50px; + font-family: 'Arial'; +} +#bottomTopBox { + text-align: center; +} +#bottomTopBoxColumns { + display:flex; justify-content: space-around +} +@media screen and (max-width: 1300px) { + #bottomTopBoxColumns { + display:block; justify-content: unset; + } +} +@media screen and (min-width: 1300px) { + #newsletterFrame { + border: none!important; + } +} +#bottomLeftBox { + float: left; + width: 50%; + text-align: left; +} +#bottomRightBox { + float: right; + width: 50%; + text-align: right; +} +table { + border-collapse: collapse; + background-color: rgba(255, 255, 255, 0.125); +} +#controlsTable { + width: 75%; + margin-left: auto; + margin-right: 0px; +} +/* alternating table row colors */ +tr:nth-child(even) { + background-color: rgba(255 255, 255, 0.0625); +} +th, td { + text-align: left; + padding: 8px; + border: 1px solid #9f9f9f; +} +kbd { + /* Look like a button */ + display: inline-block; + padding: 0.2em 0.6em 0.3em; + font-size: 90%; + font-weight: 700; + color: rgb(255, 255, 255); + background-color: rgba(255, 192, 203, 0.5); + border-radius: 0.2em; + border: 1px solid #000; + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 0 0 2px rgba(0, 0, 0, 0.05); + font-family: 'Arial'; + cursor: pointer; +} +kbd:active {filter: brightness(70%);} +#infoParent, #modParent, #settingsParent, .menuParent { + display: none; + position: absolute; + border: 4px solid #ffc0cb; + left: 50%; + top: 5%; + transform: translate(-50%, 0%); + width: 95%; + height: 60%; + max-width: 700px; + max-height: 450px; + background-color: rgba(255, 192, 203, 0.5); + z-index:99999 +} +#infoScreen, #modManager, #settingsMenu, .menuScreen { + position: absolute; + height:calc(100% - 20px); + width:calc(100% - 20px); + padding: 10px; + + background-color: rgba(255, 192, 203, 0.5); + overflow-x: hidden; + z-index: 10; +} +#settingsParent { + height: 75%; + max-height: 623px; +} +#promptParent { + height: 50%; +} +#infoSearch, #modManagerUrl, #promptInput { + position: fixed; + bottom: 0px; + left: 0px; + width: calc(100% - 16px); + max-width: 700px; + height: 50px; + background-color: rgb(255, 192, 203, 0.5); + color: white; + font-size: 1.5em; + padding: 8px; + font-family: 'Press Start 2P'; + z-index: 11; + border: none +} +#infoSearch:focus, #modManagerUrl:focus, #promptInput:focus { + outline: none; +} +.menuTitle { + font-size: 1.5em; + text-decoration: underline; +} +.menuText { + margin-top: 5px; + line-height: 1.5em; +} +#infoText { + white-space: pre-wrap; +} +.XButton { + position: absolute; + right: 0px; + top: 0px; + font-size: 2em; + background-color: rgb(100, 33, 33); + padding:5px; + text-align:center; + border: 4px solid #9d9d9d; + border-top: none; + border-right: none; + z-index: 12; +} +.XButton:hover { + background-color: rgb(200, 33, 33); +} +/*#modManagerAdd { + position: absolute; + bottom: 25%; + right: 25%; + height: 50px; + width: 50px; + transform: translate(-25%, -25%); + background-color: rgb(0, 190, 32); + color: white; + font-size: 2em; + padding: 10px; + font-family: 'Press Start 2P'; +}*/ +#modManagerList { + margin-top: 20px; +} +#modManagerList li { + list-style-type: none; + position: relative; +} +#modManagerList li::before { + content: '•'; + position: absolute; + left: -1.5em; + font-size: 1em; + font-family: 'Press Start 2P'; +} +.removeModX { + color: red; + cursor: pointer; +} +.removeModX:hover { + color: rgb(255, 107, 107); +} +.infoLink { + color: rgb(116, 140, 221); + cursor: pointer; + text-decoration: underline; +} +.saveSlot { + display: block; + border-top: solid gray; + padding-top: 1em; + padding-bottom: 1em; + padding-left: 1em; +} +.saveSlot:last-child { + border-bottom: solid gray; +} +.saveOption { + float: right; + padding-left: 2em; + padding-right: 1em; + color: #ff00ff; + cursor: pointer; +} +.saveOption:first-child { + padding-right: 2em; +} +.saveOption[disabled="true"] { + color: gray; + cursor: not-allowed; +} +#saveFile, #loadFile, #saveConfirm, #promptOK, .promptOK, #promptCancel, #promptConfirm { + background-color: "#ffc0cb80"; + text-align: center; + vertical-align: middle; + height: 3em; + line-height: 3em; + position:absolute; + bottom: 0; + cursor: pointer; + border-top: 4px solid #ffc0cb; +} +#saveConfirm, #promptOK, .promptOK { + bottom: 0; + position: fixed; +} +#saveFile, #promptCancel { + left: 0; + width: 50%; +} +#loadFile, #promptConfirm { + right: 0; + width: 50%; + border-left: 4px solid #ffc0cb80; +} +#saveConfirm, #promptOK, .promptOK { + left: 0; + width: 100%; +} +button, input[type="submit"], input[type="reset"] { + background: none; + color: inherit; + border: none; + padding: 0; + font: inherit; + cursor: pointer; +} +.usingTab button:focus { + filter: brightness(75%); + outline: none; +} +#underBox { + position: relative; + left: 50%; + transform: translate(-50%, -0%); + margin-top: 10px; + width: 100%; +} +#controls button { + padding: 5px 10px; + border-radius: 5px; + font-size: 1em; + text-shadow: 0.5px 1px 4px #000000; + color: rgba(255, 255, 255, 0.85); + border: 2px solid #ff00ea80; + margin: 0px 4px 4px 4px; + font-variant: small-caps; +} +#controls button.bright { + text-shadow: 0.5px 1px 4px #ffffff; + color: rgba(0, 0, 0, 0.85); +} +/*Darken when active*/ +#controls button:active, #controls button:active:hover { + filter: brightness(60%); +} +#controls button:hover { + filter: brightness(110%); +} +#controls button:disabled { + cursor: not-allowed; +} +#controls button[current="true"], #controls button[on="true"] { + border: 2px solid #ffc0cb; + filter: brightness(110%); + /* box-shadow: 0 5px 15px rgba(255, 255, 255, .4); */ + color: rgba(255, 192, 203, 1); +} +#controls .elementButton[current="true"] { + border: 2px solid #ffc0cb; + box-shadow: 0px 1px 15px rgba(255, 192, 203, .75); +} +#controls button.bright[current="true"] { + color: rgba(0, 0, 0, 1); +} +#controls button[on="true"] { + border-color:#ffc0cb; + color:#ffc0cb; +} +#controls div { + display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ + display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ + display: -ms-flexbox; /* TWEENER - IE 10 */ + display: -webkit-flex; /* NEW - Chrome */ + display:flex; +} +.stat { + margin-right: 25px; + margin-bottom: 5px; + float:right; +} +#stats { + margin: 0px 5px 0px 5px; + font-size: 0.75em; + height: 1.5em; + line-height: 1.5em; + width:calc(100% - 5px); + /* no wrapping */ + white-space: nowrap; + overflow-x: hidden; + overflow-y: hidden; + background-color: black; +} +#stat-pos, #stat-pixels, #stat-shift, #stat-tps, #stat-ticks, #stat-view { + float:left; +} +#stat-element { + margin-right:10px +} +#stats span { + background-color: "transparent" +} +#stat-view, #stat-element span { + text-transform: uppercase; +} +.redText { + color: red; +} +.categoryName { + font-size: 0.75em; + text-transform: uppercase; + margin-left: 5px; + vertical-align: middle; +} +#extraInfo { + margin:5px +} +#extraInfo small, #extraInfo p { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + margin-right: 1em; +} +#extraInfo small { + margin-bottom: 10px; +} +.gameDiv-wide .extraInfo-right { + float:right +} +#toolControls, #category-tools { + white-space: nowrap; + overflow-x: auto; + overflow-y: hidden; + width: 100%; + display: flex; + justify-content: flex-start; +} +#toolControls button, #category-tools button { + flex-grow: 1; +} +#elementControls { + flex-direction: column; +} + +/* Scrollbars */ + +#toolControls, #category-tools, #categoryControls, #elementControls { + scrollbar-color: rgba(255, 192, 203, 0.25) rgba(255, 192, 203, 0.1); + scrollbar-width: thin; +} + +@media screen and (max-width: 700px) { + #toolControls, #category-tools, #categoryControls, #elementControls { + margin-bottom: 5px !important; + } +} + +#toolControls::-webkit-scrollbar, #category-tools::-webkit-scrollbar, #categoryControls::-webkit-scrollbar, #elementControls::-webkit-scrollbar { + width: 5px; + height: 8px; + background-color: rgba(255, 192, 203, 0.5); +} +#toolControls::-webkit-scrollbar-thumb, #category-tools::-webkit-scrollbar-thumb, #categoryControls::-webkit-scrollbar-thumb, #elementControls::-webkit-scrollbar-thumb { + background-color: rgba(255, 192, 203, 0.5); + border-radius: 5px; +} +#toolControls::-webkit-scrollbar-track, #category-tools::-webkit-scrollbar-track, #categoryControls::-webkit-scrollbar-track, #elementControls::-webkit-scrollbar-track { + box-shadow: inset 0 0 5px rgba(255, 192, 203, 0.5); + border-radius: 10px; +} +#toolControls::-webkit-scrollbar-thumb:hover, #category-tools::-webkit-scrollbar-thumb:hover, #categoryControls::-webkit-scrollbar-thumb:hover, #elementControls::-webkit-scrollbar-thumb:hover { + background-color: rgba(255, 192, 203, 0.5); +} + +#toolControls { + z-index: 3; +} +#category-tools { + z-index: 2; +} + +#categoryControls { + margin-bottom: 5px; + background-color: rgba(255, 192, 203, 0.5); + white-space: nowrap; + overflow-x: auto; + flex-wrap: wrap; + overflow-y: hidden; + width: 100%; + position: relative; + z-index: 1; + display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ + display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ + display: -ms-flexbox; /* TWEENER - IE 10 */ + display: -webkit-flex; /* NEW - Chrome */ + display:flex; +} +#categoryControls button { + /* Borderless buttons */ + border: none; + border-radius: 0; + padding-left: 3px; + padding-right: 3px; + margin: 0; + padding-top: 5px; + padding-bottom: 5px; + display: inline-block; + position: relative; + z-index:0; + flex-grow: 1; + border-bottom: 2px solid rgba(255, 192, 203, 0.5); + background-color: #ffc0cb80; +} +#categoryControls button:not(:last-child) { + border-right: 2px solid rgba(255, 192, 203, 0.5); +} +#categoryControls button[current="true"] { + border: none; + background-color: rgba(255, 192, 203, 0.5); +} +.category { + margin-top:0.25em; + margin-bottom:0.25em; + position:relative; + display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ + display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ + display: -ms-flexbox; /* TWEENER - IE 10 */ + display: -webkit-flex; /* NEW - Chrome */ + display:flex; + flex-direction: row; + text-align:center; + justify-content:space-evenly; + flex-wrap:wrap; +} +.category button { + flex-grow: 1; +} +.category:after { + content: ""; + flex-grow: 20 +} + +/* screen size < 800px */ +@media screen and (max-width: 800px) { /* Mobile Styles */ + .pagetitle { + font-size: 1em; + padding-left: 0.25em; + } + #bottomLeftBox, #bottomRightBox { + width: 100%; + margin: 1px; + text-align: left; + } + table { + width: 100%; + margin-left: 0px; + margin-right: 0px; + } + #gameDiv { /*game canvas*/ + margin-top: 0; + } + .stat { + margin-right: 15px; + margin-bottom: 3px; + } + #stats { + width: 97%; + margin-left: 5px; + font-size: 0.75em; + height: 2.5em; + line-height: 1; + } + #saveFile, #loadFile { + font-size: small + } + .saveSlot { + font-size: small + } +} +@media screen and (max-width: 600px) { + #gameDiv { /*game canvas*/ + margin-top: 0; + border-left: none; + border-right: none; + border-top: none; + } + .pagetitle { + display: none + } + #categoryControls { + flex-wrap: nowrap; + } + #categoryControls button { + padding-left: 8px; + padding-right: 8px; + } +} +@media screen and (min-width: 800px) { /* Desktop-Only Styles */ + #gameDiv { + width:800px; + left: 50%; + transform: translate(-50%, -0%); + } +} +/* screen size > 1325px, h1::after {content:" Sandboxels"} */ +@media screen and (min-width: 1325px) { + .pagetitle::after {content:" Sandboxels"} +} +button, input { /*Disable double tap zoom on mobile devices*/ + touch-action: manipulation; + color-scheme: dark; +} +.settingsButton, select, .toggleInput, #settingsMenu input[type="number"], #settingsMenu input[type="text"], #savePromptMenu input, input[type="email"], input[type="number"] { + background-color: #ffc0cb80; + vertical-align: middle; + margin-left: 4px; + margin-right: 4px; + border: rgb(255, 192, 203) 2px solid; + padding: 0.4em; + color: white; + font-size: 1em; + font-family: Arial, Helvetica, sans-serif; +} +#settingsMenu .menuText { + font-family: 'VT323'; + font-size:1.5em +} +#settingsMenu .toggleInput, #settingsMenu .menuText button, #settingsMenu input[type], #settingsMenu select { + display: inline-block; + text-align: center; + font-family: 'VT323'; + padding-left:13px; + padding-right:13px; + margin:0 +} +#settingsMenu input[type=color] { + padding:0 +} +#settingsMenu select, #settingsMenu input[type=text] { + font-size: 1em; + padding:5px; +} +.toggleInput { cursor: pointer; } +.toggleInput[state="1"] {color: lime!important;} +.toggleInput[state="0"] {color: red!important;} +#settingsMenu input[type="number"] { + width: 3em; + text-align: left; +} +#settingsMenu input[type="text"] { + text-align: left; +} +.settingsButton:active, .toggleInput:active { + filter: brightness(75%); +} +#canvasDiv { + position:relative; + overflow-x:hidden +} +#colorSelector { + position:absolute; + bottom:1em; + right:1em; + display: none; +} +.categoryButton.notify { + background-color: rgba(255, 0, 0, 0.25); +} +/* .elementButton.notify with a red glow */ +.elementButton.notify { + -webkit-box-shadow: 0px 0px 15px 5px #FF0000; + box-shadow: 0px 0px 15px 5px #FF0000; +} +.noselect { + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Safari */ + -khtml-user-select: none; /* Konqueror HTML */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ +} +.setting-span { + display:block;padding-bottom:0.5em +} +.multisetting { + display: inline-block +} +.helpMark {text-decoration:dotted underline; font-style:italic; cursor:help; color:yellow} +#content { + margin-left:10px; + margin-right:10px; + padding-bottom: 10px; +} +#logDiv { + position: absolute; + top: 0px; + left: 0px; + pointer-events: none; + padding: 5px; + white-space: pre-wrap; + font-size: 0.75em; + text-shadow: 0px 0px 6px black; +} \ No newline at end of file diff --git a/VT323-License-OFL.txt b/VT323-License-OFL.txt new file mode 100644 index 00000000..e229272b --- /dev/null +++ b/VT323-License-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2011, The VT323 Project Authors (peter.hull@oikoi.com) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/VT323-Regular.ttf b/VT323-Regular.ttf new file mode 100644 index 00000000..6aec5993 Binary files /dev/null and b/VT323-Regular.ttf differ diff --git a/Vietnamese_Pixel.ttf b/Vietnamese_Pixel.ttf new file mode 100644 index 00000000..8e46c16c Binary files /dev/null and b/Vietnamese_Pixel.ttf differ diff --git a/fusion-pixel-12px-monospaced-ja.ttf b/fusion-pixel-12px-monospaced-ja.ttf new file mode 100644 index 00000000..02437daf Binary files /dev/null and b/fusion-pixel-12px-monospaced-ja.ttf differ diff --git a/fusion-pixel-12px-monospaced-ko.ttf b/fusion-pixel-12px-monospaced-ko.ttf new file mode 100644 index 00000000..3c9156c3 Binary files /dev/null and b/fusion-pixel-12px-monospaced-ko.ttf differ diff --git a/fusion-pixel-12px-monospaced-latin.ttf b/fusion-pixel-12px-monospaced-latin.ttf new file mode 100644 index 00000000..1ef94732 Binary files /dev/null and b/fusion-pixel-12px-monospaced-latin.ttf differ diff --git a/fusion-pixel-12px-monospaced-zh_hans.ttf b/fusion-pixel-12px-monospaced-zh_hans.ttf new file mode 100644 index 00000000..e88bb7f6 Binary files /dev/null and b/fusion-pixel-12px-monospaced-zh_hans.ttf differ diff --git a/fusion-pixel-12px-monospaced-zh_hant.ttf b/fusion-pixel-12px-monospaced-zh_hant.ttf new file mode 100644 index 00000000..7dbfe5db Binary files /dev/null and b/fusion-pixel-12px-monospaced-zh_hant.ttf differ