From 2a724471eb4c588b9f28dc807cb9eae7a1cfaf2f Mon Sep 17 00:00:00 2001 From: pommicket Date: Thu, 21 Aug 2025 12:10:06 -0400 Subject: Split solve() into solveEndgame() and solvePreEndgame() --- quacker/macondo.cpp | 9 +++++++-- quacker/macondobackend.cpp | 13 ++++++++----- quacker/macondobackend.h | 10 +++++++--- 3 files changed, 22 insertions(+), 10 deletions(-) (limited to 'quacker') 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 -- cgit v1.2.3