Files
rubic-cube/src/workers/Cube.worker.js
Grzegorz Kucmierz a75c148a5b
All checks were successful
Deploy to Production / deploy (push) Successful in 9s
chore: bump version to 0.0.29
2026-02-22 20:31:54 +00:00

55 lines
1.2 KiB
JavaScript

import { RubiksJSModel } from '../utils/RubiksJSModel.js';
const cube = new RubiksJSModel();
// Helper to send state update
const sendUpdate = () => {
try {
const cubies = cube.toCubies();
// console.log('[Worker] Sending update with cubies:', cubies.length);
postMessage({
type: 'STATE_UPDATE',
payload: {
cubies
}
});
} catch (e) {
console.error('[Worker] Error generating cubies:', e);
postMessage({ type: 'ERROR', payload: e.message });
}
};
self.onmessage = (e) => {
const { type, payload } = e.data;
switch (type) {
case 'INIT':
case 'RESET':
cube.reset();
sendUpdate();
break;
case 'ROTATE_LAYER': {
const { axis, index, direction } = payload;
cube.rotateLayer(axis, index, direction);
sendUpdate();
break;
}
case 'TURN': {
const { move } = payload;
cube.applyTurn(move);
sendUpdate();
break;
}
case 'VALIDATE':
const validation = cube.validate();
postMessage({
type: 'VALIDATION_RESULT',
payload: { valid: validation.valid, errors: validation.errors }
});
break;
}
};