@@ -74,7 +74,43 @@ export default async function loadEngine(profileName, engineName, attempt = 0) {
7474 } ;
7575 }
7676
77- function loadLilaStockfish ( workerName ) {
77+ function loadFairyStockfish ( ) {
78+ const stockfish = new Worker ( `../app/assets/engines/fairy-stockfish-nnue.wasm/stockfishWorker.js` ) ;
79+ let stockfish_loaded = false ;
80+
81+ stockfish . onmessage = async e => {
82+ if ( e . data === true ) {
83+ stockfish_loaded = true ;
84+
85+ this . engines . push ( {
86+ 'type' : profileChessEngine ,
87+ 'engine' : ( method , a ) => stockfish . postMessage ( { method : method , args : [ ...a ] } ) ,
88+ 'sendMsg' : msg => stockfish . postMessage ( { method : 'postMessage' , args : [ msg ] } ) ,
89+ 'worker' : stockfish ,
90+ profileName
91+ } ) ;
92+
93+ startGame . bind ( this ) ( FORMAT_VARIANT ( this . pV [ profileName ] . chessVariant ) ) ;
94+ } else if ( e . data ) {
95+ processEngineMessage ( e . data ) ;
96+ }
97+ } ;
98+
99+ const waitStockfish = setInterval ( ( ) => {
100+ if ( stockfish_loaded ) {
101+ clearInterval ( waitStockfish ) ;
102+ return ;
103+ }
104+
105+ stockfish . postMessage ( { method : 'acas_check_loaded' } ) ;
106+ } , 100 ) ;
107+
108+ stockfish . onerror = e => {
109+ restartEngine . bind ( this ) ( 'fairy-stockfish-nnue-wasm' , e ) ;
110+ } ;
111+ }
112+
113+ function loadLilaStockfish ( workerName , engineName ) {
78114 const stockfish = new Worker ( `../app/assets/engines/lila-stockfish/${ workerName } .js` , { type : 'module' } ) ;
79115 let stockfish_loaded = false ;
80116
@@ -90,10 +126,8 @@ export default async function loadEngine(profileName, engineName, attempt = 0) {
90126 profileName
91127 } ) ;
92128
93- startGame . bind ( this ) ( workerName === 'f14-worker'
94- ? FORMAT_VARIANT ( this . pV [ profileName ] . chessVariant )
95- : 'chess' ) ;
96- } else if ( e . data ) {
129+ startGame . bind ( this ) ( 'chess' ) ;
130+ } else if ( e . data ) {
97131 processEngineMessage ( e . data ) ;
98132 }
99133 } ;
@@ -106,6 +140,10 @@ export default async function loadEngine(profileName, engineName, attempt = 0) {
106140
107141 stockfish . postMessage ( { method : 'acas_check_loaded' } ) ;
108142 } , 100 ) ;
143+
144+ stockfish . onerror = e => {
145+ restartEngine . bind ( this ) ( engineName , e ) ;
146+ } ;
109147 }
110148
111149 function loadLc0 ( ) {
@@ -248,7 +286,7 @@ export default async function loadEngine(profileName, engineName, attempt = 0) {
248286 break ;
249287
250288 case 'stockfish-16-1-wasm' :
251- loadLilaStockfish . bind ( this ) ( '16-0-worker' ) ;
289+ loadLilaStockfish . bind ( this ) ( '16-0-worker' , 'stockfish-16-1-wasm' ) ;
252290 break ;
253291
254292 case 'stockfish-11' :
@@ -259,8 +297,8 @@ export default async function loadEngine(profileName, engineName, attempt = 0) {
259297 loadStockfish . bind ( this ) ( 'stockfish-8' ) ;
260298 break ;
261299
262- case 'fairy-stockfish-nnue-wasm' :
263- loadLilaStockfish . bind ( this ) ( 'f14-worker' ) ;
300+ case 'fairy-stockfish-nnue-wasm' :
301+ loadFairyStockfish . bind ( this ) ( ) ;
264302 break ;
265303
266304 case 'lozza-5' :
0 commit comments