1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#pragma once
#include <QString>
#include "ClientInfo.hpp"
#include "CRSMSession.hpp"
class ClonkControllerInterface {
public:
virtual ~ClonkControllerInterface();
virtual void writeToServer(const QString& msg) = 0;
};
class ClonkControlInterface {
protected:
ClonkControllerInterface* controller = nullptr;
public:
virtual ~ClonkControlInterface();
void setController(ClonkControllerInterface* controller);
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, const QString& reason = "") = 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 bool raw(const QString& msg);
virtual bool rawTimed(const QString& msg, const QTime& time);
virtual bool lobbyCountdown(unsigned int seconds);
virtual bool lobbyCountdownAborted();
virtual bool playerRemoved(const QString& name);
virtual bool playerJoined(const ClientInfo& client, const QString& name);
virtual bool watchdog(const QString& id);
virtual bool clientMessage(ClientInfo& client, const QString& message, MessageType type, const QTime& time);
virtual bool clientConnected(const ClientInfo& client);
virtual bool clientRemoved(const ClientInfo& client, const QString& reason);
virtual bool clientStateChanged(const ClientInfo& client, bool activated);
virtual bool gameLoading();
virtual bool gameStarted();
virtual bool 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);
};
|