27 #include <tqptrlist.h>
28 #include <tqvaluelist.h>
30 #include "kgamenetwork.h"
31 #include <tdemacros.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);
The KGameNetwork class is the KGame class with network support.
virtual void Debug()
Gives debug output of the game status.
virtual void networkTransmission(TQDataStream &, int, TQ_UINT32, TQ_UINT32, TQ_UINT32 clientID)=0
Called by ReceiveNetworkTransmission().
Base class of KGameProperty.
A collection class for KGameProperty objects.
This class takes care of round or move management as well of the gameover condition.
The main KDE game object.
void signalSavePrePlayers(TQDataStream &stream)
The game will be saved to the given stream.
bool removePlayer(KPlayer *player)
Sends a message over the network, msgid=IdRemovePlayer.
virtual void newPlayersJoin(KGamePlayerList *oldplayer, KGamePlayerList *newplayer, TQValueList< int > &inactivate)
This virtual function can be overwritten for your own player management.
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 ...
void signalReplacePlayerIO(KPlayer *player, bool *remove)
When a client disconnects from the game usually all players from that client are removed.
void signalLoadError(TQDataStream &stream, bool network, int cookie, bool &result)
Is emmited if a game with a different version cookie is loaded.
void signalMessageUpdate(int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an network message.
void signalGameOver(int status, KPlayer *current, KGame *me)
Is emitted after a call to gameOver() returns a non zero return code.
void signalPlayerJoinedGame(KPlayer *player)
a player joined the game
void signalSave(TQDataStream &stream)
The game will be saved to the given stream.
void signalLoadPrePlayers(TQDataStream &stream)
The game will be loaded from the given stream.
virtual bool playerInput(TQDataStream &msg, KPlayer *player)=0
A player input occurred.
void signalNetworkData(int msgid, const TQByteArray &buffer, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an user defined update message.
GameStatus
Game status - Use this to Control the game flow.
GamePolicy
The policy of the property.
void signalPlayerLeftGame(KPlayer *player)
a player left the game because of a broken connection or so!
void signalLoad(TQDataStream &stream)
The game will be loaded from the given stream.
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 signalClientJoinedGame(TQ_UINT32 clientid, KGame *me)
Is emmited after a client is successfully connected to the game.
Base class for a game player.