From 35438605af2585a5288efdf4d6b0054e336590c0 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Sat, 18 Mar 2017 15:02:37 -0700 Subject: [PATCH] Began working on methods --- index.html | 1 + scripts/core/command.js | 4 ++-- scripts/core/init.js | 6 +++--- scripts/core/ronin.js | 2 +- scripts/modules/brush.js | 2 +- scripts/modules/cursor.js | 35 +++++++++++++++++++++++++++++++- scripts/modules/default.js | 5 +++++ scripts/modules/module.js | 6 +++++- scripts/modules/surface.js | 1 + scripts/modules/surface.layer.js | 8 +++++++- scripts/modules/typographe.js | 4 ++-- scripts/units/method.js | 19 +++++++++++++++++ 12 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 scripts/units/method.js diff --git a/index.html b/index.html index 459cf47..3011d3d 100644 --- a/index.html +++ b/index.html @@ -11,6 +11,7 @@ + diff --git a/scripts/core/command.js b/scripts/core/command.js index e50c81f..dc16813 100644 --- a/scripts/core/command.js +++ b/scripts/core/command.js @@ -84,8 +84,8 @@ function Command(content) this.setting = function(name) { for (i = 0; i < this.content.length; i++) { - if(this.content[i].indexOf(":") >= 0){ - var parts = this.content[i].split(":"); + if(this.content[i].indexOf("=") >= 0){ + var parts = this.content[i].split("="); if(parts[0] == name){ return new Setting(parts[0],parts[1]); } diff --git a/scripts/core/init.js b/scripts/core/init.js index 0412eb8..5f79fc5 100644 --- a/scripts/core/init.js +++ b/scripts/core/init.js @@ -32,9 +32,9 @@ starting_canvas.width = parseInt(starting_canvas.width/40) * 40; starting_canvas.height = parseInt(starting_canvas.height/40) * 40; ronin.terminal.query("~ "+ronin.timestamp()); -ronin.terminal.query("@ size:"+starting_canvas.render()); -ronin.terminal.query("@ layer:Main"); -ronin.terminal.query("- color:#ff0000"); +ronin.terminal.query("@ size="+starting_canvas.render()); +ronin.terminal.query("@ layer=Main"); +ronin.terminal.query("- color=#ff0000"); // ronin.terminal.query("# fill=#ff0000"); // ronin.terminal.query("- 0,0"); // ronin.terminal.query("- 1,1"); diff --git a/scripts/core/ronin.js b/scripts/core/ronin.js index 0895fa8..29bfb3e 100644 --- a/scripts/core/ronin.js +++ b/scripts/core/ronin.js @@ -19,13 +19,13 @@ function Ronin() this.modules[this.surface.rune] = this.surface; this.modules[this.fileload.rune] = this.fileload; this.modules[this.filesave.rune] = this.filesave; - this.modules[this.overlay.rune] = this.overlay; this.modules[this.render.rune] = this.render; this.modules[this.brush.rune] = this.brush; this.modules[this.eye.rune] = this.eye; this.modules[this.typo.rune] = this.typo; this.modules[this.vector.rune] = this.vector; this.modules[this.terminal.rune] = this.terminal; + this.modules[this.overlay.rune] = this.overlay; this.modules[this.cursor.rune] = this.cursor; diff --git a/scripts/modules/brush.js b/scripts/modules/brush.js index a0225b0..a63731d 100644 --- a/scripts/modules/brush.js +++ b/scripts/modules/brush.js @@ -79,7 +79,7 @@ function Brush(rune) this.mouse_pointer = function(position) { - return ronin.cursor.draw_pointer_circle(position,this.settings["size"]); + return ronin.cursor.draw_pointer_circle(position,this.settings["size"].float); } this.mouse_mode = function() diff --git a/scripts/modules/cursor.js b/scripts/modules/cursor.js index 9486f7d..d460f9d 100644 --- a/scripts/modules/cursor.js +++ b/scripts/modules/cursor.js @@ -96,7 +96,40 @@ function Cursor(rune) this.pointer_last = this.pointer_last ? this.pointer_last : position; this.layer.context().beginPath(); - this.layer.context().arc(position.x, position.y, 3.5, 0, 2 * Math.PI, false); + this.layer.context().moveTo(this.pointer_last.x,this.pointer_last.y); + this.layer.context().lineTo(position.x,position.y); + this.layer.context().lineCap="round"; + this.layer.context().lineWidth = 1; + this.layer.context().strokeStyle = "white"; + this.layer.context().stroke(); + this.layer.context().closePath(); + + this.layer.context().beginPath(); + this.layer.context().arc(position.x, position.y, size+1, 0, 2 * Math.PI, false); + this.layer.context().lineWidth = 1; + this.layer.context().strokeStyle = "white"; + this.layer.context().stroke(); + this.layer.context().closePath(); + + this.pointer_last = position; + } + + this.draw_pointer_drag = function(position) + { + if(!this.layer){ this.create_layer(); } + + this.pointer_last = this.pointer_last ? this.pointer_last : position; + + this.layer.context().beginPath(); + + this.layer.context().moveTo(position.x,position.y - 3); + this.layer.context().lineTo(position.x,position.y + 3); + this.layer.context().moveTo(position.x - 2,position.y - 3); + this.layer.context().lineTo(position.x - 2,position.y + 3); + this.layer.context().moveTo(position.x + 2,position.y - 3); + this.layer.context().lineTo(position.x + 2,position.y + 3); + + this.layer.context().lineCap="round"; this.layer.context().lineWidth = 1; this.layer.context().strokeStyle = "white"; this.layer.context().stroke(); diff --git a/scripts/modules/default.js b/scripts/modules/default.js index 326bfbe..4ab56f0 100644 --- a/scripts/modules/default.js +++ b/scripts/modules/default.js @@ -9,6 +9,11 @@ function Default(rune) return "Drag"; } + this.mouse_pointer = function(position) + { + return ronin.cursor.draw_pointer_drag(position); + } + this.drag_from = null; this.drag_offset_x = 0; this.drag_offset_y = 0; diff --git a/scripts/modules/module.js b/scripts/modules/module.js index 710f6a2..80612db 100644 --- a/scripts/modules/module.js +++ b/scripts/modules/module.js @@ -3,6 +3,7 @@ function Module(rune) this.rune = rune; this.element = null; this.settings = {}; + this.methods = {}; this.layer = null; this.docs = "Missing documentation."; @@ -50,7 +51,10 @@ function Module(rune) var h = ""+ronin.module.constructor.name+" "; for(setting in ronin.module.settings){ - h += setting+":"+ronin.module.settings[setting].render()+" "; + h += setting+"="+ronin.module.settings[setting].render()+" "; + } + for(method in ronin.module.methods){ + h += ronin.module.methods[method].render()+" "; } h += ronin.module.mouse_mode() ? ""+ronin.module.mouse_mode()+"" : ""; diff --git a/scripts/modules/surface.js b/scripts/modules/surface.js index 8e2683d..344fb0a 100644 --- a/scripts/modules/surface.js +++ b/scripts/modules/surface.js @@ -4,6 +4,7 @@ function Surface(rune) this.element = null; this.settings = {"size":new Rect("200x200")}; + this.methods = {"layer":new Method("layer",["name"])} this.layers = {}; this.active_layer = null; diff --git a/scripts/modules/surface.layer.js b/scripts/modules/surface.layer.js index d7a473f..b3f4ebe 100644 --- a/scripts/modules/surface.layer.js +++ b/scripts/modules/surface.layer.js @@ -1,6 +1,7 @@ function Layer(name,manager = null) { - this.rune = "@"; + Module.call(this,"#"); + this.name = name; this.manager = manager; this.element = document.createElement("canvas"); @@ -68,6 +69,11 @@ function Layer(name,manager = null) return ""+e_name+""; } + this.mouse_pointer = function(position) + { + return ronin.cursor.draw_pointer_drag(position); + } + this.mouse_mode = function() { return "Move"; diff --git a/scripts/modules/typographe.js b/scripts/modules/typographe.js index e7aa8f1..1665213 100644 --- a/scripts/modules/typographe.js +++ b/scripts/modules/typographe.js @@ -2,8 +2,8 @@ function Typographe(rune) { Module.call(this,rune); - this.parameters = [Position,Color,Value]; - this.variables = {"text" : null, "font" : "Georgia"}; + this.settings = {"color":new Color("#ffffff"),"size":new Value(10)}; + this.methods = {"draw":new Method("draw",["text","position","font"])} this.active = function(cmd) { diff --git a/scripts/units/method.js b/scripts/units/method.js new file mode 100644 index 0000000..3c0f7bb --- /dev/null +++ b/scripts/units/method.js @@ -0,0 +1,19 @@ +function Method(name,params) +{ + Unit.call(this); + + this.name = name; + this.params = params; + this.example = ""; + + this.render = function() + { + var s = name+":"; + for(param in this.params){ + s += this.params[param]+"," + } + s = s.substr(0,s.length-1); + + return s; + } +} \ No newline at end of file