From: Ian Jackson Date: Sat, 3 Oct 2020 00:44:02 +0000 (+0100) Subject: wrest and unwrest X-Git-Tag: otter-0.2.0~787 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=c1157e8084e26b9f13a5ba55b5b9aa2fa83bef37;p=otter.git wrest and unwrest Signed-off-by: Ian Jackson --- diff --git a/templates/script.ts b/templates/script.ts index e1986b15..970bf2cf 100644 --- a/templates/script.ts +++ b/templates/script.ts @@ -355,7 +355,8 @@ function some_keydown(e: KeyboardEvent) { keyops_local['wrest'] = function (uo: UoRecord) { wresting = !wresting; document.getElementById('wresting-warning')!.innerHTML = !wresting ? "" : - " (wresting mode!)"; + " (wresting mode!)"; + ungrab_all(); recompute_keybindings(); } @@ -438,13 +439,7 @@ function drag_mousedown(e : MouseEvent, shifted: boolean) { } } else if (held == null || wresting) { if (!shifted) { - for (let tpiece of Object.keys(pieces)) { - let tp = pieces[tpiece]!; - if (tp.held == us) { - set_ungrab(tpiece,tp); - api_piece(api, 'ungrab', tpiece,tp, { }); - } - } + ungrab_all(); } dragging = DRAGGING.MAYBE_GRAB; drag_add_piece(piece,p); @@ -461,6 +456,16 @@ function drag_mousedown(e : MouseEvent, shifted: boolean) { window.addEventListener('mouseup', drag_mouseup, true); } +function ungrab_all() { + for (let tpiece of Object.keys(pieces)) { + let tp = pieces[tpiece]!; + if (tp.held == us) { + set_ungrab(tpiece,tp); + api_piece(api, 'ungrab', tpiece,tp, { }); + } + } +} + function set_grab(piece: PieceId, p: PieceInfo, owner: PlayerId) { p.held = owner; redisplay_ancillaries(piece,p);