• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • libtdegames
 

libtdegames

  • libtdegames
  • kgame
kgame.h
1 /*
2  This file is part of the TDE games library
3  Copyright (C) 2001 Martin Heni (martin@heni-online.de)
4  Copyright (C) 2001 Andreas Beckermann (b_mann@gmx.de)
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Library General Public
8  License version 2 as published by the Free Software Foundation.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public License
16  along with this library; see the file COPYING.LIB. If not, write to
17  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19 */
20 /*
21  $Id$
22 */
23 #ifndef __KGAME_H_
24 #define __KGAME_H_
25 
26 #include <tqstring.h>
27 #include <tqptrlist.h>
28 #include <tqvaluelist.h>
29 
30 #include "kgamenetwork.h"
31 #include <kdemacros.h>
32 class KRandomSequence;
33 
34 class KPlayer;
35 class KGamePropertyBase;
36 class KGamePropertyHandler;
37 class KGameSequence;
38 
39 class KGamePrivate;
40 
62 class KDE_EXPORT KGame : public KGameNetwork
63 {
64  Q_OBJECT
65 
66 
67 public:
68  typedef TQPtrList<KPlayer> KGamePlayerList;
69 
91  enum GamePolicy
92  {
93  PolicyUndefined = 0,
94  PolicyClean = 1,
95  PolicyDirty = 2,
96  PolicyLocal = 3
97  };
98 
104  KGame(int cookie=42,TQObject* parent=0);
105 
109  virtual ~KGame();
110 
114  virtual void Debug();
115 
121  enum GameStatus
122  {
123  Init = 0,
124  Run = 1,
125  Pause = 2,
126  End = 3,
127  Abort = 4,
128  SystemPause = 5,
129  Intro = 6,
130  UserStatus = 7
131  };
132 
133  // Properties
139  KGamePlayerList *playerList();
140 
144  const KGamePlayerList *playerList() const;
145 
150  KGamePlayerList *inactivePlayerList();
151 
155  const KGamePlayerList *inactivePlayerList() const;
156 
162  KRandomSequence *random() const;
163 
168  KGameSequence *gameSequence() const;
169 
174  bool isRunning() const;
175 
176  // Player handling
182  KPlayer *findPlayer(TQ_UINT32 id) const;
183 
193  void setGameSequence(KGameSequence* sequence);
194 
212  void addPlayer(KPlayer* newplayer);
213 
220  //AB: TODO: make sendMessage to return if the message will be able to be
221  //sent, eg if a socket is connected, etc. If sendMessage returns false
222  //remove the player directly using systemRemovePlayer
223  bool removePlayer(KPlayer * player) { return removePlayer(player, 0); }
224 
229  void playerDeleted(KPlayer * player);
230 
234  bool activatePlayer(KPlayer *player);
235 
239  bool inactivatePlayer(KPlayer *player);
240 
247  void setMaxPlayers(uint maxnumber);
248 
253  int maxPlayers() const;
254 
261  void setMinPlayers(uint minnumber);
262 
267  uint minPlayers() const;
268 
273  uint playerCount() const;
274 
279  virtual KPlayer * nextPlayer(KPlayer *last,bool exclusive=true);
280 
281  // Input events
286  virtual bool sendPlayerInput(TQDataStream &msg,KPlayer *player,TQ_UINT32 sender=0);
287 
298  virtual bool systemPlayerInput(TQDataStream &msg,KPlayer *player,TQ_UINT32 sender=0);
299 
326  virtual KPlayer *createPlayer(int rtti,int io,bool isvirtual);
327 
328  // load/save
341  virtual bool load(TQDataStream &stream,bool reset=true);
342 
351  virtual bool load(TQString filename,bool reset=true);
352 
362  virtual bool save(TQDataStream &stream,bool saveplayers=true);
363 
372  virtual bool save(TQString filename,bool saveplayers=true);
373 
381  virtual bool reset();
382 
383 
384  // Game sequence
390  int gameStatus() const;
391 
397  void setGameStatus(int status);
398 
402  bool addProperty(KGamePropertyBase* data);
403 
407  bool sendPlayerProperty(int msgid, TQDataStream& s, TQ_UINT32 playerId);
408 
413  KGamePropertyBase* findProperty(int id) const;
414 
421  void setPolicy(GamePolicy p,bool recursive=true);
422 
426  GamePolicy policy() const;
427 
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);
443 
462  virtual void networkTransmission(TQDataStream &stream, int msgid, TQ_UINT32 receiver, TQ_UINT32 sender, TQ_UINT32 clientID);
463 
467  KGamePropertyHandler* dataHandler() const;
468 
469 protected slots:
473  void sendProperty(int msgid, TQDataStream& stream, bool* sent);
474 
478  void emitSignal(KGamePropertyBase *me);
479 
484  virtual void prepareNext();
485 
486 
491  void slotClientConnected(TQ_UINT32 clientId);
492 
500  void slotClientDisconnected(TQ_UINT32 clientId,bool broken);
501 
507  void slotServerDisconnected();
508 
509 signals:
527  void signalReplacePlayerIO(KPlayer* player, bool* remove);
528 
543  void signalLoadPrePlayers(TQDataStream &stream);
544 
552  void signalLoad(TQDataStream &stream);
553 
567  void signalSavePrePlayers(TQDataStream &stream);
568 
576  void signalSave(TQDataStream &stream);
577 
589  void signalLoadError(TQDataStream &stream,bool network,int cookie, bool &result);
590 
597  void signalNetworkData(int msgid,const TQByteArray& buffer, TQ_UINT32 receiver, TQ_UINT32 sender);
598 
604  void signalMessageUpdate(int msgid,TQ_UINT32 receiver,TQ_UINT32 sender);
605 
616  void signalPlayerLeftGame(KPlayer *player);
617 
623  void signalPlayerJoinedGame(KPlayer *player);
624 
625 
630  void signalPropertyChanged(KGamePropertyBase *property, KGame *me);
631 
640  void signalGameOver(int status, KPlayer *current, KGame *me);
641 
653  void signalClientJoinedGame(TQ_UINT32 clientid,KGame *me);
654 
672  void signalClientLeftGame(int clientID,int oldgamestatus,KGame *me);
673 
674 
675 protected:
704  virtual bool playerInput(TQDataStream &msg,KPlayer *player)=0;
705 
706 
718  KPlayer *playerInputFinished(KPlayer *player);
719 
720 
754  virtual void newPlayersJoin(KGamePlayerList *oldplayer,
755  KGamePlayerList *newplayer,
756  TQValueList<int> &inactivate) {
757  Q_UNUSED( oldplayer );
758  Q_UNUSED( newplayer );
759  Q_UNUSED( inactivate );
760  }
761 
770  void savePlayers(TQDataStream &stream,KGamePlayerList *list=0);
771 
782  void savePlayer(TQDataStream& stream,KPlayer* player);
783 
792  KPlayer *loadPlayer(TQDataStream& stream,bool isvirtual=false);
793 
794 
798  bool systemInactivatePlayer(KPlayer *player);
799 
803  bool systemActivatePlayer(KPlayer *player);
804 
822  void systemAddPlayer(KPlayer* newplayer);
823 
831  void systemRemovePlayer(KPlayer* player,bool deleteit);
832 
843  virtual void negotiateNetworkGame(TQ_UINT32 clientID);
844 
849  void syncRandom();
850 
851  void deletePlayers();
852  void deleteInactivePlayers();
853 
861  virtual int checkGameOver(KPlayer *player);
862 
876  virtual bool loadgame(TQDataStream &stream, bool network, bool reset);
877 
887  virtual bool savegame(TQDataStream &stream, bool network,bool saveplayers);
888 
889 private:
890  //AB: this is to hide the "receiver" parameter from the user. It shouldn't be
891  //used if possible (except for init).
900  //void addPlayer(KPlayer* newplayer, TQ_UINT32 receiver);
901 
907  bool removePlayer(KPlayer * player, TQ_UINT32 receiver);
908 
912  void setupGame(TQ_UINT32 sender);
913 
917  void setupGameContinue(TQDataStream& msg, TQ_UINT32 sender);
918 
926  bool systemRemove(KPlayer* player,bool deleteit);
927 
928 
929 private:
930  KGamePrivate* d;
931 };
932 
933 #endif
KGame::newPlayersJoin
virtual void newPlayersJoin(KGamePlayerList *oldplayer, KGamePlayerList *newplayer, TQValueList< int > &inactivate)
This virtual function can be overwritten for your own player management.
Definition: kgame.h:754
KGame::removePlayer
bool removePlayer(KPlayer *player)
Sends a message over the network, msgid=IdRemovePlayer.
Definition: kgame.h:223
KGame::GameStatus
GameStatus
Game status - Use this to Control the game flow.
Definition: kgame.h:122
KGame::signalMessageUpdate
void signalMessageUpdate(int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an network message.
KGame::GamePolicy
GamePolicy
The policy of the property.
Definition: kgame.h:92
KGame
The main KDE game object.
Definition: kgame.h:63
KPlayer
Base class for a game player.
Definition: kplayer.h:70
KGame::signalClientLeftGame
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...
KGame::signalLoad
void signalLoad(TQDataStream &stream)
The game will be loaded from the given stream.
KGamePropertyHandler
A collection class for KGameProperty objects.
Definition: kgamepropertyhandler.h:73
KGame::signalNetworkData
void signalNetworkData(int msgid, const TQByteArray &buffer, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an user defined update message.
KGame::signalClientJoinedGame
void signalClientJoinedGame(TQ_UINT32 clientid, KGame *me)
Is emmited after a client is successfully connected to the game.
KGame::signalGameOver
void signalGameOver(int status, KPlayer *current, KGame *me)
Is emitted after a call to gameOver() returns a non zero return code.
KGameNetwork::networkTransmission
virtual void networkTransmission(TQDataStream &, int, TQ_UINT32, TQ_UINT32, TQ_UINT32 clientID)=0
Called by ReceiveNetworkTransmission().
KGamePropertyBase
Base class of KGameProperty.
Definition: kgameproperty.h:43
KGame::signalPlayerJoinedGame
void signalPlayerJoinedGame(KPlayer *player)
a player joined the game
KGame::signalPlayerLeftGame
void signalPlayerLeftGame(KPlayer *player)
a player left the game because of a broken connection or so!
KGame::playerInput
virtual bool playerInput(TQDataStream &msg, KPlayer *player)=0
A player input occurred.
KGameNetwork::Debug
virtual void Debug()
Gives debug output of the game status.
Definition: kgamenetwork.cpp:505
KGame::signalLoadError
void signalLoadError(TQDataStream &stream, bool network, int cookie, bool &result)
Is emmited if a game with a different version cookie is loaded.
KGame::signalSave
void signalSave(TQDataStream &stream)
The game will be saved to the given stream.
KGame::signalReplacePlayerIO
void signalReplacePlayerIO(KPlayer *player, bool *remove)
When a client disconnects from the game usually all players from that client are removed.
KGameNetwork
The KGameNetwork class is the KGame class with network support.
Definition: kgamenetwork.h:47
KGame::signalSavePrePlayers
void signalSavePrePlayers(TQDataStream &stream)
The game will be saved to the given stream.
KGame::signalPropertyChanged
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 ...
KGameSequence
This class takes care of round or move management as well of the gameover condition.
Definition: kgamesequence.h:43
KGame::signalLoadPrePlayers
void signalLoadPrePlayers(TQDataStream &stream)
The game will be loaded from the given stream.

libtdegames

Skip menu "libtdegames"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

libtdegames

Skip menu "libtdegames"
  • libtdegames
Generated for libtdegames by doxygen 1.8.18
This website is maintained by Timothy Pearson.