X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2FplayCompMove.js;h=d83148fbf680465229b28a886b9f6c1be168c71d;hb=48edc620de7c6bbe791d690168392f50f02c328e;hp=062eae35757a5e3b4cbd422763edace3e0f44f44;hpb=1c9f093dad69e4c7b6d2b42cb5e0bd3bc7224ec9;p=vchess.git diff --git a/client/src/playCompMove.js b/client/src/playCompMove.js index 062eae35..d83148fb 100644 --- a/client/src/playCompMove.js +++ b/client/src/playCompMove.js @@ -1,26 +1,27 @@ -// TODO: https://github.com/webpack-contrib/worker-loader -// https://stackoverflow.com/questions/48713072/how-to-get-js-function-into-webworker-via-importscripts -// For asynchronous computer move search - -//self.addEventListener('message', (e) => -onmessage = async function(e) -{ - switch (e.data[0]) - { - case "scripts": - const vModule = await import("@/variants/" + e.data[1] + ".js"); - self.V = vModule.VariantRules; +// Logic to play a computer move in a web worker +onmessage = async function(e) { + switch (e.data[0]) { + case "scripts": { + await import("@/variants/" + e.data[1] + ".js") + .then((vModule) => { self.V = vModule[e.data[1] + "Rules"]; }); break; - case "init": + } + case "init": { const fen = e.data[1]; self.vr = new self.V(fen); break; + } case "newmove": - self.vr.play(e.data[1]); + let move = e.data[1]; + // Caution: could be a multi-move + if (!Array.isArray(move)) + move = [move]; + move.forEach(m => self.vr.play(m)); break; - case "askmove": + case "askmove": { const compMove = self.vr.getComputerMove(); postMessage(compMove); break; + } } -} +};