function Ronin() { this.modules = {}; this.element = null; this.default = new Default("`"); this.frame = new Frame("@"); this.path = new Path("+"); this.type = new Type("&"); this.brush = new Brush("-"); this.source = new Source("$"); this.eye = new Eye("*"); this.render = new Render("%"); this.magnet = new Magnet("^"); this.overlay = new Overlay("|"); this.terminal = new Terminal(">"); this.cursor = new Cursor("."); this.widget = new Widget("?"); this.modules[this.frame.name] = this.frame; this.modules[this.type.name] = this.type; this.modules[this.path.name] = this.path; this.modules[this.brush.name] = this.brush; this.modules[this.source.name] = this.source; this.modules[this.render.name] = this.render; // this.modules[this.eye.constructor.name] = this.eye; this.modules[this.magnet.name] = this.magnet; this.modules[this.cursor.name] = this.cursor; this.modules[this.terminal.name] = this.terminal; // document.addEventListener('contextmenu', function(ev){ ev.preventDefault(); return false;}, false); window.addEventListener('resize', function(){ ronin.on_resize(); }, true); this.install = function() { ronin.element = document.getElementById('ronin'); ronin.frame.element = document.getElementById('frame'); ronin.cursor.element = document.getElementById('cursor'); ronin.terminal.element = document.getElementById('terminal'); for(var key in this.modules){ this.modules[key].install(); } this.widget.install(); ronin.cursor.mode = ronin.brush; this.on_drag(); } this.start = function(hash = null) { var target_file = hash.length > 2 ? hash.substr(1,hash.length-1)+".rin" : "default.rin" ronin.terminal.update(); ronin.widget.update(); ronin.terminal.input.focus(); ronin.load(target_file); } this.cursors = []; this.position_in_canvas = function(e) { // x -= parseInt(this.frame.element.style.left) - parseInt(this.frame.element.style.width/2); var x = e.clientX - parseInt(this.frame.element.style.left); var y = e.clientY - parseInt(this.frame.element.style.top); return new Position(x,y); } this.timestamp = function() { var currentdate = new Date(); var date = currentdate.getFullYear()+""+(currentdate.getMonth()+1)+""+currentdate.getDate(); return date+" "+currentdate.getHours()+":"+currentdate.getMinutes()+":"+currentdate.getSeconds(); } this.on_resize = function() { } this.on_drag = function() { // Position Background var bg_offset_parts = ronin.element.style.backgroundPosition == "" ? [0,0] : ronin.element.style.backgroundPosition.split(" "); var x = parseInt(ronin.frame.element.style.left)/4; var y = parseInt(ronin.frame.element.style.top)/4; ronin.element.style.backgroundPosition = x+"px "+y+"px"; } this.filename = "default.rin"; this.load = function readTextFile(name) { this.filename = name; var file = "presets/"+name+'?'+new Date().getTime(); var rawFile = new XMLHttpRequest(); rawFile.open("GET", file, false); rawFile.onreadystatechange = function () { if(rawFile.readyState === 4) { if(rawFile.status === 200 || rawFile.status == 0) { var allText = rawFile.responseText; ronin.terminal.run_multi(allText.split("\n").join(";")); } } } rawFile.send(null); ronin.widget.update(); } }