diff options
author | Franklin Wei <git@fwei.tk> | 2019-05-15 18:16:27 -0400 |
---|---|---|
committer | Franklin Wei <git@fwei.tk> | 2019-05-15 18:16:27 -0400 |
commit | f940276fd9bc38ae34d4119fd1d983171a627400 (patch) | |
tree | 117a191e61c070548b4c55b35f6d1159f98f03f9 /apps/plugins/puzzles/src/emccpre.js | |
parent | 4ed57276542124a22c26ebb1d307996fc3a7556c (diff) | |
download | rockbox-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.js | 39 |
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 | ||