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(() => { -
+
- - + +
- + + +
+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
@@ -483,13 +547,20 @@ onUnmounted(() => { .controls { position: absolute; top: 96px; - right: 24px; display: flex; flex-direction: column; gap: 8px; z-index: 50; } +.controls-left { + left: 24px; +} + +.controls-right { + right: 24px; +} + .controls-row { display: flex; gap: 8px;