• 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 -------------------------
40KGameIO::KGameIO() : TQObject(0,0)
41{
42 kdDebug(11001) << k_funcinfo << ": this=" << this << ", sizeof(this)" << sizeof(KGameIO) << endl;
43 mPlayer = 0;
44}
45
46KGameIO::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
56KGameIO::~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
66void KGameIO::initIO(KPlayer *p)
67{
68 setPlayer(p);
69}
70
71void 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
91KGame* KGameIO::game() const
92{
93 if (!player())
94 {
95 return 0;
96 }
97 return player()->game();
98}
99
100bool 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
109void 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 ---------------------------
120KGameKeyIO::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
130KGameKeyIO::~KGameKeyIO()
131{
132 if (parent())
133 {
134 parent()->removeEventFilter(this);
135 }
136}
137
138int KGameKeyIO::rtti() const { return KeyIO; }
139
140bool 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 ---------------------------
170KGameMouseIO::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
181KGameMouseIO::~KGameMouseIO()
182{
183 if (parent())
184 {
185 parent()->removeEventFilter(this);
186 }
187}
188
189int KGameMouseIO::rtti() const
190{
191 return MouseIO;
192}
193
194void KGameMouseIO::setMouseTracking(bool b)
195{
196 if (parent())
197 {
198 ((TQWidget*)parent())->setMouseTracking(b);
199 }
200}
201
202bool 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 ---------------------------
237class KGameProcessIO::KGameProcessIOPrivate
238{
239public:
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 ---------------------------
252KGameProcessIO::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
278KGameProcessIO::~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
294int KGameProcessIO::rtti() const
295{
296 return ProcessIO;
297}
298
299void 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
321void 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
341void KGameProcessIO::sendSystemMessage(TQDataStream &stream,int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
342{
343 sendAllMessages(stream, msgid, receiver, sender, false);
344}
345
346void KGameProcessIO::sendMessage(TQDataStream &stream,int msgid, TQ_UINT32 receiver, TQ_UINT32 sender)
347{
348 sendAllMessages(stream, msgid, receiver, sender, true);
349}
350
351void 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)
381void 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 --------------------------
428class KGameComputerIO::KGameComputerIOPrivate
429{
430//TODO: maybe these should be KGameProperties!!
431public:
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
449KGameComputerIO::KGameComputerIO() : KGameIO()
450{
451 init();
452}
453
454KGameComputerIO::KGameComputerIO(KPlayer* p) : KGameIO(p)
455{
456 init();
457}
458
459void KGameComputerIO::init()
460{
461 d = new KGameComputerIOPrivate;
462}
463
464KGameComputerIO::~KGameComputerIO()
465{
466 if (d->mAdvanceTimer)
467 {
468 delete d->mAdvanceTimer;
469 }
470 delete d;
471}
472
473int KGameComputerIO::rtti() const
474{
475 return ComputerIO;
476}
477
478void KGameComputerIO::setReactionPeriod(int calls)
479{
480 d->mReactionPeriod = calls;
481}
482
483int KGameComputerIO::reactionPeriod() const
484{
485 return d->mReactionPeriod;
486}
487
488void 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
496void KGameComputerIO::stopAdvancePeriod()
497{
498 if (d->mAdvanceTimer)
499 {
500 d->mAdvanceTimer->stop();
501 delete d->mAdvanceTimer;
502 }
503}
504
505void KGameComputerIO::pause(int calls)
506{
507 d->mPauseCounter = calls;
508}
509
510void KGameComputerIO::unpause()
511{
512 pause(0);
513}
514
515void 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
534void 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::player
KPlayer * player() const
This function returns the player who owns this IO.
Definition: kgameio.h:90
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::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::game
KGame * game() const
Query to which game the player belongs to.
Definition: kplayer.h:128
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

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.