• 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 <tdemacros.h>
32class KRandomSequence;
33
34class KPlayer;
35class KGamePropertyBase;
36class KGamePropertyHandler;
37class KGameSequence;
38
39class KGamePrivate;
40
62class TDE_EXPORT KGame : public KGameNetwork
63{
64 TQ_OBJECT
65
66
67public:
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
469protected 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
509signals:
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
675protected:
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
889private:
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
929private:
930 KGamePrivate* d;
931};
932
933#endif
KGameNetwork
The KGameNetwork class is the KGame class with network support.
Definition: kgamenetwork.h:47
KGameNetwork::Debug
virtual void Debug()
Gives debug output of the game status.
Definition: kgamenetwork.cpp:505
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
KGamePropertyHandler
A collection class for KGameProperty objects.
Definition: kgamepropertyhandler.h:73
KGameSequence
This class takes care of round or move management as well of the gameover condition.
Definition: kgamesequence.h:43
KGame
The main KDE game object.
Definition: kgame.h:63
KGame::signalSavePrePlayers
void signalSavePrePlayers(TQDataStream &stream)
The game will be saved to the given stream.
KGame::removePlayer
bool removePlayer(KPlayer *player)
Sends a message over the network, msgid=IdRemovePlayer.
Definition: kgame.h:223
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::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 ...
KGame::signalReplacePlayerIO
void signalReplacePlayerIO(KPlayer *player, bool *remove)
When a client disconnects from the game usually all players from that client are removed.
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::signalMessageUpdate
void signalMessageUpdate(int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an network message.
KGame::signalGameOver
void signalGameOver(int status, KPlayer *current, KGame *me)
Is emitted after a call to gameOver() returns a non zero return code.
KGame::signalPlayerJoinedGame
void signalPlayerJoinedGame(KPlayer *player)
a player joined the game
KGame::signalSave
void signalSave(TQDataStream &stream)
The game will be saved to the given stream.
KGame::signalLoadPrePlayers
void signalLoadPrePlayers(TQDataStream &stream)
The game will be loaded from the given stream.
KGame::playerInput
virtual bool playerInput(TQDataStream &msg, KPlayer *player)=0
A player input occurred.
KGame::signalNetworkData
void signalNetworkData(int msgid, const TQByteArray &buffer, TQ_UINT32 receiver, TQ_UINT32 sender)
We got an user defined update message.
KGame::GameStatus
GameStatus
Game status - Use this to Control the game flow.
Definition: kgame.h:122
KGame::GamePolicy
GamePolicy
The policy of the property.
Definition: kgame.h:92
KGame::signalPlayerLeftGame
void signalPlayerLeftGame(KPlayer *player)
a player left the game because of a broken connection or so!
KGame::signalLoad
void signalLoad(TQDataStream &stream)
The game will be loaded from the given stream.
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::signalClientJoinedGame
void signalClientJoinedGame(TQ_UINT32 clientid, KGame *me)
Is emmited after a client is successfully connected to the game.
KPlayer
Base class for a game player.
Definition: kplayer.h:70

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.9.4
This website is maintained by Timothy Pearson.