From 3392ab87d2040f9ab76c3095cf5b134369d56831 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Sun, 13 Jan 2019 12:12:33 +1200 Subject: [PATCH] Divided clear/draw --- README.md | 4 ++-- desktop/sources/scripts/listener.js | 27 ++++++++++++++++----------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 60a9760..8ed3532 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,10 @@ npm start ## UDP Controls -Dotgrid can be controlled by UDP via the port `49160`. It expects messages of 6 characters. +Dotgrid can be controlled by UDP via the port `49160`. It expects messages up to 6 characters. - **layer** `0/1/2` -- **type** `l/a/r/c` +- **type** `l/c/r/z` (`l`:line, `c`:clock-wise arc, `r`: cc-wise arc, `z`: close, `.`:clear, `*`: draw) - **from** `0-z``0-z` - **to** `0-z``0-z` diff --git a/desktop/sources/scripts/listener.js b/desktop/sources/scripts/listener.js index 6df0893..51a9771 100644 --- a/desktop/sources/scripts/listener.js +++ b/desktop/sources/scripts/listener.js @@ -4,7 +4,7 @@ // Ex: 1a0156(6 characters 0-9a-z) // 0 layer[0-2] -// 1 type[larc*] +// 1 type[lcrd*] // 2 from[0-z][0-z] // 4 to[0-z][0-z] @@ -17,24 +17,27 @@ function Listener (dotgrid) { return clamp(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y'].indexOf(c.toLowerCase()), 0, 36) * 15 + 15 } - function operate (data) { - if(!data){ return } - if(!dotgrid.tool.layers[data.layer]){ return } - dotgrid.tool.index = data.layer - dotgrid.tool.addSegment(data.type, [data.from, data.to]) - dotgrid.renderer.update() - } - function clear () { dotgrid.tool.erase() + } + + function operate (data) { + if (!data) { return } + if (!dotgrid.tool.layers[data.layer]) { return } + dotgrid.tool.index = data.layer + dotgrid.tool.addSegment(data.type, [data.from, data.to]) + } + + function draw () { dotgrid.renderer.update() } function parse (msg) { - if (msg.length < 6) { return } + if (msg.length < 2) { return } const layer = parseInt(msg.substr(0, 1)) - const type = { 'l': 'line', 'a': 'arc_c', 'r': 'arc_r', 'c': 'close' }[msg.substr(1, 1).toLowerCase()] + const type = { 'l': 'line', 'c': 'arc_c', 'r': 'arc_r', '*': 'draw' }[msg.substr(1, 1).toLowerCase()] if (!type) { clear(); return } + if (type === 'draw') { draw(); return } const from = { x: base36(msg.substr(2, 1)), y: base36(msg.substr(3, 1)) } const to = { x: base36(msg.substr(4, 1)), y: base36(msg.substr(5, 1)) } return { layer: layer, type: type, from: from, to: to } @@ -44,6 +47,8 @@ function Listener (dotgrid) { return v < min ? min : v > max ? max : v } + // Server + this.server.on('message', (msg, rinfo) => { // console.log(`Server received UDP message:\n ${msg} from ${rinfo.address}:${rinfo.port}`) operate(parse(`${msg}`))