summaryrefslogtreecommitdiff
path: root/quacker
diff options
context:
space:
mode:
Diffstat (limited to 'quacker')
-rw-r--r--quacker/macondo.cpp3
-rw-r--r--quacker/macondo.h1
-rw-r--r--quacker/quacker.cpp5
3 files changed, 8 insertions, 1 deletions
diff --git a/quacker/macondo.cpp b/quacker/macondo.cpp
index a6d5d9d..ef7372b 100644
--- a/quacker/macondo.cpp
+++ b/quacker/macondo.cpp
@@ -92,8 +92,9 @@ bool Macondo::useForSimulation() const {
void Macondo::gotMoves(const Quackle::MoveList &moves) {
m_moves = moves;
m_anyUpdates = true;
- if (moves.size() == 1)
+ if (m_isSolving && moves.size() > 0) {
emit setCandidateMove(&moves[0]);
+ }
}
void Macondo::positionChanged(const Quackle::GamePosition *position) {
diff --git a/quacker/macondo.h b/quacker/macondo.h
index a95a5a7..ede3487 100644
--- a/quacker/macondo.h
+++ b/quacker/macondo.h
@@ -28,6 +28,7 @@ public:
return any;
}
bool isRunning() const;
+ bool isSolving() const { return m_isSolving; }
signals:
void runningSolver();
void stoppedSolver();
diff --git a/quacker/quacker.cpp b/quacker/quacker.cpp
index d3945ac..cf1b4c7 100644
--- a/quacker/quacker.cpp
+++ b/quacker/quacker.cpp
@@ -1271,6 +1271,11 @@ void TopLevel::incrementSimulation()
if (m_macondo->anyUpdates()) {
updateMoveViews();
updateSimViews();
+ if (m_macondo->isSolving()) {
+ // stop after solver gives us moves
+ simulate(false);
+ return;
+ }
}
// check again in 100ms
m_simulationTimer->start(100);