From 3f17f37458f306290b5e6ef36ee645fb3fbed61d Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Wed, 22 Mar 2017 15:05:55 -0700 Subject: [PATCH] Started to implement methods --- scripts/core/command.js | 11 +++++++++++ scripts/core/init.js | 10 +++------- scripts/modules/magnet.js | 3 ++- scripts/modules/module.js | 23 ++++++++++++++++++++--- scripts/modules/surface.js | 36 +++++++++++++----------------------- scripts/modules/terminal.js | 3 ++- scripts/units/unit.js | 1 + 7 files changed, 52 insertions(+), 35 deletions(-) diff --git a/scripts/core/command.js b/scripts/core/command.js index dc16813..7924232 100644 --- a/scripts/core/command.js +++ b/scripts/core/command.js @@ -93,4 +93,15 @@ function Command(content) } return null; } + + this.methods = function() + { + var a = []; + for(i in this.content){ + if(this.content[i].indexOf(":") > 0){ + a.push(this.content[i]); + } + } + return a; + } } \ No newline at end of file diff --git a/scripts/core/init.js b/scripts/core/init.js index 5f79fc5..f72c02c 100644 --- a/scripts/core/init.js +++ b/scripts/core/init.js @@ -32,14 +32,10 @@ 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("@ resize:"+starting_canvas.render()); +ronin.terminal.query("@ select:Main"); ronin.terminal.query("- color=#ff0000"); -// ronin.terminal.query("# fill=#ff0000"); -// ronin.terminal.query("- 0,0"); -// ronin.terminal.query("- 1,1"); -// ronin.terminal.query("- 2,2"); - +ronin.terminal.query("# fill=#ff0000"); ronin.terminal.query("~ Ready."); ronin.terminal.input_element.focus(); diff --git a/scripts/modules/magnet.js b/scripts/modules/magnet.js index 85fe7f3..9a4eda4 100644 --- a/scripts/modules/magnet.js +++ b/scripts/modules/magnet.js @@ -54,6 +54,8 @@ function Magnet(rune) this.draw_helper = function(position) { + if(this.settings["grid"].width < 5 || this.settings["grid"].height < 5){ return; } + var magnetized = this.magnetic_position(position); this.context().beginPath(); this.context().arc(magnetized.x, magnetized.y, 4, 0, 2 * Math.PI, false); @@ -62,7 +64,6 @@ function Magnet(rune) this.context().closePath(); } - this.draw_marker = function(position,size = 0.5) { this.context().beginPath(); diff --git a/scripts/modules/module.js b/scripts/modules/module.js index 80612db..c5c1ef1 100644 --- a/scripts/modules/module.js +++ b/scripts/modules/module.js @@ -45,17 +45,34 @@ function Module(rune) } ronin.terminal.log(new Log(this,"Unknown setting: "+key)); } + + this.run_methods = function(cmd) + { + var methods = cmd.methods(); + for(i in methods){ + var content = methods[i].split(":"); + var name = content.shift(); + var params = content; + if(this[name]){ + this[name](params); + } + else{ + ronin.terminal.log(new Log(this,name+" is not a method of "+this.constructor.name,"error")); + } + + } + } this.hint = function(content) { var h = ""+ronin.module.constructor.name+" "; - for(setting in ronin.module.settings){ - h += setting+"="+ronin.module.settings[setting].render()+" "; - } for(method in ronin.module.methods){ h += ronin.module.methods[method].render()+" "; } + for(setting in ronin.module.settings){ + h += setting+"="+ronin.module.settings[setting].render()+" "; + } h += ronin.module.mouse_mode() ? ""+ronin.module.mouse_mode()+"" : ""; diff --git a/scripts/modules/surface.js b/scripts/modules/surface.js index 344fb0a..5c4075b 100644 --- a/scripts/modules/surface.js +++ b/scripts/modules/surface.js @@ -4,7 +4,7 @@ function Surface(rune) this.element = null; this.settings = {"size":new Rect("200x200")}; - this.methods = {"layer":new Method("layer",["name"])} + this.methods = [new Method("resize",[new Rect().name])] this.layers = {}; this.active_layer = null; @@ -26,23 +26,11 @@ function Surface(rune) setTimeout(function(){ ronin.surface.blink(); }, 30); } - this.active = function(cmd) + this.resize = function(params) { - if(cmd.setting("size")){ - this.resize(this.settings["size"],cmd.position()); - } + var rect = new Rect(params[0]); + this.settings["size"] = rect; - if(cmd.setting("layer")){ - var name = cmd.setting("layer").value; - if(!this.layers[name]){ - this.add_layer(new Layer(name)); - } - this.select_layer(this.layers[name]); - } - } - - this.resize = function(rect, position = null) - { Object.keys(ronin.surface.layers).forEach(function (key) { ronin.surface.layers[key].resize(rect); }); @@ -58,6 +46,15 @@ function Surface(rune) ronin.terminal.log(new Log(this,"Resized Surface to "+this.settings["size"].render())); } + this.select = function(params) + { + var layer_name = params[0]; + if(!ronin.surface.layers[layer_name]){ + this.add_layer(new Layer(name)); + } + this.select_layer(this.layers[name]); + } + this.select_layer = function(layer) { console.log("Selecting layer:"+layer.name); @@ -78,13 +75,6 @@ function Surface(rune) this.layers[layer.name] = layer; this.element.appendChild(layer.element); } - - this.passive = function(cmd) - { - if(cmd.rect()){ - ronin.overlay.draw(cmd.position(),cmd.rect()); - } - } this.widget = function() { diff --git a/scripts/modules/terminal.js b/scripts/modules/terminal.js index 38446a7..a338f0a 100644 --- a/scripts/modules/terminal.js +++ b/scripts/modules/terminal.js @@ -89,7 +89,8 @@ function Terminal(rune) if(ronin.modules[key]){ ronin.modules[key].update_settings(cmd); - ronin.modules[key].active(cmd); + ronin.modules[key].run_methods(cmd); + // ronin.modules[key].active(cmd); ronin.terminal.history.push(content); ronin.terminal.history_index = ronin.terminal.history.length-1; ronin.terminal.update_menu(); diff --git a/scripts/units/unit.js b/scripts/units/unit.js index 58c3d21..937d3a4 100644 --- a/scripts/units/unit.js +++ b/scripts/units/unit.js @@ -1,6 +1,7 @@ function Unit() { this.example = "unknown"; + this.name = this.constructor.name; this.render = function() {