From 551c51c02649aeb38d72002d6bb70b58dbee1eb2 Mon Sep 17 00:00:00 2001 From: pommicket Date: Fri, 8 Aug 2025 10:42:40 -0400 Subject: MacondoBackend --- quacker/macondobackend.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 quacker/macondobackend.h (limited to 'quacker/macondobackend.h') diff --git a/quacker/macondobackend.h b/quacker/macondobackend.h new file mode 100644 index 0000000..dfda0c5 --- /dev/null +++ b/quacker/macondobackend.h @@ -0,0 +1,48 @@ +#ifndef MACONDO_BACKEND_H_ +#define MACONDO_BACKEND_H_ + +#include +#include + +namespace Quackle { + class Game; +} + +enum class MacondoCommand { + None, + Simulate, + Solve, +}; + +class MacondoBackend: public QObject { +Q_OBJECT +public: + struct InitOptions { + inline InitOptions(std::string execPath) { + this->execPath = execPath; + } + std::string execPath; + }; + MacondoBackend(Quackle::Game *game, const InitOptions &); + struct SimulateOptions { + inline SimulateOptions() {} + }; + void simulate(const SimulateOptions &); + ~MacondoBackend(); + std::string getSimResults(); + inline MacondoCommand command() const { return m_command; } +protected slots: + void processStarted(); + void processFinished(int, QProcess::ExitStatus); +private: + void loadGCG(); + void killProcess(); + std::string m_execPath; + std::string m_tempGCG; + QProcess *m_process = nullptr; + bool m_runningSimulation = false; + Quackle::Game *m_game; + MacondoCommand m_command = MacondoCommand::None; +}; + +#endif -- cgit v1.2.3