ronin/scripts/modules/typographe.js
2017-03-17 15:29:47 -07:00

76 lines
1.8 KiB
JavaScript

function Typographe(rune)
{
Module.call(this,rune);
this.parameters = [Position,Color,Value];
this.variables = {"text" : null, "font" : "Georgia"};
this.active = function(cmd)
{
if(this.layer){ this.layer.remove(this); }
if(cmd.variable("text")){
this.add_text(ronin.surface.active_layer.context(),cmd);
}
}
this.passive = function(cmd)
{
if(!this.layer){ this.create_layer(); this.layer.is_blinking = true; }
if(cmd.variable("text")){
this.layer.clear();
this.add_text(this.layer.context(),cmd);
}
}
this.add_text = function(context,cmd)
{
var ctx = context;
var text = cmd.variable("text").value.replace("_"," ");
var position = cmd.position() ? cmd.position() : new Position(20,40);
var color = cmd.color() ? cmd.color() : new Color("#000000");
var size = cmd.value() ? cmd.value().int : 40;
var font = cmd.variable("font") ? cmd.variable("font").value : "Georgia";
ctx.font = size+"px "+font;
ctx.fillStyle = color.hex;
ctx.fillText(text,position.x,position.y);
}
// Mouse
this.mouse_mode = function()
{
return "Typographe";
}
this.mouse_down = function(position)
{
ronin.overlay.draw(position);
ronin.terminal.input_element.value = "& "+position.render()+" ";
ronin.terminal.update_hint();
}
this.mouse_move = function(position,rect)
{
if(!this.mouse_held){ return; }
ronin.overlay.draw(position);
ronin.terminal.input_element.value = "& "+position.render()+" ";
ronin.terminal.update_hint();
}
this.mouse_up = function(position)
{
ronin.overlay.draw(position);
ronin.terminal.input_element.value = "& "+position.render()+" ";
ronin.terminal.update_hint();
}
this.key_escape = function()
{
if(this.layer){ this.layer.remove(this); }
}
}