diff --git a/lights.js b/lights.js index 9b9ebf6..3d91db8 100644 --- a/lights.js +++ b/lights.js @@ -52,44 +52,51 @@ export const functions = { (index, arg1, arg2) => { return Math.floor(Math.random() * 256) }, { requires_arg1: true, - requires_arg2: false + requires_arg2: false, + convert_args: false } ), constant: new Function( - (index, arg1, arg2) => { return args; }, + (index, arg1, arg2) => { return arg2; }, { requires_arg1: true, - requires_arg2: true + requires_arg2: true, + convert_args: false }), modulo: new Function( - (index, arg1, arg2) => { return arg1 % args; }, + (index, arg1, arg2) => { return arg1 % arg2; }, { requires_arg1: true, - requires_arg2: true + requires_arg2: true, + convert_args: true }), move: new Function( - (index, arg1, arg2) => { targets[args] = arg1; return arg1; }, + (index, arg1, arg2) => { targets[arg1] = arg2; return arg2; }, { requires_arg1: true, - requires_arg2: true + requires_arg2: true, + convert_args: false }), swap: new Function( - (index, arg1, arg2) => { let temp = targets[args]; targets[args] = arg1; return temp; }, + (index, arg1, arg2) => { let temp = targets[arg1]; targets[arg1] = arg2; return temp; }, { requires_arg1: true, - requires_arg2: true + requires_arg2: true, + convert_args: false }), add: new Function( - (index, arg1, arg2) => { return arg1 + args; }, + (index, arg1, arg2) => { return arg1 + arg2; }, { requires_arg1: true, - requires_arg2: true + requires_arg2: true, + convert_args: true }), subtract: new Function( - (index, arg1, arg2) => { return arg1 - args; }, + (index, arg1, arg2) => { return arg1 - arg2; }, { requires_arg1: true, - requires_arg2: true + requires_arg2: true, + convert_args: true }) } @@ -102,7 +109,14 @@ function tick_pattern() { for (let command of pattern) { let name = command.command; if (functions[name]) { - targets[command.arg1] = functions[name].func(i, targets[command.arg1], target.arg); + if (functions[name].options.convert_args) { + let param_arg1 = parseInt(command.arg1) || targets[command.arg1]; + let param_arg2 = parseInt(command.arg2) || targets[command.arg2]; + targets[command.arg1] = functions[name].func(i, param_arg1, param_arg2); + } + else { + targets[command.arg1] = functions[name].func(i, command.arg1, command.arg2); + } } } log.debug(`next: ${targets["r"]}, ${targets["g"]}, ${targets["b"]}`); diff --git a/server.js b/server.js index d5e807b..e741d6b 100644 --- a/server.js +++ b/server.js @@ -29,7 +29,7 @@ export function recv(callback, errorCallback) { con.on('data', (data) => { let parsed_data = parse(String(data)); - if (parsed_data.errors) { + if (parsed_data.errors != undefined && parsed_data.errors.length > 0) { con.write(JSON.stringify(parsed_data)); errorCallback(parsed_data); }