From dcbbe1f16380670223bdc83dcd78959b507ee071 Mon Sep 17 00:00:00 2001
From: ksthicke <85892703+ksthicke@users.noreply.github.com>
Date: Thu, 16 May 2024 19:51:24 -0500
Subject: [PATCH] move PvE code to store.js

---
 src/renderer/components/PVLines.vue     | 22 ----------------------
 src/renderer/components/SettingsTab.vue |  6 ++++--
 src/renderer/engine/driver.js           |  4 +++-
 src/renderer/engine/index.js            |  2 +-
 src/renderer/store.js                   |  7 +++++++
 5 files changed, 15 insertions(+), 26 deletions(-)

diff --git a/src/renderer/components/PVLines.vue b/src/renderer/components/PVLines.vue
index 3a677fdf..82ddaf37 100644
--- a/src/renderer/components/PVLines.vue
+++ b/src/renderer/components/PVLines.vue
@@ -151,28 +151,6 @@ export default {
       this.originalMultiPV = this.engineSettings.MultiPV
       this.updateLines()
     },
-    enginetime () {
-      if (this.active && this.PvE && !this.turn) {
-        if (this.PvEValue === 'time') {
-          if (this.enginetime >= this.PvEInput) {
-            if (this.lines[0] != null) {
-              this.onClick(this.lines[0])
-            }
-          }
-        } else if (this.PvEValue === 'nodes') {
-          if (this.enginetime === 60000) {
-            this.onClick(this.lines[0])
-          }
-        } else if (this.PvEValue === 'depth') {
-          if (this.enginetime === 60000) {
-            this.onClick(this.lines[0])
-          }
-          if (this.enginetime >= 5000 && this.depth === this.seldepth) {
-            this.onClick(this.lines[0])
-          }
-        }
-      }
-    },
     nodes () {
       if (this.active && this.PvE && !this.turn) {
         if (this.PvEValue === 'nodes') {
diff --git a/src/renderer/components/SettingsTab.vue b/src/renderer/components/SettingsTab.vue
index fc684159..5a92b5d4 100644
--- a/src/renderer/components/SettingsTab.vue
+++ b/src/renderer/components/SettingsTab.vue
@@ -252,12 +252,14 @@ export default {
         case 'nodes':
           this.$store.dispatch(
             'setPvEParam',
-            'go nodes ' + this.PvEInput * 1000000
+            'go nodes ' + this.PvEInput * 1000000 + ' movetime 60000'
           )
           this.$store.dispatch('setPvEInput', this.PvEInput * 1000000)
           break
         case 'depth':
-          this.$store.dispatch('setPvEParam', 'go depth ' + this.PvEInput)
+          this.$store.dispatch(
+            'setPvEParam', 
+            'go depth ' + this.PvEInput + ' movetime 60000')
           this.$store.dispatch('setPvEInput', this.PvEInput)
           break
         default:
diff --git a/src/renderer/engine/driver.js b/src/renderer/engine/driver.js
index a86c6ccd..e3e94a09 100644
--- a/src/renderer/engine/driver.js
+++ b/src/renderer/engine/driver.js
@@ -122,7 +122,9 @@ export default class EngineDriver {
         break
       }
       case 'bestmove':
-        this.events.emit('bestmove')
+        const words = line.split(' ')
+        const ucimove = words[1]
+        this.events.emit('bestmove', ucimove)
         break
     }
   }
diff --git a/src/renderer/engine/index.js b/src/renderer/engine/index.js
index 31a075b3..90ae214a 100644
--- a/src/renderer/engine/index.js
+++ b/src/renderer/engine/index.js
@@ -60,7 +60,7 @@ export class Engine extends EventEmitter {
 
       // run main engine
       this.mainWorker.postMessage({
-        payload: { binary, cwd, listeners: ['io', 'info'] },
+        payload: { binary, cwd, listeners: ['io', 'info', 'bestmove'] },
         type: 'run'
       })
 
diff --git a/src/renderer/store.js b/src/renderer/store.js
index 9310b46f..60c29026 100644
--- a/src/renderer/store.js
+++ b/src/renderer/store.js
@@ -690,6 +690,12 @@ export const store = new Vuex.Store({
       engine.send(context.getters.PvEParam)
       context.commit('setEngineClock')
     },
+    PvEMakeMove (context, payload) {
+      const state = context.state
+      if (state.active && state.PvE && !state.turn) {
+        context.dispatch('push', { move: payload, prev: context.getters.currentMove[0] })
+      }
+    },
     setActiveTrue (context) {
       context.commit('active', true)
     },
@@ -1471,4 +1477,5 @@ ffish.onRuntimeInitialized = () => {
 
   // capture engine info
   engine.on('info', info => store.dispatch('updateMultiPV', info))
+  engine.on('bestmove', move => store.dispatch('PvEMakeMove', move))
 })()