Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
intent.h
Go to the documentation of this file.
1#ifndef COCKATRICE_INTENT_H
2#define COCKATRICE_INTENT_H
3
4#include <QObject>
5
6class Intent : public QObject
7{
8 Q_OBJECT
9
10public:
11 explicit Intent(QObject *parent = nullptr);
12 ~Intent() override;
13
14 void execute();
15
16signals:
17 void finished();
18 void failed(QString reason);
19
20protected:
21 // --- Subclasses must implement these ---
22 virtual bool checkPrecondition() const = 0;
23 virtual void onPreconditionSatisfied() = 0;
24 virtual void onPreconditionNotSatisfied() = 0;
25
26 // Helper to chain another intent
27 void runDependency(Intent *dependency);
28
29 // Emit the outcome exactly once; ignore late signals after the intent is done.
30 void emitFinished();
31 void emitFailed(const QString &reason);
32
33private:
34 bool completed = false;
35};
36
37#endif // COCKATRICE_INTENT_H
bool completed
Definition intent.h:34
virtual void onPreconditionSatisfied()=0
virtual void onPreconditionNotSatisfied()=0
void emitFinished()
Definition intent.cpp:34
void runDependency(Intent *dependency)
Definition intent.cpp:22
void failed(QString reason)
~Intent() override
void finished()
void emitFailed(const QString &reason)
Definition intent.cpp:42
void execute()
Definition intent.cpp:13
virtual bool checkPrecondition() const =0
Intent(QObject *parent=nullptr)
Definition intent.cpp:3