diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2017-03-21 22:00:59 +0100 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2017-04-06 12:00:13 +0200 |
| commit | 3fe710cb029522b86ef27c322f0cb793b1368051 (patch) | |
| tree | a927da96f3851f68e2b16d40f2d20b73d67cce1d /src/ClonkInterface.hpp | |
| parent | e56c72bf1a0edda6deb3da548923939a88fd930b (diff) | |
| download | manager-3fe710cb029522b86ef27c322f0cb793b1368051.tar.gz manager-3fe710cb029522b86ef27c322f0cb793b1368051.zip | |
Move Parser into own class
Diffstat (limited to 'src/ClonkInterface.hpp')
| -rw-r--r-- | src/ClonkInterface.hpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/ClonkInterface.hpp b/src/ClonkInterface.hpp new file mode 100644 index 0000000..376acbe --- /dev/null +++ b/src/ClonkInterface.hpp @@ -0,0 +1,80 @@ +#pragma once +#include <QString> + +#include "ClientInfo.hpp" +#include "CRSMSession.hpp" + +class ClonkControlInterface { + ClonkControlInterface() = delete; + virtual ~ClonkControlInterface(); +public: + virtual void serverMessage(const QString& msg, bool action = false) = 0; + virtual void setCountdown(unsigned int seconds) = 0; + virtual void abortCountdown() = 0; + virtual void setCommand(const QString& command) = 0; // split? + virtual void kick(const ClientInfo& client) = 0; + virtual void watchdog(const QString& id) = 0; + virtual void rawCommand(const QString& command) = 0; + virtual void alert() = 0; // specify client? (Clonk patch first) +}; + +class ClonkOutputInterface { +public: + virtual ~ClonkOutputInterface(); + + enum MessageType { Message, Action, Sound }; + + virtual void raw(const QString& msg); + virtual void rawTimed(const QString& msg, const QTime& time); + + virtual void lobbyCountdown(unsigned int seconds); + virtual void lobbyCountdownAborted(); + + virtual void playerRemoved(const QString& name); + virtual void playerJoined(const ClientInfo& client, const QString& name); + + virtual void watchdog(const QString& id); + + virtual void clientMessage(ClientInfo& client, const QString& message, MessageType type, const QTime& time); + + virtual void clientConnected(const ClientInfo& client); + virtual void clientRemoved(const ClientInfo& client, const QString& reason); + virtual void clientStateChanged(const ClientInfo& client, bool activated); + + virtual void gameLoading(); + virtual void gameStarted(); + + virtual void masterserverError(const QString& msg); +}; + +class ClonkParser { + +protected: + QList<ClonkOutputInterface*> targets; + CRSMSession& Session; + +public: + ClonkParser(CRSMSession& session); + virtual ~ClonkParser(); + + void addTarget(ClonkOutputInterface* target); + void removeTarget(ClonkOutputInterface* target); + + virtual void parseMessage(const QString& msg) = 0; + +protected: + void raw(const QString &msg); + void rawTimed(const QString &msg, const QTime &time); + void lobbyCountdown(unsigned int seconds); + void lobbyCountdownAborted(); + void playerRemoved(const QString &name); + void playerJoined(const ClientInfo &client, const QString &name); + void watchdog(const QString &id); + void clientMessage(ClientInfo &client, const QString &message, ClonkOutputInterface::MessageType type, const QTime &time); + void clientConnected(const ClientInfo &client); + void clientRemoved(const ClientInfo &client, const QString &reason); + void clientStateChanged(const ClientInfo &client, bool activated); + void gameLoading(); + void gameStarted(); + void masterserverError(const QString &msg); +}; |
