kgameio.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __KGAMEIO_H__
00024 #define __KGAMEIO_H__
00025
00026 #include <qstring.h>
00027 #include <qobject.h>
00028 #include <kdemacros.h>
00029 class KPlayer;
00030 class KGame;
00031 class KProcess;
00032
00055 class KDE_EXPORT KGameIO : public QObject
00056 {
00057 Q_OBJECT
00058
00059 public:
00063 KGameIO();
00064 KGameIO(KPlayer*);
00065 virtual ~KGameIO();
00066
00070 void Debug();
00071
00075 enum IOMode {GenericIO=1,KeyIO=2,MouseIO=4,ProcessIO=8,ComputerIO=16};
00082 virtual int rtti() const = 0;
00083
00089 KPlayer *player() const {return mPlayer;}
00090
00095 KGame* game() const;
00096
00104 void setPlayer(KPlayer *p) {mPlayer=p;}
00105
00115 virtual void initIO(KPlayer *p);
00116
00126 virtual void notifyTurn(bool b);
00127
00131 bool sendInput(QDataStream& stream, bool transmit = true, Q_UINT32 sender = 0);
00132
00133 signals:
00165 void signalPrepareTurn(QDataStream & stream, bool turn, KGameIO *io, bool * send);
00166
00167
00168 private:
00169 KPlayer *mPlayer;
00170 };
00171
00177 class KDE_EXPORT KGameKeyIO : public KGameIO
00178 {
00179 Q_OBJECT
00180
00181 public:
00202 KGameKeyIO(QWidget *parent);
00203 virtual ~KGameKeyIO();
00204
00210 virtual int rtti() const;
00211
00212 signals:
00234 void signalKeyEvent(KGameIO *io,QDataStream &stream,QKeyEvent *m,bool *eatevent);
00235
00236 protected:
00240 bool eventFilter( QObject *o, QEvent *e );
00241 };
00242
00248 class KDE_EXPORT KGameMouseIO : public KGameIO
00249 {
00250 Q_OBJECT
00251
00252 public:
00268 KGameMouseIO(QWidget *parent,bool trackmouse=false);
00269 virtual ~KGameMouseIO();
00270
00276 void setMouseTracking(bool b);
00282 virtual int rtti() const;
00283
00284 signals:
00304 void signalMouseEvent(KGameIO *io,QDataStream &stream,QMouseEvent *m,bool *eatevent);
00305
00306 protected:
00310 bool eventFilter( QObject *o, QEvent *e );
00311
00312 };
00313
00314
00323 class KDE_EXPORT KGameProcessIO : public KGameIO
00324 {
00325 Q_OBJECT
00326
00327 public:
00343 KGameProcessIO(const QString& name);
00344
00348 virtual ~KGameProcessIO();
00349
00355 int rtti() const;
00356
00367 void sendMessage(QDataStream &stream,int msgid, Q_UINT32 receiver, Q_UINT32 sender);
00368
00379 void sendSystemMessage(QDataStream &stream, int msgid, Q_UINT32 receiver, Q_UINT32 sender);
00380
00389 void initIO(KPlayer *p);
00390
00400 virtual void notifyTurn(bool turn);
00401
00402 protected:
00406 void sendAllMessages(QDataStream &stream,int msgid, Q_UINT32 receiver, Q_UINT32 sender, bool usermsg);
00407
00408 protected slots:
00412 void receivedMessage(const QByteArray& receiveBuffer);
00413
00414
00415 signals:
00439 void signalProcessQuery(QDataStream &stream,KGameProcessIO *me);
00440
00451 void signalIOAdded(KGameIO *game,QDataStream &stream,KPlayer *p,bool *send);
00452
00453
00454 protected:
00455
00456 private:
00457 class KGameProcessIOPrivate;
00458 KGameProcessIOPrivate* d;
00459 };
00460
00477 class KDE_EXPORT KGameComputerIO : public KGameIO
00478 {
00479 Q_OBJECT
00480
00481 public:
00486 KGameComputerIO();
00487 KGameComputerIO(KPlayer* player);
00488 ~KGameComputerIO();
00489
00490 int rtti() const;
00491
00496 void setReactionPeriod(int advanceCalls);
00497 int reactionPeriod() const;
00498
00502 void setAdvancePeriod(int ms);
00503
00504 void stopAdvancePeriod();
00505
00518 void pause(int calls = -1);
00519
00524 void unpause();
00525
00526 public slots:
00542 virtual void advance();
00543
00544 signals:
00549 void signalReaction();
00550
00551 protected:
00555 virtual void reaction();
00556
00557 private:
00558 void init();
00559
00560 private:
00561 class KGameComputerIOPrivate;
00562 KGameComputerIOPrivate* d;
00563 };
00564
00565
00566 #endif
|