summaryrefslogtreecommitdiff
path: root/apps/plugins/puzzles/src/emccpre.js
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2019-05-15 18:16:27 -0400
committerFranklin Wei <git@fwei.tk>2019-05-15 18:16:27 -0400
commitf940276fd9bc38ae34d4119fd1d983171a627400 (patch)
tree117a191e61c070548b4c55b35f6d1159f98f03f9 /apps/plugins/puzzles/src/emccpre.js
parent4ed57276542124a22c26ebb1d307996fc3a7556c (diff)
downloadrockbox-f940276fd9bc38ae34d4119fd1d983171a627400.tar.gz
rockbox-f940276fd9bc38ae34d4119fd1d983171a627400.zip
puzzles: resync with upstream
This brings the puzzles source to upstream commit e2135d5. (I've made my own changes on top of that.) This brings in a couple bugfixes and a new solver for Dominosa. Change-Id: I11d46b43171787832330a5e2e0d2f353f36f727d
Diffstat (limited to 'apps/plugins/puzzles/src/emccpre.js')
-rw-r--r--apps/plugins/puzzles/src/emccpre.js39
1 files changed, 31 insertions, 8 deletions
diff --git a/apps/plugins/puzzles/src/emccpre.js b/apps/plugins/puzzles/src/emccpre.js
index 5082555617..56f69721f7 100644
--- a/apps/plugins/puzzles/src/emccpre.js
+++ b/apps/plugins/puzzles/src/emccpre.js
@@ -212,28 +212,51 @@ function initPuzzle() {
212 // button down (our puzzles don't want those events). 212 // button down (our puzzles don't want those events).
213 mousedown = Module.cwrap('mousedown', 'void', 213 mousedown = Module.cwrap('mousedown', 'void',
214 ['number', 'number', 'number']); 214 ['number', 'number', 'number']);
215 buttons_down = 0; 215
216 button_phys2log = [null, null, null];
217 buttons_down = function() {
218 var i, toret = 0;
219 for (i = 0; i < 3; i++)
220 if (button_phys2log[i] !== null)
221 toret |= 1 << button_phys2log[i];
222 return toret;
223 };
224
216 onscreen_canvas.onmousedown = function(event) { 225 onscreen_canvas.onmousedown = function(event) {
226 if (event.button >= 3)
227 return;
228
217 var xy = relative_mouse_coords(event, onscreen_canvas); 229 var xy = relative_mouse_coords(event, onscreen_canvas);
218 mousedown(xy.x, xy.y, event.button); 230 var logbutton = event.button;
219 buttons_down |= 1 << event.button; 231 if (event.shiftKey)
232 logbutton = 1; // Shift-click overrides to middle button
233 else if (event.ctrlKey)
234 logbutton = 2; // Ctrl-click overrides to right button
235
236 mousedown(xy.x, xy.y, logbutton);
237 button_phys2log[event.button] = logbutton;
238
220 onscreen_canvas.setCapture(true); 239 onscreen_canvas.setCapture(true);
221 }; 240 };
222 mousemove = Module.cwrap('mousemove', 'void', 241 mousemove = Module.cwrap('mousemove', 'void',
223 ['number', 'number', 'number']); 242 ['number', 'number', 'number']);
224 onscreen_canvas.onmousemove = function(event) { 243 onscreen_canvas.onmousemove = function(event) {
225 if (buttons_down) { 244 var down = buttons_down();
245 if (down) {
226 var xy = relative_mouse_coords(event, onscreen_canvas); 246 var xy = relative_mouse_coords(event, onscreen_canvas);
227 mousemove(xy.x, xy.y, buttons_down); 247 mousemove(xy.x, xy.y, down);
228 } 248 }
229 }; 249 };
230 mouseup = Module.cwrap('mouseup', 'void', 250 mouseup = Module.cwrap('mouseup', 'void',
231 ['number', 'number', 'number']); 251 ['number', 'number', 'number']);
232 onscreen_canvas.onmouseup = function(event) { 252 onscreen_canvas.onmouseup = function(event) {
233 if (buttons_down & (1 << event.button)) { 253 if (event.button >= 3)
234 buttons_down ^= 1 << event.button; 254 return;
255
256 if (button_phys2log[event.button] !== null) {
235 var xy = relative_mouse_coords(event, onscreen_canvas); 257 var xy = relative_mouse_coords(event, onscreen_canvas);
236 mouseup(xy.x, xy.y, event.button); 258 mouseup(xy.x, xy.y, button_phys2log[event.button]);
259 button_phys2log[event.button] = null;
237 } 260 }
238 }; 261 };
239 262