00001
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 <tqstring.h>
00027 #include <tqobject.h>
00028 #include <kdemacros.h>
00029 class KPlayer;
00030 class KGame;
00031 class TDEProcess;
00032
00055 class KDE_EXPORT KGameIO : public TQObject
00056 {
00057 Q_OBJECT
00058
00059
00060 public:
00064 KGameIO();
00065 KGameIO(KPlayer*);
00066 virtual ~KGameIO();
00067
00071 void Debug();
00072
00076 enum IOMode {GenericIO=1,KeyIO=2,MouseIO=4,ProcessIO=8,ComputerIO=16};
00083 virtual int rtti() const = 0;
00084
00090 KPlayer *player() const {return mPlayer;}
00091
00096 KGame* game() const;
00097
00105 void setPlayer(KPlayer *p) {mPlayer=p;}
00106
00116 virtual void initIO(KPlayer *p);
00117
00127 virtual void notifyTurn(bool b);
00128
00132 bool sendInput(TQDataStream& stream, bool transmit = true, TQ_UINT32 sender = 0);
00133
00134 signals:
00166 void signalPrepareTurn(TQDataStream & stream, bool turn, KGameIO *io, bool * send);
00167
00168
00169 private:
00170 KPlayer *mPlayer;
00171 };
00172
00178 class KDE_EXPORT KGameKeyIO : public KGameIO
00179 {
00180 Q_OBJECT
00181
00182
00183 public:
00204 KGameKeyIO(TQWidget *parent);
00205 virtual ~KGameKeyIO();
00206
00212 virtual int rtti() const;
00213
00214 signals:
00236 void signalKeyEvent(KGameIO *io,TQDataStream &stream,TQKeyEvent *m,bool *eatevent);
00237
00238 protected:
00242 bool eventFilter( TQObject *o, TQEvent *e );
00243 };
00244
00250 class KDE_EXPORT KGameMouseIO : public KGameIO
00251 {
00252 Q_OBJECT
00253
00254
00255 public:
00271 KGameMouseIO(TQWidget *parent,bool trackmouse=false);
00272 virtual ~KGameMouseIO();
00273
00279 void setMouseTracking(bool b);
00285 virtual int rtti() const;
00286
00287 signals:
00307 void signalMouseEvent(KGameIO *io,TQDataStream &stream,TQMouseEvent *m,bool *eatevent);
00308
00309 protected:
00313 bool eventFilter( TQObject *o, TQEvent *e );
00314
00315 };
00316
00317
00326 class KDE_EXPORT KGameProcessIO : public KGameIO
00327 {
00328 Q_OBJECT
00329
00330
00331 public:
00347 KGameProcessIO(const TQString& name);
00348
00352 virtual ~KGameProcessIO();
00353
00359 int rtti() const;
00360
00371 void sendMessage(TQDataStream &stream,int msgid, TQ_UINT32 receiver, TQ_UINT32 sender);
00372
00383 void sendSystemMessage(TQDataStream &stream, int msgid, TQ_UINT32 receiver, TQ_UINT32 sender);
00384
00393 void initIO(KPlayer *p);
00394
00404 virtual void notifyTurn(bool turn);
00405
00406 protected:
00410 void sendAllMessages(TQDataStream &stream,int msgid, TQ_UINT32 receiver, TQ_UINT32 sender, bool usermsg);
00411
00412 protected slots:
00416 void receivedMessage(const TQByteArray& receiveBuffer);
00417
00418
00419 signals:
00443 void signalProcessQuery(TQDataStream &stream,KGameProcessIO *me);
00444
00455 void signalIOAdded(KGameIO *game,TQDataStream &stream,KPlayer *p,bool *send);
00456
00457
00458 protected:
00459
00460 private:
00461 class KGameProcessIOPrivate;
00462 KGameProcessIOPrivate* d;
00463 };
00464
00481 class KDE_EXPORT KGameComputerIO : public KGameIO
00482 {
00483 Q_OBJECT
00484
00485
00486 public:
00491 KGameComputerIO();
00492 KGameComputerIO(KPlayer* player);
00493 ~KGameComputerIO();
00494
00495 int rtti() const;
00496
00501 void setReactionPeriod(int advanceCalls);
00502 int reactionPeriod() const;
00503
00507 void setAdvancePeriod(int ms);
00508
00509 void stopAdvancePeriod();
00510
00523 void pause(int calls = -1);
00524
00529 void unpause();
00530
00531 public slots:
00547 virtual void advance();
00548
00549 signals:
00554 void signalReaction();
00555
00556 protected:
00560 virtual void reaction();
00561
00562 private:
00563 void init();
00564
00565 private:
00566 class KGameComputerIOPrivate;
00567 KGameComputerIOPrivate* d;
00568 };
00569
00570
00571 #endif