diff --git a/src/components/renderers/SmartCube.vue b/src/components/renderers/SmartCube.vue index 76b8ee4..a7e7c2a 100644 --- a/src/components/renderers/SmartCube.vue +++ b/src/components/renderers/SmartCube.vue @@ -343,7 +343,7 @@ const animateProgrammaticMove = (base, modifier) => { const logicalSteps = direction * count let visualSteps = logicalSteps if (axis === 'z') visualSteps = -visualSteps - if (base === 'U') visualSteps = -visualSteps + if (base === 'U' || base === 'D') visualSteps = -visualSteps const target = visualSteps * 90 const start = 0 const startTime = performance.now() @@ -368,15 +368,61 @@ const animateProgrammaticMove = (base, modifier) => { } const applyMove = (move) => { - let base = move + let logicalMove = move + + if (move[0] === 'F' && !move.endsWith('2')) { + if (move.endsWith('-prime')) { + logicalMove = 'F' + } else { + logicalMove = 'F-prime' + } + } + + if (logicalMove[0] === 'F') { + logicalMove = 'B' + logicalMove.slice(1) + } else if (logicalMove[0] === 'B') { + logicalMove = 'F' + logicalMove.slice(1) + } + + if (move[0] === 'L' && !move.endsWith('2')) { + if (move.endsWith('-prime')) { + logicalMove = 'L' + } else { + logicalMove = 'L-prime' + } + } + + if (logicalMove[0] === 'R') { + logicalMove = 'F' + logicalMove.slice(1) + } else if (logicalMove[0] === 'F') { + logicalMove = 'R' + logicalMove.slice(1) + } + + let mappedMove = logicalMove + + if (mappedMove[0] === 'L') { + mappedMove = 'B' + mappedMove.slice(1) + } else if (mappedMove[0] === 'B') { + mappedMove = 'L' + mappedMove.slice(1) + } + + let base = mappedMove let modifier = '' - if (move.endsWith('2')) { + if (mappedMove.endsWith('2')) { modifier = '2' - base = move[0] - } else if (move.endsWith('-prime')) { + base = mappedMove[0] + } else if (mappedMove.endsWith('-prime')) { modifier = "'" - base = move[0] + base = mappedMove[0] + } + + if (base === 'D') { + if (modifier === '') { + modifier = "'" + } else if (modifier === "'") { + modifier = '' + } } animateProgrammaticMove(base, modifier) @@ -427,21 +473,39 @@ onUnmounted(() => { -