KDEGames

kgamemessage.h
1 /*
2  This file is part of the KDE games library
3  SPDX-FileCopyrightText: 2001 Martin Heni <kde at heni-online.de>
4  SPDX-FileCopyrightText: 2001 Andreas Beckermann <[email protected]>
5 
6  SPDX-License-Identifier: LGPL-2.0-only
7 */
8 
9 #ifndef __KGAMEMESSAGE_H_
10 #define __KGAMEMESSAGE_H_
11 
12 // own
13 #include "libkdegamesprivate_export.h"
14 // Qt
15 #include <QDataStream>
16 
17 /**
18  * \class KGameMessage kgamemessage.h <KGame/KGameMessage>
19  */
20 class KDEGAMESPRIVATE_EXPORT KGameMessage
21 {
22  public:
23  /**
24  * Creates a fully qualified player ID which contains the original
25  * player id in the lower bits and the game number in the higher bits.
26  * Do not rely on the exact bit positions as they are internal.
27  *
28  * See also @ref rawPlayerId and @ref rawGameId which are the inverse
29  * operations
30  *
31  * @param player The player id - can include a gameid (will get removed)
32  * @param game The game id (<64). 0 For broadcast.
33  * @return The new player id
34  */
35  static quint32 createPlayerId(int player, quint32 game);
36 
37  /**
38  * Returns the raw playerid, that is, a id which does not
39  * contain the game number encoded in it. See also @ref createPlayerId which
40  * is the inverse operation.
41  *
42  * @param playerid The player id
43  * @return The raw player id
44  **/
45  static int rawPlayerId(quint32 playerid);
46 
47  /**
48  * Returns the raw game id, that is, the game id the player
49  * belongs to. Se also @ref createPlayerId which is the inverse operation.
50  *
51  * @param playerid The player id
52  * @return The raw game id
53  **/
54  static quint32 rawGameId(quint32 playerid);
55 
56  /**
57  * Checks whether a message receiver/sender is a player
58  *
59  * @param id The ID of the sender/receiver
60  * @return true/false
61  */
62  static bool isPlayer(quint32 id);
63 
64  /**
65  * Checks whether the sender/receiver of a message is a game
66  *
67  * @param id The ID of the sender/receiver
68  * @return true/false
69  */
70  static bool isGame(quint32 id);
71 
72  /**
73  * Creates a message header given cookie,sender,receiver,...
74  *
75  * Also puts "hidden" header into the stream which are used by KGameClient
76  * (message length and magic cookie). If you don't need them remove them
77  * with dropExternalHeader
78  */
79  static void createHeader(QDataStream &msg, quint32 sender, quint32 receiver, int msgid);
80 
81  /**
82  * Retrieves the information like cookie,sender,receiver,... from a message header
83  *
84  * Note that it could be necessary to call dropExternalHeader first
85  */
86  static void extractHeader(QDataStream &msg,quint32 &sender, quint32 &receiver, int &msgid);
87 
88  /**
89  * Creates a property header given the property id
90  */
91  static void createPropertyHeader(QDataStream &msg, int id);
92 
93  /**
94  * Retrieves the property id from a property message header
95  */
96  static void extractPropertyHeader(QDataStream &msg, int &id);
97 
98  /**
99  * Creates a property header given the property id
100  */
101  static void createPropertyCommand(QDataStream &msg, int cmdid, int pid, int cmd);
102 
103  /**
104  * Retrieves the property id from a property message header
105  */
106  static void extractPropertyCommand(QDataStream &msg, int &pid, int &cmd);
107 
108  /**
109  * @return Version of the network library
110  */
111  static int version();
112 
113  /**
114  * This function takes a @ref GameMessageIds as argument and returns a
115  * suitable string for it. This string can't be used to identify a message
116  * (as it is i18n'ed) but it can make debugging more easy.
117  * @return Either a i18n'ed string (the name of the id) or QString() if
118  * the msgid is unknown
119  **/
120  static QString messageId2Text(int msgid);
121 
122 
123  /**
124  * Message Ids used inside @ref KGame.
125  *
126  * You can use your own custom message Id by adding @p IdUser to it.
127  **/
128 // please document every new id with a short comment
129  enum GameMessageIds {
130 // game init, game load, disconnect, ...
131  IdSetupGame=1, // sent to a newly connected player
132  IdSetupGameContinue=2, // continue the setup
133  IdGameLoad=3, // load/save the game to the client
134  IdGameConnected=4, // Client successfully connected to master
135  IdSyncRandom=5, // new random seed set - sync games
136  IdDisconnect=6, // KGame object disconnects from game
137  IdGameSetupDone=7, // New game client is now operational
138 
139 // properties
140  IdPlayerProperty=20, // a player property changed
141  IdGameProperty=21, // a game property changed
142 
143 // player management
144  IdAddPlayer=30, // add a player
145  IdRemovePlayer=31, // the player will be removed
146  IdActivatePlayer=32, // Activate a player
147  IdInactivatePlayer=33, // Inactivate a player
148  IdTurn=34, // Turn to be prepared
149 
150 // to-be-categorized
151  IdError=100, // an error occurred
152  IdPlayerInput=101, // a player input occurred
153  IdIOAdded=102, // KGameIO got added to a player...init this IO
154 
155 // special ids for computer player
156  IdProcessQuery=220, // Process queries data (process only)
157  IdPlayerId=221, // PlayerId got changed (process only)
158 
159  IdUser=256 // a user specified message
160  };
161 };
162 
163 #endif
Base * createHeader(const QByteArray &type)
KDB_EXPORT KDbVersionInfo version()
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Tue Dec 7 2021 22:34:14 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.