@bedard/hexchess-engine
Version:
A game engine for Gliński's hexagonal chess
27 lines (26 loc) • 934 B
JavaScript
/** execute a command with the engine worker */
export function execute(worker, command, options = {}) {
const id = crypto.randomUUID();
return new Promise((resolve) => {
const listener = (evt) => {
if (evt.data.id === id && typeof evt.data.response === 'object') {
worker.removeEventListener('message', listener);
resolve({
command,
options: evt.data.options,
response: evt.data.response,
});
}
};
worker.addEventListener('message', listener);
worker.postMessage({ command, id, options });
});
}
/** evaluate a position */
export function evaluate(worker, options) {
return execute(worker, 'hexchess/evaluate', options);
}
/** test for a connection with the engine worker */
export function ping(worker) {
return execute(worker, 'hexchess/ping');
}