kgamemessage.cpp

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: kgamemessage.cpp 465369 2005-09-29 14:33:08Z mueller $
00022 */
00023 
00024 #include "kgamemessage.h"
00025 
00026 #include <klocale.h>
00027 
00028 #define MESSAGE_VERSION 2
00029 
00030 Q_UINT32 KGameMessage::createPlayerId(int oldplayerid,Q_UINT32 gameid)
00031 {
00032   int p;
00033   p = oldplayerid & 0x3ff; // remove game id
00034   p |= (gameid << 10);
00035   return p;
00036 }
00037 
00038 int KGameMessage::rawPlayerId(Q_UINT32 playerid)
00039 {
00040   return playerid & 0x03ff;
00041 }
00042 
00043 Q_UINT32 KGameMessage::rawGameId(Q_UINT32 playerid)
00044 {
00045   return (playerid & 0xfc00) >> 10;
00046 }
00047 
00048 bool KGameMessage::isPlayer(Q_UINT32 msgid)
00049 {
00050   if (msgid & 0xfc00) {
00051     return true;
00052   } else {
00053     return false;
00054   }
00055 }
00056 
00057 bool KGameMessage::isGame(Q_UINT32 msgid)
00058 {
00059   return !isPlayer(msgid);
00060 }
00061 
00062 
00063 void KGameMessage::createHeader(QDataStream &msg,Q_UINT32 sender,Q_UINT32 receiver,int msgid)
00064 {
00065   msg << (Q_INT16)sender << (Q_INT16)receiver << (Q_INT16)msgid;
00066 }
00067 
00068 void KGameMessage::extractHeader(QDataStream &msg,Q_UINT32 &sender,Q_UINT32 &receiver,int &msgid)
00069 {
00070   Q_INT16 d3,d4,d5;
00071   msg >> d3 >> d4 >> d5;
00072   sender=d3;receiver=d4;msgid=d5;
00073 }
00074 
00075 void KGameMessage::createPropertyHeader(QDataStream &msg,int id)
00076 {
00077   msg << (Q_INT16)id;
00078 }
00079 
00080 void KGameMessage::extractPropertyHeader(QDataStream &msg,int &id)
00081 {
00082   Q_INT16 d1;
00083   msg >> d1;
00084   id=d1;
00085 }
00086 
00087 void KGameMessage::createPropertyCommand(QDataStream &msg,int cmdid,int pid,int cmd)
00088 {
00089   createPropertyHeader(msg,cmdid);
00090   msg << (Q_INT16)pid ;
00091   msg << (Q_INT8)cmd ;
00092 }
00093 
00094 void KGameMessage::extractPropertyCommand(QDataStream &msg,int &pid,int &cmd)
00095 {
00096   Q_INT16 d1;
00097   Q_INT8 d2;
00098   msg >> d1 >> d2;
00099   pid=d1;
00100   cmd=d2;
00101 }
00102 
00103 int KGameMessage::version()
00104 {
00105   return MESSAGE_VERSION;
00106 }
00107 
00108 QString KGameMessage::messageId2Text(int msgid)
00109 {
00110 // this should contain all KGameMessage::GameMessageIds
00111 // feel free to add missing ones, to remove obsolete one and even feel free to
00112 // let it be ;-)
00113   switch (msgid) {
00114     case KGameMessage::IdSetupGame:
00115         return i18n("Setup Game");
00116     case KGameMessage::IdSetupGameContinue:
00117         return i18n("Setup Game Continue");
00118     case KGameMessage::IdGameLoad:
00119         return i18n("Load Game");
00120     case KGameMessage::IdGameConnected:
00121         return i18n("Client game connected");
00122     case KGameMessage::IdGameSetupDone:
00123         return i18n("Game setup done");
00124     case KGameMessage::IdSyncRandom:
00125         return i18n("Synchronize Random");
00126     case KGameMessage::IdDisconnect:
00127         return i18n("Disconnect");
00128     case KGameMessage::IdPlayerProperty:
00129         return i18n("Player Property");
00130     case KGameMessage::IdGameProperty:
00131         return i18n("Game Property");
00132     case KGameMessage::IdAddPlayer:
00133         return i18n("Add Player");
00134     case KGameMessage::IdRemovePlayer:
00135         return i18n("Remove Player");
00136     case KGameMessage::IdActivatePlayer:
00137         return i18n("Activate Player");
00138     case KGameMessage::IdInactivatePlayer:
00139         return i18n("Inactivate Player");
00140     case KGameMessage::IdTurn:
00141         return i18n("Id Turn");
00142     case KGameMessage::IdError:
00143         return i18n("Error Message");
00144     case KGameMessage::IdPlayerInput:
00145         return i18n("Player Input");
00146     case KGameMessage::IdIOAdded:
00147         return i18n("An IO was added");
00148     case KGameMessage::IdProcessQuery:
00149         return i18n("Process Query");
00150     case KGameMessage::IdPlayerId:
00151         return i18n("Player ID");
00152     case KGameMessage::IdUser: // IdUser must be unknown for use, too!
00153     default:
00154         return QString::null;
00155   }
00156 }
KDE Home | KDE Accessibility Home | Description of Access Keys