First draft for the new vector tool
This commit is contained in:
		| @@ -7,6 +7,8 @@ function Cursor(rune) | |||||||
|  |  | ||||||
|   this.mode = null; |   this.mode = null; | ||||||
|   this.position = new Position(); |   this.position = new Position(); | ||||||
|  |   this.magnetism = null; | ||||||
|  |   this.grid = new Position(4,4); | ||||||
|  |  | ||||||
|   this.layer = null; |   this.layer = null; | ||||||
|  |  | ||||||
| @@ -27,8 +29,20 @@ function Cursor(rune) | |||||||
|  |  | ||||||
|   this.active = function(cmd) |   this.active = function(cmd) | ||||||
|   { |   { | ||||||
|     if(!cmd.rect()){ return; } |     this.layer.clear(); | ||||||
|     this.draw(cmd.rect(),cmd.position()); |  | ||||||
|  |     if(cmd.bang()){ | ||||||
|  |       this.magnetism = null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if(cmd.position()){ | ||||||
|  |       this.grid = cmd.position(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if(cmd.rect()){ | ||||||
|  |       this.magnetism = cmd.rect(); | ||||||
|  |       this.draw(cmd.rect(),this.grid); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   this.draw = function(rect,grid) |   this.draw = function(rect,grid) | ||||||
| @@ -59,7 +73,10 @@ function Cursor(rune) | |||||||
|  |  | ||||||
|   this.update = function(event) |   this.update = function(event) | ||||||
|   { |   { | ||||||
|     if(event.altKey == true){ |     if(ronin.module){ | ||||||
|  |       this.set_mode(ronin.module); | ||||||
|  |     } | ||||||
|  |     else if(event.altKey == true){ | ||||||
|       this.set_mode(ronin.surface); |       this.set_mode(ronin.surface); | ||||||
|     } |     } | ||||||
|     else{ |     else{ | ||||||
| @@ -74,8 +91,24 @@ function Cursor(rune) | |||||||
|     document.body.setAttribute("class",this.mode.constructor.name); |     document.body.setAttribute("class",this.mode.constructor.name); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   //  | ||||||
|  |  | ||||||
|  |   this.magnetic_position = function(position) | ||||||
|  |   { | ||||||
|  |     var x = parseInt(position.x / 20) * 20; | ||||||
|  |     var y = parseInt(position.y / 20) * 20; | ||||||
|  |  | ||||||
|  |     return new Position(x,y); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // | ||||||
|  |    | ||||||
|   this.mouse_down = function(position) |   this.mouse_down = function(position) | ||||||
|   { |   { | ||||||
|  |     if(this.magnetism){ | ||||||
|  |       position = this.magnetic_position(position); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     this.position = position; |     this.position = position; | ||||||
|     if(this.mode.constructor.name != Cursor.name){ |     if(this.mode.constructor.name != Cursor.name){ | ||||||
|       this.mode.mouse_down(position);   |       this.mode.mouse_down(position);   | ||||||
| @@ -85,6 +118,10 @@ function Cursor(rune) | |||||||
|    |    | ||||||
|   this.mouse_move = function(position) |   this.mouse_move = function(position) | ||||||
|   { |   { | ||||||
|  |     if(this.magnetism){ | ||||||
|  |       position = this.magnetic_position(position); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     this.position = position; |     this.position = position; | ||||||
|     if(this.mode.constructor.name != Cursor.name){ |     if(this.mode.constructor.name != Cursor.name){ | ||||||
|       this.mode.mouse_move(position);   |       this.mode.mouse_move(position);   | ||||||
| @@ -93,6 +130,10 @@ function Cursor(rune) | |||||||
|    |    | ||||||
|   this.mouse_up = function(position) |   this.mouse_up = function(position) | ||||||
|   { |   { | ||||||
|  |     if(this.magnetism){ | ||||||
|  |       position = this.magnetic_position(position); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     this.position = position; |     this.position = position; | ||||||
|     if(this.mode.constructor.name != Cursor.name){ |     if(this.mode.constructor.name != Cursor.name){ | ||||||
|       this.mode.mouse_up(position);   |       this.mode.mouse_up(position);   | ||||||
|   | |||||||
| @@ -1,12 +1,16 @@ | |||||||
| function Keyboard() | function Keyboard() | ||||||
| { | { | ||||||
|   this.shift_held = false; |   this.shift_held = false; | ||||||
|  |   this.alt_held = false; | ||||||
|  |  | ||||||
|   this.listen_onkeydown = function(event) |   this.listen_onkeydown = function(event) | ||||||
|   { |   { | ||||||
|     if(event.shiftKey == true){ |     if(event.shiftKey == true){ | ||||||
|       this.shift_held = true; |       this.shift_held = true; | ||||||
|     } |     } | ||||||
|  |     if(event.altKey == true){ | ||||||
|  |       this.alt_held = true; | ||||||
|  |     } | ||||||
|     ronin.cursor.update(event); |     ronin.cursor.update(event); | ||||||
|     ronin.widget.update(); |     ronin.widget.update(); | ||||||
|   } |   } | ||||||
| @@ -14,6 +18,7 @@ function Keyboard() | |||||||
|   this.listen_onkeyup = function(event) |   this.listen_onkeyup = function(event) | ||||||
|   { |   { | ||||||
|     this.shift_held = false; |     this.shift_held = false; | ||||||
|  |     this.alt_held = false; | ||||||
|  |  | ||||||
|     switch (event.key) { |     switch (event.key) { | ||||||
|       case "Enter": this.key_enter(); break; |       case "Enter": this.key_enter(); break; | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ function Vector(rune) | |||||||
|   Module.call(this,rune); |   Module.call(this,rune); | ||||||
|    |    | ||||||
|   this.parameters = [Any]; |   this.parameters = [Any]; | ||||||
|   this.variables  = {"fill_color" : "none","stroke_width" : 2,"stroke_color" : "#ffffff", "line_cap" : "square"}; |   this.variables  = {"fill_color" : "none","stroke_width" : 5,"stroke_color" : "#ffffff", "line_cap" : "square"}; | ||||||
|  |  | ||||||
|   this.layer = null; |   this.layer = null; | ||||||
|  |  | ||||||
| @@ -20,7 +20,7 @@ function Vector(rune) | |||||||
|   { |   { | ||||||
|     this.layer.clear(); |     this.layer.clear(); | ||||||
|     this.layer.context().lineCap = cmd.variable("line_cap") ? cmd.variable("line_cap").value : "round"; |     this.layer.context().lineCap = cmd.variable("line_cap") ? cmd.variable("line_cap").value : "round"; | ||||||
|     this.layer.context().lineWidth = cmd.variable("stroke_width") ? cmd.variable("stroke_width").value : ronin.brush.size; |     this.layer.context().lineWidth = cmd.variable("stroke_width") ? cmd.variable("stroke_width").value : 5; | ||||||
|     this.layer.context().strokeStyle = cmd.variable("stroke_color") ? cmd.variable("stroke_color").value : "#ffffff"; |     this.layer.context().strokeStyle = cmd.variable("stroke_color") ? cmd.variable("stroke_color").value : "#ffffff"; | ||||||
|     this.layer.context().stroke(new Path2D(cmd.content.join(" "))); |     this.layer.context().stroke(new Path2D(cmd.content.join(" "))); | ||||||
|   } |   } | ||||||
| @@ -29,7 +29,7 @@ function Vector(rune) | |||||||
|   { |   { | ||||||
|     this.layer.clear(); |     this.layer.clear(); | ||||||
|     ronin.surface.active_layer.context().lineCap = cmd.variable("line_cap") ? cmd.variable("line_cap").value : "round"; |     ronin.surface.active_layer.context().lineCap = cmd.variable("line_cap") ? cmd.variable("line_cap").value : "round"; | ||||||
|     ronin.surface.active_layer.context().lineWidth = cmd.variable("stroke_width") ? cmd.variable("stroke_width").value : ronin.brush.size; |     ronin.surface.active_layer.context().lineWidth = cmd.variable("stroke_width") ? cmd.variable("stroke_width").value : 5; | ||||||
|     ronin.surface.active_layer.context().strokeStyle = cmd.variable("stroke_color") ? cmd.variable("stroke_color").value : "#ffffff"; |     ronin.surface.active_layer.context().strokeStyle = cmd.variable("stroke_color") ? cmd.variable("stroke_color").value : "#ffffff"; | ||||||
|     ronin.surface.active_layer.context().stroke(new Path2D(cmd.content.join(" "))); |     ronin.surface.active_layer.context().stroke(new Path2D(cmd.content.join(" "))); | ||||||
|   } |   } | ||||||
| @@ -40,17 +40,34 @@ function Vector(rune) | |||||||
|  |  | ||||||
|   this.widget_cursor = function() |   this.widget_cursor = function() | ||||||
|   { |   { | ||||||
|     return "Vector"; |     if(keyboard.shift_held == true){ | ||||||
|  |       return "Vector(Counterclock Arc)"; | ||||||
|  |     } | ||||||
|  |     else if(keyboard.alt_held == true){ | ||||||
|  |       return "Vector(Clockwise Arc)"; | ||||||
|  |     } | ||||||
|  |     else{ | ||||||
|  |       return "Vector(Line)"; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   this.memory = null; |   this.coordinates = []; | ||||||
|  |  | ||||||
|  |   this.create_command = function() | ||||||
|  |   { | ||||||
|  |     var command = "+ "; | ||||||
|  |  | ||||||
|  |     for (var i = 0; i < this.coordinates.length; i++) { | ||||||
|  |       command += i == 0 ? "M"+this.coordinates[i]+" " : this.coordinates[i]+" "; | ||||||
|  |     } | ||||||
|  |     return command; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   this.mouse_down = function(position) |   this.mouse_down = function(position) | ||||||
|   { |   { | ||||||
|     this.click = true; |     this.click = true; | ||||||
|     this.memory = commander.element_input.value; |  | ||||||
|  |  | ||||||
|     commander.element_input.value += "L"+position.render()+" "; |     commander.element_input.value = this.create_command(); | ||||||
|     commander.hint.update(); |     commander.hint.update(); | ||||||
|     this.passive(commander.cmd()); |     this.passive(commander.cmd()); | ||||||
|   } |   } | ||||||
| @@ -58,7 +75,8 @@ function Vector(rune) | |||||||
|   this.mouse_move = function(position) |   this.mouse_move = function(position) | ||||||
|   { |   { | ||||||
|     if(!this.click){ return; } |     if(!this.click){ return; } | ||||||
|     commander.element_input.value = this.memory+"L"+position.render()+" "; |     commander.element_input.value = this.create_command(); | ||||||
|  |     commander.element_input.value += "L"+position.render(); | ||||||
|     commander.hint.update(); |     commander.hint.update(); | ||||||
|     this.passive(commander.cmd()); |     this.passive(commander.cmd()); | ||||||
|   } |   } | ||||||
| @@ -66,5 +84,20 @@ function Vector(rune) | |||||||
|   this.mouse_up = function(position) |   this.mouse_up = function(position) | ||||||
|   { |   { | ||||||
|     this.click = null; |     this.click = null; | ||||||
|  |  | ||||||
|  |     // Add the right thing | ||||||
|  |     if(keyboard.shift_held == true){ | ||||||
|  |       this.coordinates.push("A1,1 0 0,1 "+position.render()); | ||||||
|  |     } | ||||||
|  |     else if(keyboard.alt_held == true){ | ||||||
|  |      this.coordinates.push("A1,1 0 0,0 "+position.render());  | ||||||
|  |     } | ||||||
|  |     else{ | ||||||
|  |       this.coordinates.push(position.render()); | ||||||
|  |     } | ||||||
|  |    | ||||||
|  |     commander.element_input.value = this.create_command(); | ||||||
|  |     commander.hint.update(); | ||||||
|  |     this.passive(commander.cmd()); | ||||||
|   } |   } | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user