kgameio.h
00001 /* 00002 This file is part of the KDE games library 00003 Copyright (C) 2001 Martin Heni (martin@heni-online.de) 00004 Copyright (C) 2001 Andreas Beckermann (b_mann@gmx.de) 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License version 2 as published by the Free Software Foundation. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00018 Boston, MA 02110-1301, USA. 00019 */ 00020 /* 00021 $Id$ 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 KProcess; 00032 00055 class KDE_EXPORT KGameIO : public TQObject 00056 { 00057 Q_OBJECT 00058 TQ_OBJECT 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; // Computer, network, local, ... 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 TQ_OBJECT 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 TQ_OBJECT 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 TQ_OBJECT 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 TQ_OBJECT 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