From 3fe710cb029522b86ef27c322f0cb793b1368051 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Tue, 21 Mar 2017 22:00:59 +0100 Subject: Move Parser into own class --- src/ClonkInterface.hpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/ClonkInterface.hpp (limited to 'src/ClonkInterface.hpp') 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 + +#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 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); +}; -- cgit v1.2.3-54-g00ecf