27 #include <tqptrlist.h>
28 #include <tqvaluelist.h>
30 #include "kgamenetwork.h"
31 #include <kdemacros.h>
32 class KRandomSequence;
68 typedef TQPtrList<KPlayer> KGamePlayerList;
104 KGame(
int cookie=42,TQObject* parent=0);
114 virtual void Debug();
139 KGamePlayerList *playerList();
144 const KGamePlayerList *playerList()
const;
150 KGamePlayerList *inactivePlayerList();
155 const KGamePlayerList *inactivePlayerList()
const;
162 KRandomSequence *random()
const;
174 bool isRunning()
const;
182 KPlayer *findPlayer(TQ_UINT32
id)
const;
212 void addPlayer(
KPlayer* newplayer);
229 void playerDeleted(
KPlayer * player);
234 bool activatePlayer(
KPlayer *player);
239 bool inactivatePlayer(
KPlayer *player);
247 void setMaxPlayers(uint maxnumber);
253 int maxPlayers()
const;
261 void setMinPlayers(uint minnumber);
267 uint minPlayers()
const;
273 uint playerCount()
const;
286 virtual bool sendPlayerInput(TQDataStream &msg,
KPlayer *player,TQ_UINT32 sender=0);
298 virtual bool systemPlayerInput(TQDataStream &msg,
KPlayer *player,TQ_UINT32 sender=0);
326 virtual KPlayer *createPlayer(
int rtti,
int io,
bool isvirtual);
341 virtual bool load(TQDataStream &stream,
bool reset=
true);
351 virtual bool load(TQString filename,
bool reset=
true);
362 virtual bool save(TQDataStream &stream,
bool saveplayers=
true);
372 virtual bool save(TQString filename,
bool saveplayers=
true);
381 virtual bool reset();
390 int gameStatus()
const;
397 void setGameStatus(
int status);
407 bool sendPlayerProperty(
int msgid, TQDataStream& s, TQ_UINT32 playerId);
421 void setPolicy(GamePolicy p,
bool recursive=
true);
426 GamePolicy policy()
const;
439 bool sendGroupMessage(
const TQByteArray& msg,
int msgid, TQ_UINT32 sender,
const TQString& group);
440 bool sendGroupMessage(
const TQDataStream &msg,
int msgid, TQ_UINT32 sender,
const TQString& group);
441 bool sendGroupMessage(
int msg,
int msgid, TQ_UINT32 sender,
const TQString& group);
442 bool sendGroupMessage(
const TQString& msg,
int msgid, TQ_UINT32 sender,
const TQString& group);
462 virtual void networkTransmission(TQDataStream &stream,
int msgid, TQ_UINT32 receiver, TQ_UINT32 sender, TQ_UINT32 clientID);
473 void sendProperty(
int msgid, TQDataStream& stream,
bool* sent);
484 virtual void prepareNext();
491 void slotClientConnected(TQ_UINT32 clientId);
500 void slotClientDisconnected(TQ_UINT32 clientId,
bool broken);
507 void slotServerDisconnected();
597 void signalNetworkData(
int msgid,
const TQByteArray& buffer, TQ_UINT32 receiver, TQ_UINT32 sender);
755 KGamePlayerList *newplayer,
756 TQValueList<int> &inactivate) {
757 Q_UNUSED( oldplayer );
758 Q_UNUSED( newplayer );
759 Q_UNUSED( inactivate );
770 void savePlayers(TQDataStream &stream,KGamePlayerList *list=0);
782 void savePlayer(TQDataStream& stream,
KPlayer* player);
792 KPlayer *loadPlayer(TQDataStream& stream,
bool isvirtual=
false);
798 bool systemInactivatePlayer(
KPlayer *player);
803 bool systemActivatePlayer(
KPlayer *player);
822 void systemAddPlayer(
KPlayer* newplayer);
831 void systemRemovePlayer(
KPlayer* player,
bool deleteit);
843 virtual void negotiateNetworkGame(TQ_UINT32 clientID);
851 void deletePlayers();
852 void deleteInactivePlayers();
861 virtual int checkGameOver(
KPlayer *player);
876 virtual bool loadgame(TQDataStream &stream,
bool network,
bool reset);
887 virtual bool savegame(TQDataStream &stream,
bool network,
bool saveplayers);
907 bool removePlayer(
KPlayer * player, TQ_UINT32 receiver);
912 void setupGame(TQ_UINT32 sender);
917 void setupGameContinue(TQDataStream& msg, TQ_UINT32 sender);
926 bool systemRemove(
KPlayer* player,
bool deleteit);
virtual void newPlayersJoin(KGamePlayerList *oldplayer, KGamePlayerList *newplayer, TQValueList< int > &inactivate)
This virtual function can be overwritten for your own player management.
bool removePlayer(KPlayer *player)
Sends a message over the network, msgid=IdRemovePlayer.
GameStatus
Game status - Use this to Control the game flow.
void signalMessageUpdate(int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an network message.
GamePolicy
The policy of the property.
The main KDE game object.
Base class for a game player.
void signalClientLeftGame(int clientID, int oldgamestatus, KGame *me)
This signal is emitted after a network partner left the game (either by a broken connection or volunt...
void signalLoad(TQDataStream &stream)
The game will be loaded from the given stream.
A collection class for KGameProperty objects.
void signalNetworkData(int msgid, const TQByteArray &buffer, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an user defined update message.
void signalClientJoinedGame(TQ_UINT32 clientid, KGame *me)
Is emmited after a client is successfully connected to the game.
void signalGameOver(int status, KPlayer *current, KGame *me)
Is emitted after a call to gameOver() returns a non zero return code.
virtual void networkTransmission(TQDataStream &, int, TQ_UINT32, TQ_UINT32, TQ_UINT32 clientID)=0
Called by ReceiveNetworkTransmission().
Base class of KGameProperty.
void signalPlayerJoinedGame(KPlayer *player)
a player joined the game
void signalPlayerLeftGame(KPlayer *player)
a player left the game because of a broken connection or so!
virtual bool playerInput(TQDataStream &msg, KPlayer *player)=0
A player input occurred.
virtual void Debug()
Gives debug output of the game status.
void signalLoadError(TQDataStream &stream, bool network, int cookie, bool &result)
Is emmited if a game with a different version cookie is loaded.
void signalSave(TQDataStream &stream)
The game will be saved to the given stream.
void signalReplacePlayerIO(KPlayer *player, bool *remove)
When a client disconnects from the game usually all players from that client are removed.
The KGameNetwork class is the KGame class with network support.
void signalSavePrePlayers(TQDataStream &stream)
The game will be saved to the given stream.
void signalPropertyChanged(KGamePropertyBase *property, KGame *me)
This signal is emmited if a player property changes its value and the property is set to notify this ...
This class takes care of round or move management as well of the gameover condition.
void signalLoadPrePlayers(TQDataStream &stream)
The game will be loaded from the given stream.