summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2025-08-21 12:10:06 -0400
committerpommicket <pommicket@gmail.com>2025-08-21 12:10:06 -0400
commit2a724471eb4c588b9f28dc807cb9eae7a1cfaf2f (patch)
tree113ab5278202e596c090188a680348e9bd249889
parentab035c5da2d0dee7a2bdbb121045b9b1e97ffa13 (diff)
Split solve() into solveEndgame() and solvePreEndgame()
-rw-r--r--quacker/macondo.cpp9
-rw-r--r--quacker/macondobackend.cpp13
-rw-r--r--quacker/macondobackend.h10
3 files changed, 22 insertions, 10 deletions
diff --git a/quacker/macondo.cpp b/quacker/macondo.cpp
index 8c18fb8..6a20c2d 100644
--- a/quacker/macondo.cpp
+++ b/quacker/macondo.cpp
@@ -60,8 +60,13 @@ void Macondo::solve() {
emit stoppedSolver();
} else {
emit runningSolver();
- MacondoSolveOptions options;
- m_backend->solve(options);
+ if (m_tilesUnseen > 7) {
+ MacondoPreEndgameOptions options;
+ m_backend->solvePreEndgame(options);
+ } else {
+ MacondoEndgameOptions options;
+ m_backend->solveEndgame(options);
+ }
m_isSolving = true;
}
updateSolveButton();
diff --git a/quacker/macondobackend.cpp b/quacker/macondobackend.cpp
index 052aa68..d5c00c9 100644
--- a/quacker/macondobackend.cpp
+++ b/quacker/macondobackend.cpp
@@ -115,10 +115,14 @@ void MacondoBackend::simulate(const MacondoSimulateOptions &options, const Quack
m_command = Command::Simulate;
}
-void MacondoBackend::solve(const MacondoSolveOptions &) {
+void MacondoBackend::solveEndgame(const MacondoEndgameOptions &) {
startProcess();
- bool isEndgame = m_game->currentPosition().unseenBag().size() <= 7;
- m_command = isEndgame ? Command::SolveEndgame : Command::SolvePreEndgame;
+ m_command = Command::SolveEndgame;
+}
+
+void MacondoBackend::solvePreEndgame(const MacondoPreEndgameOptions &) {
+ startProcess();
+ m_command = Command::SolvePreEndgame;
m_preEndgamePlaysToAnalyze = 0;
}
@@ -424,9 +428,7 @@ void MacondoBackend::timer() {
break;
case Command::SolvePreEndgame:
if (m_processOutput.contains(preEndgamePlaysEndMarker)) {
- // TODO
removeTempGCG();
- emit statusMessage("Finished solving pre-endgame.");
Quackle::MoveList moves = extractPreEndgameMoves(m_processOutput);
if (!moves.empty()) {
Quackle::GamePosition &position = m_game->currentPosition();
@@ -636,4 +638,5 @@ void MacondoBackend::stop() {
m_command = Command::None;
m_processOutput.clear();
m_processStderr.clear();
+ emit statusMessage("");
}
diff --git a/quacker/macondobackend.h b/quacker/macondobackend.h
index 0e18f94..3feb80d 100644
--- a/quacker/macondobackend.h
+++ b/quacker/macondobackend.h
@@ -15,8 +15,11 @@ struct MacondoInitOptions {
struct MacondoSimulateOptions {
inline MacondoSimulateOptions() {}
};
-struct MacondoSolveOptions {
- inline MacondoSolveOptions() {}
+struct MacondoEndgameOptions {
+ inline MacondoEndgameOptions() {}
+};
+struct MacondoPreEndgameOptions {
+ inline MacondoPreEndgameOptions() {}
};
class MacondoBackend: public QObject {
@@ -25,7 +28,8 @@ public:
MacondoBackend(Quackle::Game *game, const MacondoInitOptions &);
~MacondoBackend();
void simulate(const MacondoSimulateOptions &options, const Quackle::MoveList &moves);
- void solve(const MacondoSolveOptions &options);
+ void solveEndgame(const MacondoEndgameOptions &options);
+ void solvePreEndgame(const MacondoPreEndgameOptions &options);
std::string getSimResults();
inline bool isRunning() const { return m_command != Command::None; }
// stop current Macondo analysis