function Module(rune)
{
this.rune = rune;
this.element = null;
this.parameters = [];
this.variables = {};
this.layer = null;
this.docs = "Missing documentation.";
this.install = function()
{
console.log("Installing "+ronin.modules[this.rune].constructor.name);
}
this.create_layer = function()
{
this.layer = new Layer(this.constructor.name+".Preview",this);
this.layer.element.setAttribute("style","z-index:7000");
ronin.surface.add_layer(this.layer);
}
this.select_layer = function()
{
if(!this.layer){ this.create_layer(); }
return this.layer;
}
this.active = function(cmd)
{
}
this.passive = function(cmd)
{
}
this.set_variables = function(cmd)
{
for (var key in this.variables){
if(!cmd.variable(key)){ continue; }
this.variables[key] = cmd.variable(key).value;
ronin.terminal.log(new Log(this,"Updated "+key+" with "+cmd.variable(key).value));
}
}
this.hint = function(content)
{
var h = ""+ronin.module.constructor.name+" ";
for(param in ronin.module.parameters){
var name = new ronin.module.parameters[param]().constructor.name;
h += name+" ";
}
for(variable in ronin.module.variables){
h += variable+"="+ronin.module.variables[variable]+" ";
}
h += ronin.module.mouse_mode() ? ""+ronin.module.mouse_mode()+"" : "";
return this.pad(content)+h;
}
this.pad = function(input)
{
var s = "";
for (i = 0; i < input.length+1; i++){
s += "_";
}
return ""+s+"";
}
this.widget = function()
{
return "";
}
// Mouse
this.mouse_mode = function()
{
return null;
}
this.mouse_from = null;
this.mouse_down = function(position)
{
}
this.mouse_move = function(position,rect)
{
}
this.mouse_up = function(position,rect)
{
}
// Keyboard
this.key_escape = function()
{
}
this.key_delete = function()
{
}
this.key_arrow_up = function()
{
ronin.surface.layer_up();
}
this.key_arrow_down = function()
{
ronin.surface.layer_down();
}
this.key_arrow_left = function()
{
}
this.key_arrow_right = function()
{
}
}