var dragging = false var drawing = true var erasing = false var focused var canvas, tools, palette, controls, brush, mode, current_tool, current_canvas function init () { build() bind() } function build () { shader.init() // shader.run(canvas) shader.animate() canvas.append(canvas_rapper) brush.append(brush_rapper) palette.append(palette_rapper) controls.circle.focus() // controls.shader.focus() brush.bg = colors.red brush.generate() brush.build() } function bind () { canvas.bind() palette.bind() brush.bind() controls.bind() window.addEventListener('mouseup', function(){ dragging = erasing = false if (current_tool.name != 'shader' && current_tool.name != 'load' && current_tool.name != 'save') { cursor_input.focus() } }); window.addEventListener('mousedown', function(e){ if (current_tool.name == "shader") { return } cursor_input.focus() }) var direction = [0,1] cursor_input.addEventListener('keydown', function(e){ console.log("keycode:", e.keyCode) switch (e.keyCode) { case 27: // esc if (focused) focused.blur() break case 219: // [ if (current_tool.name != "text") { e.preventDefault() brush.contract(1) brush.modified = false break } case 221: // ] if (current_tool.name != "text") { e.preventDefault() brush.expand(1) brush.modified = false break } case 8: e.preventDefault() current_canvas.focusLex(focused.y-1, focused.x) focused.char = " " focused.build() return case 13: // return e.preventDefault() current_canvas.focusLex(focused.y, focused.x+1) return case 38: // up e.preventDefault() current_canvas.focusLex(focused.y - 1, focused.x + 0) break case 40: // down e.preventDefault() current_canvas.focusLex(focused.y + 1, focused.x + 0) break case 37: // left e.preventDefault() current_canvas.focusLex(focused.y + 0, focused.x - 1) break case 39: // right e.preventDefault() current_canvas.focusLex(focused.y + 0, focused.x + 1) break // default: // if (focused) { focused.key(undefined, e.keyCode) } } }) cursor_input.addEventListener('input', function(e){ /* if (! e.metaKey && ! e.ctrlKey && ! e.altKey) { e.preventDefault() } */ if (current_tool.name == "shader") { cursor_input.value = "" return } var char = cursor_input.value cursor_input.value = "" console.log("input:", char) if (focused && char) { var y = focused.y, x = focused.x focused.key(char, e.keyCode) current_canvas.focusLex(y + direction[0], focused.x + direction[1]) } }) document.addEventListener('DOMContentLoaded', function(){ if (current_tool.name != 'shader') { cursor_input.focus() } document.body.classList.remove('loading') }) } function int_key (f) { return function (key, keyCode) { var n = parseInt(key) ! isNaN(n) && f(n) } } init()