diff --git a/index.html b/index.html index 9abb9db..1dd3d17 100644 --- a/index.html +++ b/index.html @@ -11,6 +11,7 @@ + diff --git a/links/main.css b/links/main.css index ab8bec1..ca7e0d2 100644 --- a/links/main.css +++ b/links/main.css @@ -26,8 +26,9 @@ body { margin:0px; padding:0px; overflow:hidden; font-family:"input_mono_medium" #terminal #hint .setting { display: inline-block; color:#fff; font-style: italic } #modal { position: fixed; bottom:80px; right:20px; height:100px; background:#111; border-radius:3px; overflow:hidden; display: block} -#modal.text { display: block;background: white;width:calc(60vw - 60px);height:calc(100vh - 160px);padding:30px;font-size:12px; white-space:pre; column-count: 2; line-height: 16px} -#modal.text .module { font-family: 'input_mono_regular';} +#modal.text { display: block;background: #000;width: calc(100vw - 100px);height: calc(100vh - 160px);padding: 30px;font-size: 12px;white-space: pre;column-count: 3;line-height: 20px;color:white} +#modal.text .module { font-family: 'input_mono_regular'; border-bottom:1px solid #333; display: block; line-height: 30px} +/*#modal.text .module:before { content: "-";margin-left:-15px;margin-right:15px;display:inline-block }*/ #modal.text .setting { font-style: italic; color:#999;} #modal.text .mode { text-decoration: underline} #modal.image img { display: block; max-height: 100%; width:inherit;} diff --git a/presets/default.rin b/presets/default.rin index 7d9bd02..c3ece22 100644 --- a/presets/default.rin +++ b/presets/default.rin @@ -12,6 +12,6 @@ type.write 38,262 "RONIN" type:font "DIN Medium" type.write 38,252 "B09" brush:color #ff0000 -brush:size 2 +brush:size 5 path:line_width 20 path:line_color #999999 \ No newline at end of file diff --git a/scripts/core/command.js b/scripts/core/command.js index 23d2b9b..7073739 100644 --- a/scripts/core/command.js +++ b/scripts/core/command.js @@ -116,6 +116,14 @@ function Command(content) return null; } + this.option = function(name) + { + for (i = 0; i < this.parts.length; i++) { + if(this.parts[i].indexOf(name+"=") >= 0){ return new Option(this.parts[i]); } + } + return null; + } + this.bang = function() { for (i = 0; i < this.parts.length; i++) { diff --git a/scripts/core/ronin.js b/scripts/core/ronin.js index 7f1a622..e1921c3 100644 --- a/scripts/core/ronin.js +++ b/scripts/core/ronin.js @@ -63,6 +63,23 @@ function Ronin() ronin.terminal.input.focus(); ronin.load(target_file); } + + this.hint = function(method) + { + var html = ""; + if(this.terminal.input.value){ + for(id in ronin.modules){ + if(this.terminal.input.value != ronin.modules[id].name.substr(0,this.terminal.input.value.length)){ continue; } + html += ""+ronin.modules[id].name+" "; + } + } + else{ + for(id in ronin.modules){ + html += ""+ronin.modules[id].name+" "; + } + } + return html; + } this.cursors = []; diff --git a/scripts/modules/brush.js b/scripts/modules/brush.js index 40a0a17..1e7233a 100644 --- a/scripts/modules/brush.js +++ b/scripts/modules/brush.js @@ -8,16 +8,31 @@ function Brush(rune) this.add_mode(new Mode("erase","alt")); this.add_setting(new Setting("color","#00ff00")); this.add_setting(new Setting("size","2")); - this.add_method(new Method("add_pointer",["Position","Color","Scale"])); + this.add_method(new Method("add_pointer",["Position","Color","Scale","mirror_x","mirror_y"])); this.add_pointer = function(cmd, preview = false) { - if(preview){ return; } + if(cmd.option("mirror_x")){ + var mirror_x = parseFloat(cmd.option("mirror_x").value); + ronin.overlay.draw(new Position(mirror_x+",0")) + } + if(cmd.option("mirror_y")){ + var mirror_y = parseFloat(cmd.option("mirror_y").value); + ronin.overlay.draw(new Position("0,"+mirror_y)) + } + + if(preview){ + return; + } var pointer = new Pointer(); pointer.offset = cmd.position() ? cmd.position() : new Position("0,0"); - pointer.color = cmd.color().hex ? cmd.color().hex : this.settings["color"].value; - pointer.scale = cmd.value().float ? cmd.value().float : 1; + pointer.color = cmd.color() ? cmd.color().hex : this.settings["color"].value; + pointer.scale = cmd.value() ? cmd.value().float : 1; + + if(mirror_x){ pointer.mirror_x = mirror_x; } + if(mirror_y){ pointer.mirror_y = mirror_y; } + this.pointers.push(pointer); ronin.terminal.log(new Log(this,"Added pointer at: "+pointer.offset.render())); diff --git a/scripts/modules/brush.pointer.js b/scripts/modules/brush.pointer.js index b3c0455..4972621 100644 --- a/scripts/modules/brush.pointer.js +++ b/scripts/modules/brush.pointer.js @@ -4,7 +4,9 @@ function Pointer(offset = new Position(), color = null, scale = 1) this.color = color; this.scale = scale; - this.mirror = null; + this.mirror_x = null; + this.mirror_y = null; + this.position_prev = null; this.angle = null; this.distance = 0; @@ -16,16 +18,12 @@ function Pointer(offset = new Position(), color = null, scale = 1) this.thickness = function() { var radius = ronin.brush.settings["size"].to_f() * this.scale; - - var ratio = this.position().distance_to(this.position_prev[0]); - // ratio = ratio > 1 ? 1 : ratio; - + var ratio = 1 - this.position().distance_to((this.position_prev ? this.position_prev[0] : 1)) / 10; var target = radius * ratio; + var rate = ronin.brush.settings["size"].to_f()/8; - // return target; - - if(this.actual_thickness < target){ this.actual_thickness += 0.25; } - if(this.actual_thickness > target){ this.actual_thickness -= 0.25; } + if(this.actual_thickness < target){ this.actual_thickness += rate; } + if(this.actual_thickness > target){ this.actual_thickness -= rate; } return this.actual_thickness; } @@ -79,12 +77,16 @@ function Pointer(offset = new Position(), color = null, scale = 1) this.position = function() { + if(this.mirror_x && this.mirror_x > 0){ + return this.position_mirror_x(); + } + if(this.mirror_y && this.mirror_y > 0){ + return this.position_mirror_y(); + } + if(this.angle && this.offset){ return this.position_rotation(); } - else if(this.mirror && this.mirror.width > 0){ - return this.position_mirror_x(); - } else if(this.mirror && this.mirror.height > 0){ return this.position_mirror_y(); } @@ -100,12 +102,12 @@ function Pointer(offset = new Position(), color = null, scale = 1) this.position_mirror_x = function() { - return new Position((2 * this.mirror.width) - (ronin.cursor.position.x + this.offset.x), 0 + (ronin.cursor.position.y + this.offset.y)); + return new Position((2 * this.mirror_x) - (ronin.cursor.position.x + this.offset.x), 0 + (ronin.cursor.position.y + this.offset.y)); } this.position_mirror_y = function() { - return new Position((ronin.cursor.position.x + this.offset.x), (2 * this.mirror.height) - (ronin.cursor.position.y + this.offset.y)); + return new Position((ronin.cursor.position.x + this.offset.x), (2 * this.mirror_y) - (ronin.cursor.position.y + this.offset.y)); } this.position_rotation = function() @@ -123,9 +125,9 @@ function Pointer(offset = new Position(), color = null, scale = 1) this.start = function() { var radius = ronin.brush.settings["size"].to_f() * this.scale; - this.actual_thickness = radius/2; + this.actual_thickness = radius/4; ronin.frame.context().beginPath(); - ronin.frame.context().arc(this.position().x, this.position().y, radius/2, 0, 2 * Math.PI, false); + ronin.frame.context().arc(this.position().x, this.position().y, this.thickness(), 0, 2 * Math.PI, false); ronin.frame.context().lineWidth = 0; ronin.frame.context().fillStyle = this.color ? this.color : ronin.brush.settings["color"].value; ronin.frame.context().fill(); diff --git a/scripts/modules/overlay.js b/scripts/modules/overlay.js index 2a09134..4cdd816 100644 --- a/scripts/modules/overlay.js +++ b/scripts/modules/overlay.js @@ -139,7 +139,7 @@ function Overlay(rune) this.context().beginPath(); this.context().moveTo(position.x,0); - this.context().lineTo(position.x,this.element.height); + this.context().lineTo(position.x,ronin.frame.size.height); this.context().lineCap="round"; this.context().lineWidth = 1; @@ -153,7 +153,7 @@ function Overlay(rune) this.context().beginPath(); this.context().moveTo(0,position.y); - this.context().lineTo(this.element.width,position.y); + this.context().lineTo(ronin.frame.size.width,position.y); this.context().lineCap="round"; this.context().lineWidth = 1; diff --git a/scripts/modules/terminal.js b/scripts/modules/terminal.js index 62bc182..e818a69 100644 --- a/scripts/modules/terminal.js +++ b/scripts/modules/terminal.js @@ -1,6 +1,6 @@ function Terminal(rune) { - Module.call(this,">"); + Module.call(this); this.element = document.createElement("div"); this.input = document.createElement("input"); @@ -13,8 +13,7 @@ function Terminal(rune) this.history = []; this.locks = []; - this.add_method(new Method("save",["text"])); - this.add_method(new Method("load",["path"])); + this.add_method(new Method("load",["file_name.rin"])); // Module this.install = function(cmd) @@ -59,7 +58,7 @@ function Terminal(rune) if(method){ method.preview(command); } - this.hint_element.innerHTML = ""+this.input.value+""+(this.input.value ? " " : "")+(module ? module.hint(method) : this.hint(method)); + this.hint_element.innerHTML = ""+this.input.value+""+(this.input.value ? " " : "")+(module ? module.hint(method) : ronin.hint(method)); ronin.cursor.update(); } @@ -74,23 +73,6 @@ function Terminal(rune) if(lines.length > 0){ setTimeout(function(){ ronin.terminal.run_multi(lines.join(";")) }, 50); } } - this.hint = function(method) - { - var html = ""; - if(this.input.value){ - for(id in ronin.modules){ - if(this.input.value != ronin.modules[id].name.substr(0,this.input.value.length)){ continue; } - html += ""+ronin.modules[id].name+" "; - } - } - else{ - for(id in ronin.modules){ - html += ""+ronin.modules[id].name+" "; - } - } - return html; - } - this.log = function(log) { this.logs_element.innerHTML = ""; @@ -101,6 +83,15 @@ function Terminal(rune) { return new Command(this.input.value); } + + this.load = function(cmd,preview = false) + { + if(preview){ return; } + + ronin.load(cmd.values()); + + return "Loading "+cmd.values(); + } } // Log diff --git a/scripts/units/option.js b/scripts/units/option.js new file mode 100644 index 0000000..eaa662b --- /dev/null +++ b/scripts/units/option.js @@ -0,0 +1,7 @@ +function Option(name) +{ + Unit.call(this); + + this.name = name.split("=")[0]; + this.value = name.split("=")[1]; +} \ No newline at end of file