24 lines
827 B
JavaScript
24 lines
827 B
JavaScript
// @ts-check
|
|
|
|
/**
|
|
* @typedef {import('../core/minesweeper/rules.js').MoveEvent} MnswprMoveEvent
|
|
*/
|
|
|
|
/**
|
|
* Map a recorded move-event back to the rules move that produced it: `flag` and
|
|
* `unflag` are both the toggle move `flag`; `reveal` and `chord` pass through.
|
|
* Unknown kinds are ignored. Shared by the mnswpr replay adapters (progress and
|
|
* full-board state) so both replay a stream through the core rules identically.
|
|
*
|
|
* @param {MnswprMoveEvent} e
|
|
* @returns {{ type: 'reveal' | 'flag' | 'chord', r: number, c: number } | null}
|
|
*/
|
|
export function toMove(e) {
|
|
switch (e && e.type) {
|
|
case 'reveal': return { type: 'reveal', r: e.r, c: e.c }
|
|
case 'chord': return { type: 'chord', r: e.r, c: e.c }
|
|
case 'flag':
|
|
case 'unflag': return { type: 'flag', r: e.r, c: e.c }
|
|
default: return null
|
|
}
|
|
}
|