• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdegames API Reference
  • KDE Home
  • Contact Us
 

libkdegames/libkdegamesprivate/kgame

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

KDE's Doxygen guidelines are available online.

libkdegames/libkdegamesprivate/kgame

Skip menu "libkdegames/libkdegamesprivate/kgame"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdegames API Reference

Skip menu "kdegames API Reference"
  • granatier
  • kapman
  • kblackbox
  • kgoldrunner
  • kigo
  • kmahjongg
  • KShisen
  • ksquares
  • libkdegames
  •   highscore
  •   libkdegamesprivate
  •     kgame
  • libkmahjongg
  • palapeli
  •   libpala

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal