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);
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();
527 void signalReplacePlayerIO(
KPlayer* player,
bool*
remove);
543 void signalLoadPrePlayers(TQDataStream &stream);
552 void signalLoad(TQDataStream &stream);
567 void signalSavePrePlayers(TQDataStream &stream);
576 void signalSave(TQDataStream &stream);
589 void signalLoadError(TQDataStream &stream,
bool network,
int cookie,
bool &result);
597 void signalNetworkData(
int msgid,
const TQByteArray& buffer, TQ_UINT32 receiver, TQ_UINT32 sender);
604 void signalMessageUpdate(
int msgid,TQ_UINT32 receiver,TQ_UINT32 sender);
616 void signalPlayerLeftGame(
KPlayer *player);
623 void signalPlayerJoinedGame(
KPlayer *player);
640 void signalGameOver(
int status,
KPlayer *current,
KGame *me);
653 void signalClientJoinedGame(TQ_UINT32 clientid,
KGame *me);
672 void signalClientLeftGame(
int clientID,
int oldgamestatus,
KGame *me);
704 virtual bool playerInput(TQDataStream &msg,
KPlayer *player)=0;
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.
This class takes care of round or move management as well of the gameover condition.
GameStatus
Game status - Use this to Control the game flow.
bool removePlayer(KPlayer *player)
Sends a message over the network, msgid=IdRemovePlayer.
A collection class for KGameProperty objects.
GamePolicy
The policy of the property.
Base class for a game player.
Base class of KGameProperty.
The KGameNetwork class is the KGame class with network support.
The main KDE game object.
virtual void networkTransmission(TQDataStream &, int, TQ_UINT32, TQ_UINT32, TQ_UINT32 clientID)=0
Called by ReceiveNetworkTransmission().
virtual void Debug()
Gives debug output of the game status.