diff options
author | Timothy Pearson <[email protected]> | 2011-11-06 15:56:37 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2011-11-06 15:56:37 -0600 |
commit | 14c49c4f56792a934bcdc4efceebbd429d858571 (patch) | |
tree | 2f302410d5a5d678bf3ff10edead70d348be6644 /libkdegames/kgame/kgamechat.cpp | |
parent | ab0981b9689e4d3ad88e9572bfa4b4a5e36c51ae (diff) | |
download | tdegames-14c49c4f56792a934bcdc4efceebbd429d858571.tar.gz tdegames-14c49c4f56792a934bcdc4efceebbd429d858571.zip |
Actually move the kde files that were renamed in the last commit
Diffstat (limited to 'libkdegames/kgame/kgamechat.cpp')
-rw-r--r-- | libkdegames/kgame/kgamechat.cpp | 341 |
1 files changed, 0 insertions, 341 deletions
diff --git a/libkdegames/kgame/kgamechat.cpp b/libkdegames/kgame/kgamechat.cpp deleted file mode 100644 index 11f47f7b..00000000 --- a/libkdegames/kgame/kgamechat.cpp +++ /dev/null @@ -1,341 +0,0 @@ -/* - This file is part of the KDE games library - Copyright (C) 2001-2002 Andreas Beckermann ([email protected]) - Copyright (C) 2001 Martin Heni ([email protected]) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2 as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "kgamechat.h" -#include "kgamechat.moc" - -#include "kgame.h" -#include "kplayer.h" -#include "kgameproperty.h" -#include "kgamemessage.h" - -#include <klocale.h> -#include <kdebug.h> - -#include <tqmap.h> -#include <tqintdict.h> - -//FIXME: -#define FIRST_ID 2 // first id, that is free of use, aka not defined above - -class KGameChatPrivate -{ -public: - KGameChatPrivate() - { - mFromPlayer = 0; - mGame = 0; - - mToMyGroup = -1; - } - - KGame* mGame; - KPlayer* mFromPlayer; - int mMessageId; - - - TQIntDict<KPlayer> mIndex2Player; - - TQMap<int, int> mSendId2PlayerId; - int mToMyGroup; // just as the above - but for the group, not for players -}; - -KGameChat::KGameChat(KGame* g, int msgid, TQWidget* parent) : KChatBase(parent) -{ - init(g, msgid); -} - -KGameChat::KGameChat(KGame* g, int msgid, KPlayer* fromPlayer, TQWidget* parent) : KChatBase(parent) -{ - init(g, msgid); - setFromPlayer(fromPlayer); -} - -KGameChat::KGameChat(TQWidget* parent) : KChatBase(parent) -{ - init(0, -1); -} - -KGameChat::~KGameChat() -{ - kdDebug(11001) << k_funcinfo << endl; - delete d; -} - -void KGameChat::init(KGame* g, int msgId) -{ - kdDebug(11001) << k_funcinfo << endl; - d = new KGameChatPrivate; - setMessageId(msgId); - - setKGame(g); -} - -void KGameChat::addMessage(int fromId, const TQString& text) -{ - if (!d->mGame) { - kdWarning(11001) << "no KGame object has been set" << endl; - addMessage(i18n("Player %1").tqarg(fromId), text); - } else { - KPlayer* p = d->mGame->findPlayer(fromId); - if (p) { - kdDebug(11001) << "adding message of player " << p->name() << "id=" << fromId << endl; - addMessage(p->name(), text); - } else { - kdWarning(11001) << "Could not find player id " << fromId << endl; - addMessage(i18n("Unknown"), text); - } - } -} - -void KGameChat::returnPressed(const TQString& text) -{ - if (!d->mFromPlayer) { - kdWarning(11001) << k_funcinfo << ": You must set a player first!" << endl; - return; - } - if (!d->mGame) { - kdWarning(11001) << k_funcinfo << ": You must set a game first!" << endl; - return; - } - - kdDebug(11001) << "from: " << d->mFromPlayer->id() << "==" << d->mFromPlayer->name() << endl; - - int id = sendingEntry(); - - if (isToGroupMessage(id)) { - // note: there is currently no support for other groups than the players - // group! It might be useful to send to other groups, too - TQString group = d->mFromPlayer->group(); - kdDebug(11001) << "send to group " << group << endl; - int sender = d->mFromPlayer->id(); - d->mGame->sendGroupMessage(text, messageId(), sender, group); - - //TODO - //AB: this message is never received!! we need to connect to - //KPlayer::networkData!!! - //TODO - - } else { - int toPlayer = 0; - if (!isSendToAllMessage(id) && isToPlayerMessage(id)) { - toPlayer = playerId(id); - if (toPlayer == -1) { - kdError(11001) << k_funcinfo << ": don't know that player " - << "- internal ERROR" << endl; - } - } - int receiver = toPlayer; - int sender = d->mFromPlayer->id(); - d->mGame->sendMessage(text, messageId(), receiver, sender); - } -} - -void KGameChat::setMessageId(int msgid) -{ d->mMessageId = msgid; } - -int KGameChat::messageId() const -{ return d->mMessageId; } - -bool KGameChat::isSendToAllMessage(int id) const -{ return (id == KChatBase::SendToAll); } - -bool KGameChat::isToGroupMessage(int id) const -{ return (id == d->mToMyGroup); } - -bool KGameChat::isToPlayerMessage(int id) const -{ -return d->mSendId2PlayerId.contains(id); } - -TQString KGameChat::sendToPlayerEntry(const TQString& name) const -{ return i18n("Send to %1").tqarg(name); } - -int KGameChat::playerId(int id) const -{ - if (!isToPlayerMessage(id)) { - return -1; - } - - return d->mSendId2PlayerId[id]; -} - -int KGameChat::sendingId(int playerId) const -{ - TQMap<int, int>::Iterator it; - for (it = d->mSendId2PlayerId.begin(); it != d->mSendId2PlayerId.end(); ++it) { - if (it.data() == playerId) { - return it.key(); - } - } - return -1; -} - -const TQString& KGameChat::fromName() const -{ return d->mFromPlayer ? d->mFromPlayer->name() : TQString(); } - -bool KGameChat::hasPlayer(int id) const -{ - return (sendingId(id) != -1); -} - -void KGameChat::setFromPlayer(KPlayer* p) -{ - if (!p) { - kdError(11001) << k_funcinfo << ": NULL player" << endl; - removeSendingEntry(d->mToMyGroup); - d->mFromPlayer = 0; - return; - } - if (d->mFromPlayer) { - changeSendingEntry(p->group(), d->mToMyGroup); - } else { - if (d->mToMyGroup != -1) { - kdWarning(11001) << "send to my group exists already - removing" << endl; - removeSendingEntry(d->mToMyGroup); - } - d->mToMyGroup = nextId(); - addSendingEntry(i18n("Send to My Group (\"%1\")").tqarg(p->group()), d->mToMyGroup); - } - d->mFromPlayer = p; - kdDebug(11001) << k_funcinfo << " player=" << p << endl; -} - - -void KGameChat::setKGame(KGame* g) -{ - if (d->mGame) { - slotUnsetKGame(); - } - kdDebug(11001) << k_funcinfo << " game=" << g << endl; - d->mGame = g; - - if (d->mGame) { - connect(d->mGame, TQT_SIGNAL(signalPlayerJoinedGame(KPlayer*)), - this, TQT_SLOT(slotAddPlayer(KPlayer*))); - connect(d->mGame, TQT_SIGNAL(signalPlayerLeftGame(KPlayer*)), - this, TQT_SLOT(slotRemovePlayer(KPlayer*))); - connect(d->mGame, TQT_SIGNAL(signalNetworkData(int, const TQByteArray&, TQ_UINT32, TQ_UINT32)), - this, TQT_SLOT(slotReceiveMessage(int, const TQByteArray&, TQ_UINT32, TQ_UINT32))); - connect(d->mGame, TQT_SIGNAL(destroyed()), this, TQT_SLOT(slotUnsetKGame())); - - TQPtrList<KPlayer> playerList = *d->mGame->playerList(); - for (int unsigned i = 0; i < playerList.count(); i++) { - slotAddPlayer(playerList.at(i)); - } - } -} - -KGame* KGameChat::game() const -{ - return d->mGame; -} - -KPlayer* KGameChat::fromPlayer() const -{ - return d->mFromPlayer; -} - -void KGameChat::slotUnsetKGame() -{ -//TODO: test this method! - - if (!d->mGame) { - return; - } - disconnect(d->mGame, 0, this, 0); - removeSendingEntry(d->mToMyGroup); - TQMap<int, int>::Iterator it; - for (it = d->mSendId2PlayerId.begin(); it != d->mSendId2PlayerId.end(); ++it) { - removeSendingEntry(it.data()); - } -} - -void KGameChat::slotAddPlayer(KPlayer* p) -{ - if (!p) { - kdError(11001) << k_funcinfo << ": cannot add NULL player" << endl; - return; - } - if (hasPlayer(p->id())) { - kdError(11001) << k_funcinfo << ": player was added before" << endl; - return; - } - - int sendingId = nextId(); - addSendingEntry(comboBoxItem(p->name()), sendingId); - d->mSendId2PlayerId.insert(sendingId, p->id()); - connect(p, TQT_SIGNAL(signalPropertyChanged(KGamePropertyBase*, KPlayer*)), - this, TQT_SLOT(slotPropertyChanged(KGamePropertyBase*, KPlayer*))); - connect(p, TQT_SIGNAL(signalNetworkData(int, const TQByteArray&, TQ_UINT32, KPlayer*)), - this, TQT_SLOT(slotReceivePrivateMessage(int, const TQByteArray&, TQ_UINT32, KPlayer*))); -} - -void KGameChat::slotRemovePlayer(KPlayer* p) -{ - if (!p) { - kdError(11001) << k_funcinfo << ": NULL player" << endl; - return; - } - if (!hasPlayer(p->id())) { - kdError(11001) << k_funcinfo << ": cannot remove non-existent player" << endl; - return; - } - - int id = sendingId(p->id()); - removeSendingEntry(id); - p->disconnect(this); - d->mSendId2PlayerId.remove(id); -} - -void KGameChat::slotPropertyChanged(KGamePropertyBase* prop, KPlayer* player) -{ - if (prop->id() == KGamePropertyBase::IdName) { -// kdDebug(11001) << "new Name" << endl; - changeSendingEntry(player->name(), sendingId(player->id())); -/* - mCombo->changeItem(comboBoxItem(player->name()), index); - */ - } else if (prop->id() == KGamePropertyBase::IdGroup) { - //TODO - } -} - -void KGameChat::slotReceivePrivateMessage(int msgid, const TQByteArray& buffer, TQ_UINT32 sender, KPlayer* me) -{ - if (!me || me != fromPlayer()) { - kdDebug() << k_funcinfo << "nope - not for us!" << endl; - return; - } - slotReceiveMessage(msgid, buffer, me->id(), sender); -} - -void KGameChat::slotReceiveMessage(int msgid, const TQByteArray& buffer, TQ_UINT32 , TQ_UINT32 sender) -{ - TQDataStream msg(buffer, IO_ReadOnly); - if (msgid != messageId()) { - return; - } - - TQString text; - msg >> text; - - addMessage(sender, text); -} - |