From 9f68262f9eb4720b4d6466e1cf5cf9c0edb9c286 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 21 Feb 2018 04:10:28 +0100 Subject: smash --- client/lib/mouse.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 client/lib/mouse.js (limited to 'client/lib/mouse.js') diff --git a/client/lib/mouse.js b/client/lib/mouse.js new file mode 100644 index 0000000..b4fa961 --- /dev/null +++ b/client/lib/mouse.js @@ -0,0 +1,57 @@ +/* + +mouse.register({ + down: (x, y) => { + }, + move: (x, y, dx, dy) => { + }, + up: (x, y) => { + }, +}) + +*/ + + +let fns = { + down: [], + move: [], + up: [], +} + +export default { + register: (callbacks) => { + callbacks.down && fns.down.push(callbacks.down) + callbacks.move && fns.move.push(callbacks.move) + callbacks.up && fns.up.push(callbacks.up) + } +} + +let x, y, dragging = false + +function down(e){ + x = e.pageX + y = e.pageY + dragging = true + fns.down.map(f => f(x, y)) +} +function move(e){ + if (!dragging) return + let dx = e.pageX - x + let dy = e.pageY - y + x = e.pageX + y = e.pageY + dragging = true + fns.move.map(f => f(x, y, dx, dy)) +} +function up(e){ + dragging = false + fns.up.map(f => f(x, y)) +} + +function touch(f){ return (e) => f(e.touches[0]) } +document.body.addEventListener("mousedown", down) +document.body.addEventListener("mousemove", move) +document.body.addEventListener("mouseup", up) +document.body.addEventListener("touchstart", touch(down)) +document.body.addEventListener("touchmove", touch(move)) +document.body.addEventListener("touchup", touch(up)) -- cgit v1.2.3-70-g09d2