Cockatrice 2026-10-19-Development-3.1.2-beta.2
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#include <QString>
6#include <qtmetamacros.h>
7
8class Intent : public QObject
9{
10 Q_OBJECT
11
12public:
13 explicit Intent(QObject *parent = nullptr);
14 ~Intent() override;
15
16 void execute();
17
18signals:
19 void finished();
20 void failed(QString reason);
21 void cancelled();
22
23protected:
24 // --- Subclasses must implement these ---
25 virtual bool checkPrecondition() const = 0;
26 virtual void onPreconditionSatisfied() = 0;
27 virtual void onPreconditionNotSatisfied() = 0;
28
29 // Helper to chain another intent
30 void runDependency(Intent *dependency);
31
32 // Emit the outcome exactly once; ignore late signals after the intent is done.
33 void emitFinished();
34 void emitFailed(const QString &reason);
35 void emitCancelled();
36
37private:
38 bool completed = false;
39};
40
41#endif // COCKATRICE_INTENT_H
bool completed
Definition intent.h:38
virtual void onPreconditionSatisfied()=0
void emitCancelled()
Definition intent.cpp:52
virtual void onPreconditionNotSatisfied()=0
void emitFinished()
Definition intent.cpp:36
void runDependency(Intent *dependency)
Definition intent.cpp:23
void failed(QString reason)
~Intent() override
void finished()
void emitFailed(const QString &reason)
Definition intent.cpp:44
void execute()
Definition intent.cpp:14
virtual bool checkPrecondition() const =0
void cancelled()
Intent(QObject *parent=nullptr)
Definition intent.cpp:3