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

libtdegames

  • libtdegames
  • kgame
kgameio.cpp
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 
24 #include "kgameio.h"
25 #include "kgameio.moc"
26 #include "kgame.h"
27 #include "kplayer.h"
28 #include "kgamemessage.h"
29 #include "kmessageio.h"
30 
31 #include <kdebug.h>
32 
33 #include <tqwidget.h>
34 #include <tqbuffer.h>
35 #include <tqtimer.h>
36 
37 #include <stdlib.h>
38 
39 // ----------------------- Generic IO -------------------------
40 KGameIO::KGameIO() : TQObject(0,0)
41 {
42  kdDebug(11001) << k_funcinfo << ": this=" << this << ", sizeof(this)" << sizeof(KGameIO) << endl;
43  mPlayer = 0;
44 }
45 
46 KGameIO::KGameIO(KPlayer* player) : TQObject(0,0)
47 {
48  kdDebug(11001) << k_funcinfo << ": this=" << this << ", sizeof(this)" << sizeof(KGameIO) << endl;
49  mPlayer = 0;
50  if (player)
51  {
52  player->addGameIO(this);
53  }
54 }
55 
56 KGameIO::~KGameIO()
57 {
58  kdDebug(11001) << k_funcinfo << ": this=" << this << endl;
59  // unregister ourselves
60  if (player())
61  {
62  player()->removeGameIO(this, false);
63  }
64 }
65 
66 void KGameIO::initIO(KPlayer *p)
67 {
68  setPlayer(p);
69 }
70 
71 void KGameIO::notifyTurn(bool b)
72 {
73  if (!player())
74  {
75  kdWarning(11001) << k_funcinfo << ": player() is NULL" << endl;
76  return;
77  }
78  bool sendit=false;
79  TQByteArray buffer;
80  TQDataStream stream(buffer, IO_WriteOnly);
81  emit signalPrepareTurn(stream, b, this, &sendit);
82  if (sendit)
83  {
84  TQDataStream ostream(buffer,IO_ReadOnly);
85  TQ_UINT32 sender = player()->id(); // force correct sender
86  kdDebug(11001) << "Prepare turn sendInput" << endl;
87  sendInput(ostream, true, sender);
88  }
89 }
90 
91 KGame* KGameIO::game() const
92 {
93  if (!player())
94  {
95  return 0;
96  }
97  return player()->game();
98 }
99 
100 bool KGameIO::sendInput(TQDataStream& s, bool transmit, TQ_UINT32 sender)
101 {
102  if (!player())
103  {
104  return false;
105  }
106  return player()->forwardInput(s, transmit, sender);
107 }
108 
109 void KGameIO::Debug()
110 {
111  kdDebug(11001) << "------------------- KGAMEINPUT --------------------" << endl;
112  kdDebug(11001) << "this: " << this << endl;
113  kdDebug(11001) << "rtti : " << rtti() << endl;
114  kdDebug(11001) << "Player: " << player() << endl;
115  kdDebug(11001) << "---------------------------------------------------" << endl;
116 }
117 
118 
119 // ----------------------- Key IO ---------------------------
120 KGameKeyIO::KGameKeyIO(TQWidget *parent)
121  : KGameIO()
122 {
123  if (parent)
124  {
125  kdDebug(11001) << "Key Event filter installed" << endl;
126  parent->installEventFilter(this);
127  }
128 }
129 
130 KGameKeyIO::~KGameKeyIO()
131 {
132  if (parent())
133  {
134  parent()->removeEventFilter(this);
135  }
136 }
137 
138 int KGameKeyIO::rtti() const { return KeyIO; }
139 
140 bool KGameKeyIO::eventFilter( TQObject *o, TQEvent *e )
141 {
142  if (!player())
143  {
144  return false;
145  }
146 
147  // key press/release
148  if ( e->type() == TQEvent::KeyPress ||
149  e->type() == TQEvent::KeyRelease )
150  {
151  TQKeyEvent *k = (TQKeyEvent*)e;
152  // kdDebug(11001) << "KGameKeyIO " << this << " key press/release " << k->key() << endl ;
153  TQByteArray buffer;
154  TQDataStream stream(buffer,IO_WriteOnly);
155  bool eatevent=false;
156  emit signalKeyEvent(this,stream,k,&eatevent);
157  TQDataStream msg(buffer,IO_ReadOnly);
158 
159  if (eatevent && sendInput(msg))
160  {
161  return eatevent;
162  }
163  return false; // do not eat otherwise
164  }
165  return TQObject::eventFilter( o, e ); // standard event processing
166 }
167 
168 
169 // ----------------------- Mouse IO ---------------------------
170 KGameMouseIO::KGameMouseIO(TQWidget *parent,bool trackmouse)
171  : KGameIO()
172 {
173  if (parent)
174  {
175  kdDebug(11001) << "Mouse Event filter installed tracking=" << trackmouse << endl;
176  parent->installEventFilter(this);
177  parent->setMouseTracking(trackmouse);
178  }
179 }
180 
181 KGameMouseIO::~KGameMouseIO()
182 {
183  if (parent())
184  {
185  parent()->removeEventFilter(this);
186  }
187 }
188 
189 int KGameMouseIO::rtti() const
190 {
191  return MouseIO;
192 }
193 
194 void KGameMouseIO::setMouseTracking(bool b)
195 {
196  if (parent())
197  {
198  ((TQWidget*)parent())->setMouseTracking(b);
199  }
200 }
201 
202 bool KGameMouseIO::eventFilter( TQObject *o, TQEvent *e )
203 {
204  if (!player())
205  {
206  return false;
207  }
208 // kdDebug(11001) << "KGameMouseIO " << this << endl ;
209 
210  // mouse action
211  if ( e->type() == TQEvent::MouseButtonPress ||
212  e->type() == TQEvent::MouseButtonRelease ||
213  e->type() == TQEvent::MouseButtonDblClick ||
214  e->type() == TQEvent::Wheel ||
215  e->type() == TQEvent::MouseMove
216  )
217  {
218  TQMouseEvent *k = (TQMouseEvent*)e;
219  // kdDebug(11001) << "KGameMouseIO " << this << endl ;
220  TQByteArray buffer;
221  TQDataStream stream(buffer,IO_WriteOnly);
222  bool eatevent=false;
223  emit signalMouseEvent(this,stream,k,&eatevent);
224 // kdDebug(11001) << "################# eatevent=" << eatevent << endl;
225  TQDataStream msg(buffer,IO_ReadOnly);
226  if (eatevent && sendInput(msg))
227  {
228  return eatevent;
229  }
230  return false; // do not eat otherwise
231  }
232  return TQObject::eventFilter( o, e ); // standard event processing
233 }
234 
235 
236 // ----------------------- KGameProcesPrivate ---------------------------
237 class KGameProcessIO::KGameProcessIOPrivate
238 {
239 public:
240  KGameProcessIOPrivate()
241  {
242  //mMessageServer = 0;
243  //mMessageClient = 0;
244  mProcessIO=0;
245  }
246  //KMessageServer *mMessageServer;
247  //KMessageClient *mMessageClient;
248  KMessageProcess *mProcessIO;
249 };
250 
251 // ----------------------- Process IO ---------------------------
252 KGameProcessIO::KGameProcessIO(const TQString& name)
253  : KGameIO()
254 {
255  kdDebug(11001) << k_funcinfo << ": this=" << this << ", sizeof(this)=" << sizeof(KGameProcessIO) << endl;
256  d = new KGameProcessIOPrivate;
257 
258  //kdDebug(11001) << "================= KMEssageServer ==================== " << endl;
259  //d->mMessageServer=new KMessageServer(0,this);
260  //kdDebug(11001) << "================= KMEssageClient ==================== " << endl;
261  //d->mMessageClient=new KMessageClient(this);
262  kdDebug(11001) << "================= KMEssageProcessIO ==================== " << endl;
263  d->mProcessIO=new KMessageProcess(this,name);
264  kdDebug(11001) << "================= KMEssage Add client ==================== " << endl;
265  //d->mMessageServer->addClient(d->mProcessIO);
266  //kdDebug(11001) << "================= KMEssage SetSErver ==================== " << endl;
267  //d->mMessageClient->setServer(d->mMessageServer);
268  kdDebug(11001) << "================= KMEssage: Connect ==================== " << endl;
269  //connect(d->mMessageClient, TQ_SIGNAL(broadcastReceived(const TQByteArray&, TQ_UINT32)),
270  // this, TQ_SLOT(clientMessage(const TQByteArray&, TQ_UINT32)));
271  //connect(d->mMessageClient, TQ_SIGNAL(forwardReceived(const TQByteArray&, TQ_UINT32, const TQValueList <TQ_UINT32> &)),
272  // this, TQ_SLOT(clientMessage(const TQByteArray&, TQ_UINT32, const TQValueList <TQ_UINT32> &)));
273  connect(d->mProcessIO, TQ_SIGNAL(received(const TQByteArray&)),
274  this, TQ_SLOT(receivedMessage(const TQByteArray&)));
275  //kdDebug(11001) << "Our client is id="<<d->mMessageClient->id() << endl;
276 }
277 
278 KGameProcessIO::~KGameProcessIO()
279 {
280  kdDebug(11001) << k_funcinfo << ": this=" << this << endl;
281  kdDebug(11001) << "player="<<player() << endl;
282  if (player())
283  {
284  player()->removeGameIO(this,false);
285  }
286  if (d->mProcessIO)
287  {
288  delete d->mProcessIO;
289  d->mProcessIO=0;
290  }
291  delete d;
292 }
293 
294 int KGameProcessIO::rtti() const
295 {
296  return ProcessIO;
297 }
298 
299 void KGameProcessIO::initIO(KPlayer *p)
300 {
301  KGameIO::initIO(p);
302  // Send 'hello' to process
303  TQByteArray buffer;
304  TQDataStream stream(buffer, IO_WriteOnly);
305  TQ_INT16 id = p->userId();
306  stream << id;
307 
308  bool sendit=true;
309  if (p)
310  {
311  emit signalIOAdded(this,stream,p,&sendit);
312  if (sendit )
313  {
314  TQ_UINT32 sender = p->id();
315  kdDebug(11001) << "Sending IOAdded to process player !!!!!!!!!!!!!! " << endl;
316  sendSystemMessage(stream, KGameMessage::IdIOAdded, 0, sender);
317  }
318  }
319 }
320 
321 void KGameProcessIO::notifyTurn(bool b)
322 {
323  if (!player())
324  {
325  kdWarning(11001) << k_funcinfo << ": player() is NULL" << endl;
326  return;
327  }
328  bool sendit=true;
329  TQByteArray buffer;
330  TQDataStream stream(buffer,IO_WriteOnly);
331  stream << (TQ_INT8)b;
332  emit signalPrepareTurn(stream,b,this,&sendit);
333  if (sendit)
334  {
335  TQ_UINT32 sender=player()->id();
336  kdDebug(11001) << "Sending Turn to process player !!!!!!!!!!!!!! " << endl;
337  sendSystemMessage(stream, KGameMessage::IdTurn, 0, sender);
338  }
339 }
340 
341 void KGameProcessIO::sendSystemMessage(TQDataStream &stream,int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
342 {
343  sendAllMessages(stream, msgid, receiver, sender, false);
344 }
345 
346 void KGameProcessIO::sendMessage(TQDataStream &stream,int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
347 {
348  sendAllMessages(stream, msgid, receiver, sender, true);
349 }
350 
351 void KGameProcessIO::sendAllMessages(TQDataStream &stream,int msgid, TQ_UINT32 receiver, TQ_UINT32 sender, bool usermsg)
352 {
353  kdDebug(11001) << "==============> KGameProcessIO::sendMessage (usermsg="<<usermsg<<")" << endl;
354  // if (!player()) return ;
355  //if (!player()->isActive()) return ;
356 
357  if (usermsg)
358  {
359  msgid+=KGameMessage::IdUser;
360  }
361 
362  kdDebug(11001) << "=============* ProcessIO (" << msgid << "," << receiver << "," << sender << ") ===========" << endl;
363 
364  TQByteArray buffer;
365  TQDataStream ostream(buffer,IO_WriteOnly);
366  TQBuffer *device=(TQBuffer *)stream.device();
367  TQByteArray data=device->buffer();;
368 
369  KGameMessage::createHeader(ostream,sender,receiver,msgid);
370  // ostream.writeRawBytes(data.data()+device->at(),data.size()-device->at());
371  ostream.writeRawBytes(data.data(),data.size());
372  kdDebug(11001) << " Adding user data from pos="<< device->at() <<" amount= " << data.size() << " byte " << endl;
373  //if (d->mMessageClient) d->mMessageClient->sendBroadcast(buffer);
374  if (d->mProcessIO)
375  {
376  d->mProcessIO->send(buffer);
377  }
378 }
379 
380 //void KGameProcessIO::clientMessage(const TQByteArray& receiveBuffer, TQ_UINT32 clientID, const TQValueList <TQ_UINT32> &recv)
381 void KGameProcessIO::receivedMessage(const TQByteArray& receiveBuffer)
382 {
383  TQDataStream stream(receiveBuffer,IO_ReadOnly);
384  int msgid;
385  TQ_UINT32 sender;
386  TQ_UINT32 receiver;
387  KGameMessage::extractHeader(stream,sender,receiver,msgid);
388 
389  kdDebug(11001) << "************* Got process message sender =" << sender
390  << " receiver=" << receiver << " msgid=" << msgid << endl;
391 
392 
393  // Cut out the header part...to not confuse network code
394  TQBuffer *buf=(TQBuffer *)stream.device();
395  TQByteArray newbuffer;
396  newbuffer.setRawData(buf->buffer().data()+buf->at(),buf->size()-buf->at());
397  TQDataStream ostream(newbuffer,IO_ReadOnly);
398  kdDebug(11001) << "Newbuffer size=" << newbuffer.size() << endl;
399 
400 
401 
402 // This is a dummy message which allows us the process to talk with its owner
403  if (msgid==KGameMessage::IdProcessQuery)
404  {
405  emit signalProcessQuery(ostream,this);
406  }
407  else if (player())
408  {
409  sender = player()->id(); // force correct sender
410  if (msgid==KGameMessage::IdPlayerInput)
411  {
412  sendInput(ostream,true,sender);
413  }
414  else
415  {
416  player()->forwardMessage(ostream,msgid,receiver,sender);
417  }
418  }
419  else
420  {
421  kdDebug(11001) << k_funcinfo << ": Got message from process but no player defined!" << endl;
422  }
423  newbuffer.resetRawData(buf->buffer().data()+buf->at(),buf->size()-buf->at());
424 }
425 
426 
427 // ----------------------- Computer IO --------------------------
428 class KGameComputerIO::KGameComputerIOPrivate
429 {
430 //TODO: maybe these should be KGameProperties!!
431 public:
432  KGameComputerIOPrivate()
433  {
434  mAdvanceCounter = 0;
435  mReactionPeriod = 0;
436 
437  mPauseCounter = 0;
438 
439  mAdvanceTimer = 0;
440  }
441  int mAdvanceCounter;
442  int mReactionPeriod;
443 
444  int mPauseCounter;
445 
446  TQTimer* mAdvanceTimer;
447 };
448 
449 KGameComputerIO::KGameComputerIO() : KGameIO()
450 {
451  init();
452 }
453 
454 KGameComputerIO::KGameComputerIO(KPlayer* p) : KGameIO(p)
455 {
456  init();
457 }
458 
459 void KGameComputerIO::init()
460 {
461  d = new KGameComputerIOPrivate;
462 }
463 
464 KGameComputerIO::~KGameComputerIO()
465 {
466  if (d->mAdvanceTimer)
467  {
468  delete d->mAdvanceTimer;
469  }
470  delete d;
471 }
472 
473 int KGameComputerIO::rtti() const
474 {
475  return ComputerIO;
476 }
477 
478 void KGameComputerIO::setReactionPeriod(int calls)
479 {
480  d->mReactionPeriod = calls;
481 }
482 
483 int KGameComputerIO::reactionPeriod() const
484 {
485  return d->mReactionPeriod;
486 }
487 
488 void KGameComputerIO::setAdvancePeriod(int ms)
489 {
490  stopAdvancePeriod();
491  d->mAdvanceTimer = new TQTimer(this);
492  connect(d->mAdvanceTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(advance()));
493  d->mAdvanceTimer->start(ms);
494 }
495 
496 void KGameComputerIO::stopAdvancePeriod()
497 {
498  if (d->mAdvanceTimer)
499  {
500  d->mAdvanceTimer->stop();
501  delete d->mAdvanceTimer;
502  }
503 }
504 
505 void KGameComputerIO::pause(int calls)
506 {
507  d->mPauseCounter = calls;
508 }
509 
510 void KGameComputerIO::unpause()
511 {
512  pause(0);
513 }
514 
515 void KGameComputerIO::advance()
516 {
517  if (d->mPauseCounter > 0)
518  {
519  d->mPauseCounter--;
520  return;
521  }
522  else if (d->mPauseCounter < 0)
523  {
524  return;
525  }
526  d->mAdvanceCounter++;
527  if (d->mAdvanceCounter >= d->mReactionPeriod)
528  {
529  d->mAdvanceCounter = 0;
530  reaction();
531  }
532 }
533 
534 void KGameComputerIO::reaction()
535 {
536  emit signalReaction();
537 }
538 
539 
KGameComputerIO::signalReaction
void signalReaction()
This signal is emitted when your computer player is meant to do something, or better is meant to be a...
KGameComputerIO::setAdvancePeriod
void setAdvancePeriod(int ms)
Start a TQTimer which calls advance every ms milli seconds.
Definition: kgameio.cpp:488
KGameComputerIO::advance
virtual void advance()
Works kind of similar to TQCanvas::advance.
Definition: kgameio.cpp:515
KGameComputerIO::rtti
int rtti() const
Run time idendification.
Definition: kgameio.cpp:473
KGameComputerIO::unpause
void unpause()
Equivalent to pause(0).
Definition: kgameio.cpp:510
KGameComputerIO::pause
void pause(int calls=-1)
Ignore calls number of advance calls.
Definition: kgameio.cpp:505
KGameComputerIO::KGameComputerIO
KGameComputerIO()
Creates a LOCAL computer player.
Definition: kgameio.cpp:449
KGameComputerIO::setReactionPeriod
void setReactionPeriod(int advanceCalls)
The number of advance calls until the player (or rather: the IO) does something (default: 1).
Definition: kgameio.cpp:478
KGameComputerIO::reaction
virtual void reaction()
Default implementation simply emits signalReaction.
Definition: kgameio.cpp:534
KGameIO
Base class for IO devices for games.
Definition: kgameio.h:56
KGameIO::KGameIO
KGameIO()
Constructs a KGameIO object.
Definition: kgameio.cpp:40
KGameIO::sendInput
bool sendInput(TQDataStream &stream, bool transmit=true, TQ_UINT32 sender=0)
Send an input message using KPlayer::forwardInput.
Definition: kgameio.cpp:100
KGameIO::notifyTurn
virtual void notifyTurn(bool b)
Notifies the IO device that the player's setTurn had been called Called by KPlayer.
Definition: kgameio.cpp:71
KGameIO::player
KPlayer * player() const
This function returns the player who owns this IO.
Definition: kgameio.h:90
KGameIO::setPlayer
void setPlayer(KPlayer *p)
Sets the player to which this IO belongs to.
Definition: kgameio.h:105
KGameIO::signalPrepareTurn
void signalPrepareTurn(TQDataStream &stream, bool turn, KGameIO *io, bool *send)
Signal generated when KPlayer::myTurn changes.
KGameIO::Debug
void Debug()
Gives debug output of the game status.
Definition: kgameio.cpp:109
KGameIO::rtti
virtual int rtti() const =0
Run time idendification.
KGameIO::initIO
virtual void initIO(KPlayer *p)
Init this device by setting the player and e.g.
Definition: kgameio.cpp:66
KGameIO::game
KGame * game() const
Equivalent to player()->game()
Definition: kgameio.cpp:91
KGameKeyIO::rtti
virtual int rtti() const
The idendification of the IO.
Definition: kgameio.cpp:138
KGameKeyIO::KGameKeyIO
KGameKeyIO(TQWidget *parent)
Create a keyboard input devices.
Definition: kgameio.cpp:120
KGameKeyIO::signalKeyEvent
void signalKeyEvent(KGameIO *io, TQDataStream &stream, TQKeyEvent *m, bool *eatevent)
Signal handler for keyboard events.
KGameKeyIO::eventFilter
bool eventFilter(TQObject *o, TQEvent *e)
Internal method to process the events.
Definition: kgameio.cpp:140
KGameMouseIO::setMouseTracking
void setMouseTracking(bool b)
Manually activate or deactivate mouse tracking.
Definition: kgameio.cpp:194
KGameMouseIO::eventFilter
bool eventFilter(TQObject *o, TQEvent *e)
Internal event filter.
Definition: kgameio.cpp:202
KGameMouseIO::signalMouseEvent
void signalMouseEvent(KGameIO *io, TQDataStream &stream, TQMouseEvent *m, bool *eatevent)
Signal handler for mouse events.
KGameMouseIO::rtti
virtual int rtti() const
The idendification of the IO.
Definition: kgameio.cpp:189
KGameMouseIO::KGameMouseIO
KGameMouseIO(TQWidget *parent, bool trackmouse=false)
Creates a mouse IO device.
Definition: kgameio.cpp:170
KGameProcessIO::~KGameProcessIO
virtual ~KGameProcessIO()
Deletes the process input devices.
Definition: kgameio.cpp:278
KGameProcessIO::signalIOAdded
void signalIOAdded(KGameIO *game, TQDataStream &stream, KPlayer *p, bool *send)
Signal generated when the computer player is added.
KGameProcessIO::rtti
int rtti() const
The idendification of the IO.
Definition: kgameio.cpp:294
KGameProcessIO::initIO
void initIO(KPlayer *p)
Init this device by setting the player and e.g.
Definition: kgameio.cpp:299
KGameProcessIO::KGameProcessIO
KGameProcessIO(const TQString &name)
Creates a computer player via a separate process.
Definition: kgameio.cpp:252
KGameProcessIO::receivedMessage
void receivedMessage(const TQByteArray &receiveBuffer)
Internal message handler to receive data from the process.
Definition: kgameio.cpp:381
KGameProcessIO::sendSystemMessage
void sendSystemMessage(TQDataStream &stream, int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
Send a system message to the process.
Definition: kgameio.cpp:341
KGameProcessIO::signalProcessQuery
void signalProcessQuery(TQDataStream &stream, KGameProcessIO *me)
A computer query message is received.
KGameProcessIO::notifyTurn
virtual void notifyTurn(bool turn)
Notifies the IO device that the player's setTurn had been called Called by KPlayer.
Definition: kgameio.cpp:321
KGameProcessIO::sendMessage
void sendMessage(TQDataStream &stream, int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
Send a message to the process.
Definition: kgameio.cpp:346
KGameProcessIO::sendAllMessages
void sendAllMessages(TQDataStream &stream, int msgid, TQ_UINT32 receiver, TQ_UINT32 sender, bool usermsg)
Internal ~ombined function for all message handling.
Definition: kgameio.cpp:351
KGame
The main KDE game object.
Definition: kgame.h:63
KPlayer
Base class for a game player.
Definition: kplayer.h:70
KPlayer::id
TQ_UINT32 id() const
Returns the id of the player.
Definition: kplayer.cpp:195
KPlayer::userId
int userId() const
Returns the user defined id of the player This value can be used arbitrary by you to have some user i...
Definition: kplayer.h:208
KPlayer::addGameIO
bool addGameIO(KGameIO *input)
Adds an IO device for the player.
Definition: kplayer.cpp:219
KPlayer::removeGameIO
bool removeGameIO(KGameIO *input=0, bool deleteit=true)
remove (and delete) a game IO device
Definition: kplayer.cpp:231
KPlayer::forwardMessage
virtual bool forwardMessage(TQDataStream &msg, int msgid, TQ_UINT32 receiver=0, TQ_UINT32 sender=0)
Forwards Message to the game object..internal use only.
Definition: kplayer.cpp:128
KPlayer::forwardInput
virtual bool forwardInput(TQDataStream &msg, bool transmit=true, TQ_UINT32 sender=0)
Forwards input to the game object..internal use only.
Definition: kplayer.cpp:142
KPlayer::game
KGame * game() const
Query to which game the player belongs to.
Definition: kplayer.h:128

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