From 74f23fd3d0e1fb3be8e5419193d57d91746c887a Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Fri, 27 Mar 2009 13:12:24 -0600 Subject: Clean up chat and chat tabs some more --- src/commandhandler.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'src/commandhandler.cpp') diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp index 7ccd7d80..14c5434a 100644 --- a/src/commandhandler.cpp +++ b/src/commandhandler.cpp @@ -339,12 +339,6 @@ void CommandHandler::handleWho() void CommandHandler::handleMsg(const std::string &args) { -#ifdef TMWSERV_SUPPORT - std::string::size_type pos = args.find(' '); - std::string recipient(args, 0, pos); - std::string text(args, pos+1); - Net::ChatServer::privMsg(recipient, text); -#else std::string recvnick = ""; std::string msg = ""; @@ -391,7 +385,6 @@ void CommandHandler::handleMsg(const std::string &args) } else localChatTab->chatLog("Cannont send empty whispers!"); -#endif } void CommandHandler::handleClear() @@ -547,10 +540,7 @@ void CommandHandler::handleParty(const std::string &args) void CommandHandler::handleMe(const std::string &args) { std::string action = strprintf("*%s*", args.c_str()); - chatWindow->chatSend(action); - //std::stringstream actionStr; - //actionStr << "*" << args << "*"; - //chatWindow->chatSend(actionStr.str()); + chatWindow->chatInput(action); } void CommandHandler::handleRecord(const std::string &args) -- cgit v1.2.3-70-g09d2 From 712ca58c011123505c807266dcc8d9d84ca1aa44 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 27 Mar 2009 19:44:23 +0100 Subject: Made eAthena's Network class statically accessible Now the instance doesn't need to be passed into the MessageOut class anymore. Expect a lot of cleanup in the next commit. --- src/beingmanager.cpp | 3 +-- src/commandhandler.cpp | 6 ++---- src/engine.cpp | 3 +-- src/game.cpp | 3 +-- src/gui/buy.cpp | 3 +-- src/gui/buysell.cpp | 3 +-- src/gui/char_select.cpp | 9 +++------ src/gui/npc_text.cpp | 6 ++---- src/gui/npcintegerdialog.cpp | 3 +-- src/gui/npclistdialog.cpp | 3 +-- src/gui/npcstringdialog.cpp | 3 +-- src/gui/popupmenu.cpp | 3 +-- src/gui/sell.cpp | 4 +--- src/gui/storagewindow.cpp | 9 +++------ src/gui/trade.cpp | 18 ++++++------------ src/gui/widgets/chattab.cpp | 7 ++----- src/gui/widgets/whispertab.cpp | 3 +-- src/localplayer.cpp | 42 ++++++++++++++---------------------------- src/main.cpp | 10 +++------- src/net/ea/network.cpp | 9 +++++++++ src/net/ea/network.h | 6 +++++- src/net/messageout.cpp | 11 +++-------- src/net/messageout.h | 4 +--- src/npc.cpp | 3 +-- src/party.cpp | 12 ++++-------- 25 files changed, 69 insertions(+), 117 deletions(-) (limited to 'src/commandhandler.cpp') diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp index d72c4ee4..ae9ee787 100644 --- a/src/beingmanager.cpp +++ b/src/beingmanager.cpp @@ -120,8 +120,7 @@ Being *BeingManager::createBeing(int id, Uint16 job) // Player or NPC if (job <= 1000 || (job >= 4001 && job <= 4049)) { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0094); + MessageOut outMsg(0x0094); outMsg.writeInt32(id);//readLong(2)); } #endif diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp index 14c5434a..73e41554 100644 --- a/src/commandhandler.cpp +++ b/src/commandhandler.cpp @@ -142,8 +142,7 @@ void CommandHandler::handleAnnounce(const std::string &args) #ifdef TMWSERV_SUPPORT Net::ChatServer::announce(args); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0099); + MessageOut outMsg(0x0099); outMsg.writeInt16(args.length() + 4); outMsg.writeString(args, args.length()); #endif @@ -332,8 +331,7 @@ void CommandHandler::handleWho() #ifdef TMWSERV_SUPPORT //TODO #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x00c1); + MessageOut outMsg(0x00c1); #endif } diff --git a/src/engine.cpp b/src/engine.cpp index da4eb336..13563e66 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -151,8 +151,7 @@ void Engine::changeMap(const std::string &mapPath) #ifdef EATHENA_SUPPORT // Send "map loaded" - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_MAP_LOADED); + MessageOut outMsg(CMSG_MAP_LOADED); #endif } diff --git a/src/game.cpp b/src/game.cpp index 4687ed1f..5b389c3f 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -468,8 +468,7 @@ Game::Game(Network *network): * packet is handled by the older version, but its response * is ignored by the client */ - MessageOut msg(mNetwork); - msg.writeInt16(CMSG_CLIENT_PING); + MessageOut msg(CMSG_CLIENT_PING); msg.writeInt32(tick_time); engine->changeMap(map_path); diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index 6df2ae25..003e730e 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -199,8 +199,7 @@ void BuyDialog::action(const gcn::ActionEvent &event) Net::GameServer::Player::tradeWithNPC (mShopItems->at(selectedItem)->getId(), mAmountItems); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_BUY_REQUEST); + MessageOut outMsg(CMSG_NPC_BUY_REQUEST); outMsg.writeInt16(8); outMsg.writeInt16(mAmountItems); outMsg.writeInt16(mShopItems->at(selectedItem)->getId()); diff --git a/src/gui/buysell.cpp b/src/gui/buysell.cpp index b9a6a1dc..f45a5adb 100644 --- a/src/gui/buysell.cpp +++ b/src/gui/buysell.cpp @@ -97,8 +97,7 @@ void BuySellDialog::action(const gcn::ActionEvent &event) } #ifdef EATHENA_SUPPORT - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_BUY_SELL_REQUEST); + MessageOut outMsg(CMSG_NPC_BUY_SELL_REQUEST); outMsg.writeInt32(current_npc); outMsg.writeInt8(action); #endif diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index 4ab3d9ef..b6cd47d4 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -348,8 +348,7 @@ void CharSelectDialog::attemptCharDelete() Net::AccountServer::Account::deleteCharacter(mCharInfo->getPos()); #else // Request character deletion - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0068); + MessageOut outMsg(0x0068); outMsg.writeInt32(mCharInfo->getEntry()->mCharId); outMsg.writeString("a@a.com", 40); #endif @@ -362,8 +361,7 @@ void CharSelectDialog::attemptCharSelect() Net::AccountServer::Account::selectCharacter(mCharInfo->getPos()); #else // Request character selection - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0066); + MessageOut outMsg(0x0066); outMsg.writeInt8(mCharInfo->getPos()); #endif mCharInfo->lock(); @@ -693,8 +691,7 @@ int CharCreateDialog::getDistributedPoints() void CharCreateDialog::attemptCharCreate() { // Send character infos - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0067); + MessageOut outMsg(0x0067); outMsg.writeString(getName(), 24); outMsg.writeInt8(5); outMsg.writeInt8(5); diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index 9fa57be8..bf7b60ed 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -136,8 +136,7 @@ void NpcTextDialog::nextDialog(int npcID) #ifdef TMWSERV_SUPPORT Net::GameServer::Player::talkToNPC(npcID, false); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_NEXT_REQUEST); + MessageOut outMsg(CMSG_NPC_NEXT_REQUEST); outMsg.writeInt32(npcID); #endif } @@ -145,8 +144,7 @@ void NpcTextDialog::nextDialog(int npcID) void NpcTextDialog::closeDialog(int npcID) { #ifdef EATHENA_SUPPORT - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_CLOSE); + MessageOut outMsg(CMSG_NPC_CLOSE); outMsg.writeInt32(npcID); #endif } diff --git a/src/gui/npcintegerdialog.cpp b/src/gui/npcintegerdialog.cpp index a7ae2748..4dae8d83 100644 --- a/src/gui/npcintegerdialog.cpp +++ b/src/gui/npcintegerdialog.cpp @@ -127,8 +127,7 @@ void NpcIntegerDialog::action(const gcn::ActionEvent &event) NPC::isTalking = false; #ifdef EATHENA_SUPPORT - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_INT_RESPONSE); + MessageOut outMsg(CMSG_NPC_INT_RESPONSE); outMsg.writeInt32(current_npc); outMsg.writeInt32(mValueField->getValue()); #endif diff --git a/src/gui/npclistdialog.cpp b/src/gui/npclistdialog.cpp index ff91c9fc..6df0979f 100644 --- a/src/gui/npclistdialog.cpp +++ b/src/gui/npclistdialog.cpp @@ -143,8 +143,7 @@ void NpcListDialog::action(const gcn::ActionEvent &event) #ifdef TMWSERV_SUPPORT Net::GameServer::Player::selectFromNPC(current_npc, choice); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_LIST_CHOICE); + MessageOut outMsg(CMSG_NPC_LIST_CHOICE); outMsg.writeInt32(current_npc); outMsg.writeInt8(choice); #endif diff --git a/src/gui/npcstringdialog.cpp b/src/gui/npcstringdialog.cpp index c84de015..7297d7e8 100644 --- a/src/gui/npcstringdialog.cpp +++ b/src/gui/npcstringdialog.cpp @@ -95,8 +95,7 @@ void NpcStringDialog::action(const gcn::ActionEvent &event) mValueField->setText(""); #ifdef EATHENA_SUPPORT - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_STR_RESPONSE); + MessageOut outMsg(CMSG_NPC_STR_RESPONSE); outMsg.writeInt16(text.length() + 9); outMsg.writeInt32(current_npc); outMsg.writeString(text, text.length()); diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index 5b5b2b8c..1f36ef45 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -297,8 +297,7 @@ void PopupMenu::handleLink(const std::string &link) being && being->getType() == Being::PLAYER) { - MessageOut outMsg(player_node->getNetwork()); - outMsg.writeInt16(CMSG_PARTY_INVITE); + MessageOut outMsg(CMSG_PARTY_INVITE); outMsg.writeInt32(being->getId()); } #endif diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp index e7671110..648bff08 100644 --- a/src/gui/sell.cpp +++ b/src/gui/sell.cpp @@ -207,15 +207,13 @@ void SellDialog::action(const gcn::ActionEvent &event) (mShopItems->at(selectedItem)->getId(), mAmountItems); #else // Attempt sell - MessageOut outMsg(mNetwork); - ShopItem *item = mShopItems->at(selectedItem); int sellCount; mPlayerMoney += mAmountItems * mShopItems->at(selectedItem)->getPrice(); mMaxItems -= mAmountItems; while (mAmountItems > 0) { - outMsg.writeInt16(CMSG_NPC_SELL_REQUEST); + MessageOut outMsg(CMSG_NPC_SELL_REQUEST); outMsg.writeInt16(8); outMsg.writeInt16(item->getCurrentInvIndex()); // This order is important, item->getCurrentInvIndex() would return diff --git a/src/gui/storagewindow.cpp b/src/gui/storagewindow.cpp index 1289a4e7..847886cb 100644 --- a/src/gui/storagewindow.cpp +++ b/src/gui/storagewindow.cpp @@ -190,22 +190,19 @@ Item* StorageWindow::getSelectedItem() const void StorageWindow::addStore(Item* item, int ammount) { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_MOVE_TO_STORAGE); + MessageOut outMsg(CMSG_MOVE_TO_STORAGE); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt32(ammount); } void StorageWindow::removeStore(Item* item, int ammount) { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CSMG_MOVE_FROM_STORAGE); + MessageOut outMsg(CSMG_MOVE_FROM_STORAGE); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt32(ammount); } void StorageWindow::close() { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_CLOSE_STORAGE); + MessageOut outMsg(CMSG_CLOSE_STORAGE); } diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp index 4ecdede8..6cba1c41 100644 --- a/src/gui/trade.cpp +++ b/src/gui/trade.cpp @@ -252,8 +252,7 @@ void TradeWindow::tradeItem(Item *item, int quantity) // function. Detect the actual server version, and re-enable this // for that version only. //addItem(item->getId(), true, quantity, item->isEquipment()); - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST); + MessageOut outMsg(CMSG_TRADE_ITEM_ADD_REQUEST); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt32(quantity); #endif @@ -329,8 +328,7 @@ void TradeWindow::action(const gcn::ActionEvent &event) #ifdef TMWSERV_SUPPORT Net::GameServer::Player::acceptTrade(false); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_CANCEL_REQUEST); + MessageOut outMsg(CMSG_TRADE_CANCEL_REQUEST); #endif } #ifdef EATHENA_SUPPORT @@ -342,8 +340,7 @@ void TradeWindow::action(const gcn::ActionEvent &event) { mMoneyField->setText(toString(tempInt)); - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST); + MessageOut outMsg(CMSG_TRADE_ITEM_ADD_REQUEST); outMsg.writeInt16(0); outMsg.writeInt32(tempInt); } @@ -352,8 +349,7 @@ void TradeWindow::action(const gcn::ActionEvent &event) mMoneyField->setText(""); } mMoneyField->setEnabled(false); - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_ADD_COMPLETE); + MessageOut outMsg(CMSG_TRADE_ADD_COMPLETE); } #endif else if (event.getId() == "trade") @@ -362,8 +358,7 @@ void TradeWindow::action(const gcn::ActionEvent &event) Net::GameServer::Player::acceptTrade(true); setStatus(PROPOSING); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_OK); + MessageOut outMsg(CMSG_TRADE_OK); #endif } #ifdef TMWSERV_SUPPORT @@ -382,7 +377,6 @@ void TradeWindow::close() #ifdef TMWSERV_SUPPORT Net::GameServer::Player::acceptTrade(false); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_CANCEL_REQUEST); + MessageOut outMsg(CMSG_TRADE_CANCEL_REQUEST); #endif } diff --git a/src/gui/widgets/chattab.cpp b/src/gui/widgets/chattab.cpp index 715aaf20..c4b2196b 100644 --- a/src/gui/widgets/chattab.cpp +++ b/src/gui/widgets/chattab.cpp @@ -239,9 +239,7 @@ void ChatTab::chatInput(std::string &msg) chatLog(_("Trying to send a blank party message."), BY_SERVER, true); return; } - MessageOut outMsg(chatWindow->mNetwork); - - outMsg.writeInt16(CMSG_PARTY_MESSAGE); + MessageOut outMsg(CMSG_PARTY_MESSAGE); outMsg.writeInt16(length + 4); outMsg.writeString(msg, length); return; @@ -306,8 +304,7 @@ void ChatTab::handleInput(const std::string &msg) { #else std::string mes = player_node->getName() + " : " + msg; - MessageOut outMsg(chatWindow->mNetwork); - outMsg.writeInt16(CMSG_CHAT_MESSAGE); + MessageOut outMsg(CMSG_CHAT_MESSAGE); // Added + 1 in order to let eAthena parse admin commands correctly outMsg.writeInt16(mes.length() + 4 + 1); outMsg.writeString(mes, mes.length() + 1); diff --git a/src/gui/widgets/whispertab.cpp b/src/gui/widgets/whispertab.cpp index 0ae042df..1621e965 100644 --- a/src/gui/widgets/whispertab.cpp +++ b/src/gui/widgets/whispertab.cpp @@ -57,8 +57,7 @@ void WhisperTab::handleInput(const std::string &msg) { #ifdef TMWSERV_SUPPORT Net::ChatServer::privMsg(mNick, msg); #else - MessageOut outMsg(chatWindow->mNetwork); - outMsg.writeInt16(CMSG_CHAT_WHISPER); + MessageOut outMsg(CMSG_CHAT_WHISPER); outMsg.writeInt16(msg.length() + 28); outMsg.writeString(mNick, 24); outMsg.writeString(msg, msg.length()); diff --git a/src/localplayer.cpp b/src/localplayer.cpp index f8fad1e8..8b2d6907 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -399,8 +399,7 @@ void LocalPlayer::equipItem(Item *item) #ifdef TMWSERV_SUPPORT Net::GameServer::Player::equip(item->getInvIndex()); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PLAYER_EQUIP); + MessageOut outMsg(CMSG_PLAYER_EQUIP); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt16(0); #endif @@ -428,8 +427,7 @@ void LocalPlayer::unequipItem(Item *item) if (!item) return; - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PLAYER_UNEQUIP); + MessageOut outMsg(CMSG_PLAYER_UNEQUIP); outMsg.writeInt16(item->getInvIndex()); // Tidy equipment directly to avoid weapon still shown bug, for instance @@ -438,8 +436,7 @@ void LocalPlayer::unequipItem(Item *item) void LocalPlayer::useItem(Item *item) { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PLAYER_INVENTORY_USE); + MessageOut outMsg(CMSG_PLAYER_INVENTORY_USE); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt32(item->getId()); // Note: id is dest of item, usually player_node->account_ID ?? @@ -453,8 +450,7 @@ void LocalPlayer::dropItem(Item *item, int quantity) Net::GameServer::Player::drop(item->getInvIndex(), quantity); #else // TODO: Fix wrong coordinates of drops, serverside? - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PLAYER_INVENTORY_DROP); + MessageOut outMsg(CMSG_PLAYER_INVENTORY_DROP); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt16(quantity); #endif @@ -488,8 +484,7 @@ void LocalPlayer::pickUp(FloorItem *item) int id = item->getId(); Net::GameServer::Player::pickUp(id >> 16, id & 0xFFFF); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_ITEM_PICKUP); + MessageOut outMsg(CMSG_ITEM_PICKUP); outMsg.writeInt32(item->getId()); #endif mPickUpTarget = NULL; @@ -689,9 +684,8 @@ void LocalPlayer::setDestination(Uint16 x, Uint16 y) effectManager->trigger(15,x,y); #else char temp[4] = ""; - MessageOut outMsg(mNetwork); set_coordinates(temp, x, y, mDirection); - outMsg.writeInt16(0x0085); + MessageOut outMsg(0x0085); outMsg.writeString(temp, 3); #endif } @@ -734,8 +728,7 @@ void LocalPlayer::stopWalking(bool sendToServer) #ifdef EATHENA_SUPPORT void LocalPlayer::raiseAttribute(Attribute attr) { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_STAT_UPDATE_REQUEST); + MessageOut outMsg(CMSG_STAT_UPDATE_REQUEST); switch (attr) { @@ -771,8 +764,7 @@ void LocalPlayer::raiseSkill(Uint16 skillId) if (mSkillPoint <= 0) return; - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_SKILL_LEVELUP_REQUEST); + MessageOut outMsg(CMSG_SKILL_LEVELUP_REQUEST); outMsg.writeInt16(skillId); } #endif @@ -795,8 +787,7 @@ void LocalPlayer::toggleSit() setAction(newAction); Net::GameServer::Player::changeAction(newAction); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0089); + MessageOut outMsg(0x0089); outMsg.writeInt32(0); outMsg.writeInt8((newAction == SIT) ? 2 : 3); #endif @@ -810,8 +801,7 @@ void LocalPlayer::emote(Uint8 emotion) // XXX Convert for new server #ifdef EATHENA_SUPPORT - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x00bf); + MessageOut outMsg(0x00bf); outMsg.writeInt8(emotion); #endif } @@ -822,8 +812,7 @@ void LocalPlayer::tradeReply(bool accept) if (!accept) mTrading = false; - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_RESPONSE); + MessageOut outMsg(CMSG_TRADE_RESPONSE); outMsg.writeInt8(accept ? 3 : 4); } #endif @@ -837,8 +826,7 @@ void LocalPlayer::trade(Being *being) const tradePartnerID = being->getId(); Net::GameServer::Player::requestTrade(tradePartnerID); #else - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_TRADE_REQUEST); + MessageOut outMsg(CMSG_TRADE_REQUEST); outMsg.writeInt32(being->getId()); #endif } @@ -957,8 +945,7 @@ void LocalPlayer::attack(Being *target, bool keep) sound.playSfx("sfx/fist-swish.ogg"); } - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0089); + MessageOut outMsg(0x0089); outMsg.writeInt32(target->getId()); outMsg.writeInt8(0); @@ -983,8 +970,7 @@ void LocalPlayer::revive() { // XXX Convert for new server #ifdef EATHENA_SUPPORT - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x00b2); + MessageOut outMsg(0x00b2); outMsg.writeInt8(0); #endif } diff --git a/src/main.cpp b/src/main.cpp index 321a4ee0..bd17ce9c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -752,8 +752,7 @@ static void accountLogin(Network *network, LoginData *loginData) loginData->username, loginData->password); #else - MessageOut outMsg(network); - outMsg.writeInt16(0x0064); + MessageOut outMsg(0x0064); outMsg.writeInt32(0); // client version outMsg.writeString(loginData->username, 24); outMsg.writeString(loginData->password, 24); @@ -807,8 +806,7 @@ static void charLogin(Network *network, LoginData *loginData) charServerHandler.setLoginData(loginData); // Send login infos - MessageOut outMsg(network); - outMsg.writeInt16(0x0065); + MessageOut outMsg(0x0065); outMsg.writeInt32(loginData->account_ID); outMsg.writeInt32(loginData->session_ID1); outMsg.writeInt32(loginData->session_ID2); @@ -827,8 +825,6 @@ static void mapLogin(Network *network, LoginData *loginData) player_node->getName().c_str()); config.setValue("lastCharacter", player_node->getName()); - MessageOut outMsg(network); - logger->log("Trying to connect to map server..."); logger->log("Map: %s", map_path.c_str()); @@ -836,7 +832,7 @@ static void mapLogin(Network *network, LoginData *loginData) network->registerHandler(&mapLoginHandler); // Send login infos - outMsg.writeInt16(0x0072); + MessageOut outMsg(0x0072); outMsg.writeInt32(loginData->account_ID); outMsg.writeInt32(player_node->mCharId); outMsg.writeInt32(loginData->session_ID1); diff --git a/src/net/ea/network.cpp b/src/net/ea/network.cpp index e17b8f3b..4aecb268 100644 --- a/src/net/ea/network.cpp +++ b/src/net/ea/network.cpp @@ -91,6 +91,8 @@ int networkThread(void *data) return 0; } +Network *Network::mInstance = 0; + Network::Network(): mSocket(0), mAddress(), mPort(0), @@ -102,6 +104,7 @@ Network::Network(): mWorkerThread(0) { mMutex = SDL_CreateMutex(); + mInstance = this; } Network::~Network() @@ -112,6 +115,7 @@ Network::~Network() disconnect(); SDL_DestroyMutex(mMutex); + mInstance = 0; delete[] mInBuffer; delete[] mOutBuffer; @@ -420,6 +424,11 @@ void Network::receive() SDLNet_FreeSocketSet(set); } +Network *Network::instance() +{ + return mInstance; +} + void Network::setError(const std::string &error) { logger->log("Network error: %s", error.c_str()); diff --git a/src/net/ea/network.h b/src/net/ea/network.h index 651b1182..40d563aa 100644 --- a/src/net/ea/network.h +++ b/src/net/ea/network.h @@ -85,7 +85,9 @@ class Network NET_ERROR }; - protected: + private: + static Network *instance(); + void setError(const std::string &error); Uint16 readWord(int pos); @@ -113,6 +115,8 @@ class Network typedef std::map MessageHandlers; typedef MessageHandlers::iterator MessageHandlerIterator; MessageHandlers mMessageHandlers; + + static Network *mInstance; }; #endif diff --git a/src/net/messageout.cpp b/src/net/messageout.cpp index 4cb4dc36..35e9a425 100644 --- a/src/net/messageout.cpp +++ b/src/net/messageout.cpp @@ -33,21 +33,16 @@ #include #include -#ifdef TMWSERV_SUPPORT MessageOut::MessageOut(short id): mData(0), -#else -MessageOut::MessageOut(Network *network): - mNetwork(network), -#endif mDataSize(0), mPos(0) { -#ifdef TMWSERV_SUPPORT - writeInt16(id); -#else +#ifdef EATHENA_SUPPORT + mNetwork = Network::instance(); mData = mNetwork->mOutBuffer + mNetwork->mOutSize; #endif + writeInt16(id); } #ifdef TMWSERV_SUPPORT diff --git a/src/net/messageout.h b/src/net/messageout.h index 1ddd040d..9dc31525 100644 --- a/src/net/messageout.h +++ b/src/net/messageout.h @@ -43,15 +43,13 @@ class MessageOut /** * Constructor. */ -#ifdef TMWSERV_SUPPORT MessageOut(short id); +#ifdef TMWSERV_SUPPORT /** * Destructor. */ ~MessageOut(); -#else - MessageOut(Network *network); #endif void writeInt8(Sint8 value); /**< Writes a byte. */ diff --git a/src/npc.cpp b/src/npc.cpp index b75d74b3..98c3e0eb 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -129,8 +129,7 @@ void NPC::talk() if (!mNetwork) return; - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_NPC_TALK); + MessageOut outMsg(CMSG_NPC_TALK); outMsg.writeInt32(mId); outMsg.writeInt8(0); #endif diff --git a/src/party.cpp b/src/party.cpp index 51a86360..4a7912ee 100644 --- a/src/party.cpp +++ b/src/party.cpp @@ -56,8 +56,7 @@ void Party::respond(const std::string &command, const std::string &args) localChatTab->chatLog(_("Not yet implemented!"), BY_SERVER); return; /* - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PARTY_SETTINGS); + MessageOut outMsg(CMSG_PARTY_SETTINGS); outMsg.writeInt16(0); // Experience outMsg.writeInt16(0); // Item */ @@ -72,16 +71,14 @@ void Party::create(const std::string &party) localChatTab->chatLog(_("Party name is missing."), BY_SERVER); return; } - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PARTY_CREATE); + MessageOut outMsg(CMSG_PARTY_CREATE); outMsg.writeString(party.substr(0, 23), 24); mCreating = true; } void Party::leave(const std::string &args) { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PARTY_LEAVE); + MessageOut outMsg(CMSG_PARTY_LEAVE); localChatTab->chatLog(_("Left party."), BY_SERVER); mInParty = false; } @@ -137,8 +134,7 @@ void Party::invitedAsk(const std::string &nick, int gender, void Party::InviteListener::action(const gcn::ActionEvent &event) { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_PARTY_INVITED); + MessageOut outMsg(CMSG_PARTY_INVITED); outMsg.writeInt32(player_node->getId()); bool accept = event.getId() == "yes"; outMsg.writeInt32(accept ? 1 : 0); -- cgit v1.2.3-70-g09d2 From 60f10c242fc4f99b0ab0f8d8c6d4b4acde0022cd Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 27 Mar 2009 21:13:02 +0100 Subject: Clean up of most of the Network pointers Now that messages can be sent without requiring a pointer to the Network instance, a lot of cleanup was possible. --- src/beingmanager.cpp | 7 ++----- src/beingmanager.h | 10 +--------- src/commandhandler.cpp | 5 ----- src/commandhandler.h | 12 ------------ src/engine.cpp | 6 ------ src/engine.h | 10 ---------- src/game.cpp | 34 ++++++---------------------------- src/gui/buy.cpp | 7 ------- src/gui/buy.h | 10 ---------- src/gui/buysell.cpp | 4 ++-- src/gui/buysell.h | 7 +------ src/gui/char_select.cpp | 17 +++++++---------- src/gui/char_select.h | 14 ++------------ src/gui/chat.cpp | 7 +------ src/gui/chat.h | 8 -------- src/gui/npc_text.cpp | 7 ------- src/gui/npc_text.h | 10 ---------- src/gui/npcintegerdialog.cpp | 7 ------- src/gui/npcintegerdialog.h | 10 ---------- src/gui/npclistdialog.cpp | 7 ------- src/gui/npclistdialog.h | 11 ----------- src/gui/npcstringdialog.cpp | 7 ------- src/gui/npcstringdialog.h | 11 ----------- src/gui/sell.cpp | 6 ------ src/gui/sell.h | 10 ---------- src/gui/storagewindow.cpp | 3 +-- src/gui/storagewindow.h | 4 +--- src/gui/trade.cpp | 5 ----- src/gui/trade.h | 11 ----------- src/localplayer.cpp | 1 - src/localplayer.h | 8 -------- src/main.cpp | 2 +- src/net/ea/network.h | 2 -- src/npc.cpp | 9 --------- src/npc.h | 14 +++----------- src/party.cpp | 5 ++--- src/party.h | 11 ++++------- 37 files changed, 34 insertions(+), 285 deletions(-) (limited to 'src/commandhandler.cpp') diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp index ae9ee787..9c671808 100644 --- a/src/beingmanager.cpp +++ b/src/beingmanager.cpp @@ -59,12 +59,9 @@ class FindBeingFunctor Being::Type type; } beingFinder; -#ifdef EATHENA_SUPPORT -BeingManager::BeingManager(Network *network): - mNetwork(network) +BeingManager::BeingManager() { } -#endif BeingManager::~BeingManager() { @@ -111,7 +108,7 @@ Being *BeingManager::createBeing(int id, Uint16 job) if (job <= 25 || (job >= 4001 && job <= 4049)) being = new Player(id, job, mMap); else if (job >= 46 && job <= 1000) - being = new NPC(id, job, mMap, mNetwork); + being = new NPC(id, job, mMap); else if (job > 1000 && job <= 2000) being = new Monster(id, job, mMap); else diff --git a/src/beingmanager.h b/src/beingmanager.h index 109564fa..891a8ccb 100644 --- a/src/beingmanager.h +++ b/src/beingmanager.h @@ -26,9 +26,6 @@ class LocalPlayer; class Map; -#ifdef EATHENA_SUPPORT -class Network; -#endif typedef std::list Beings; typedef Beings::iterator BeingIterator; @@ -36,9 +33,7 @@ typedef Beings::iterator BeingIterator; class BeingManager { public: -#ifdef EATHENA_SUPPORT - BeingManager(Network *network); -#endif + BeingManager(); ~BeingManager(); @@ -130,9 +125,6 @@ class BeingManager protected: Beings mBeings; Map *mMap; -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif }; extern BeingManager *beingManager; diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp index 73e41554..a2de2c63 100644 --- a/src/commandhandler.cpp +++ b/src/commandhandler.cpp @@ -43,12 +43,7 @@ #include "utils/stringutils.h" #include "utils/strprintf.h" -#ifdef TMWSERV_SUPPORT CommandHandler::CommandHandler() -#else -CommandHandler::CommandHandler(Network *network): - mNetwork(network) -#endif {} void CommandHandler::handleCommand(const std::string &command) diff --git a/src/commandhandler.h b/src/commandhandler.h index 2adf4e1b..43ce172f 100644 --- a/src/commandhandler.h +++ b/src/commandhandler.h @@ -24,10 +24,6 @@ #include -#ifdef EATHENA_SUPPORT -class Network; -#endif - /** * A class to parse and handle user commands */ @@ -37,11 +33,7 @@ class CommandHandler /** * Constructor */ -#ifdef TMWSERV_SUPPORT CommandHandler(); -#else - CommandHandler(Network *network); -#endif /** * Destructor @@ -143,10 +135,6 @@ class CommandHandler * Handle a present command. */ void handlePresent(const std::string &args); - -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif }; extern CommandHandler *commandHandler; diff --git a/src/engine.cpp b/src/engine.cpp index 13563e66..d13fbf3f 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -44,14 +44,8 @@ #include "utils/stringutils.h" -#ifdef TMWSERV_SUPPORT Engine::Engine(): mCurrentMap(NULL) -#else -Engine::Engine(Network *network): - mCurrentMap(NULL), - mNetwork(network) -#endif { } diff --git a/src/engine.h b/src/engine.h index 60b1f6c8..eafce3b9 100644 --- a/src/engine.h +++ b/src/engine.h @@ -25,9 +25,6 @@ #include class Map; -#ifdef EATHENA_SUPPORT -class Network; -#endif /** * Game engine. Actually hardly does anything anymore except keeping track of @@ -39,11 +36,7 @@ class Engine /** * Constructor. */ -#ifdef EATHENA_SUPPORT - Engine(Network *network); -#else Engine(); -#endif /** * Destructor. @@ -69,9 +62,6 @@ class Engine private: Map *mCurrentMap; -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif std::string mMapName; }; diff --git a/src/game.cpp b/src/game.cpp index 5b389c3f..856a5c11 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -239,14 +239,9 @@ int get_elapsed_time(int start_time) /** * Create all the various globally accessible gui windows */ -#ifdef TMWSERV_SUPPORT -void createGuiWindows() -#else -void createGuiWindows(Network *network) -#endif +static void createGuiWindows() { // Create dialogs -#ifdef TMWSERV_SUPPORT chatWindow = new ChatWindow; buyDialog = new BuyDialog; sellDialog = new SellDialog; @@ -255,6 +250,7 @@ void createGuiWindows(Network *network) npcIntegerDialog = new NpcIntegerDialog; npcListDialog = new NpcListDialog; npcStringDialog = new NpcStringDialog; +#ifdef TMWSERV_SUPPORT npcPostDialog = new NpcPostDialog; magicDialog = new MagicDialog; equipmentWindow = new EquipmentWindow(player_node->mEquipment.get()); @@ -262,17 +258,9 @@ void createGuiWindows(Network *network) guildWindow = new GuildWindow; partyWindow = new PartyWindow; #else - chatWindow = new ChatWindow(network); - buyDialog = new BuyDialog(network); - sellDialog = new SellDialog(network); - buySellDialog = new BuySellDialog(network); - tradeWindow = new TradeWindow(network); + buySellDialog = new BuySellDialog; equipmentWindow = new EquipmentWindow; - npcTextDialog = new NpcTextDialog(network); - npcIntegerDialog = new NpcIntegerDialog(network); - npcListDialog = new NpcListDialog(network); - npcStringDialog = new NpcStringDialog(network); - storageWindow = new StorageWindow(network); + storageWindow = new StorageWindow; #endif menuWindow = new MenuWindow; statusWindow = new StatusWindow(player_node); @@ -328,7 +316,7 @@ void createGuiWindows(Network *network) /** * Destroy all the globally accessible gui windows */ -void destroyGuiWindows() +static void destroyGuiWindows() { logger->setChatWindow(NULL); delete localChatTab; // Need to do this first, so it can remove itself @@ -392,20 +380,11 @@ Game::Game(Network *network): { done = false; -#ifdef TMWSERV_SUPPORT createGuiWindows(); engine = new Engine; beingManager = new BeingManager; commandHandler = new CommandHandler; -#else - createGuiWindows(network); - engine = new Engine(network); - - beingManager = new BeingManager(network); - commandHandler = new CommandHandler(network); -#endif - floorItemManager = new FloorItemManager; channelManager = new ChannelManager; effectManager = new EffectManager; @@ -425,8 +404,7 @@ Game::Game(Network *network): // Initialize beings beingManager->setPlayer(player_node); #ifdef EATHENA_SUPPORT - player_node->setNetwork(network); - playerParty = new Party(network); + playerParty = new Party; #endif Joystick::init(); diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index 003e730e..6d336e4c 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -46,15 +46,8 @@ #include "utils/gettext.h" #include "utils/strprintf.h" -#ifdef TMWSERV_SUPPORT BuyDialog::BuyDialog(): -#else -BuyDialog::BuyDialog(Network *network): -#endif Window(_("Buy")), -#ifndef TMWSERV_SUPPORT - mNetwork(network), -#endif mMoney(0), mAmountItems(0), mMaxItems(0) { setWindowName("Buy"); diff --git a/src/gui/buy.h b/src/gui/buy.h index 200394b9..1e022652 100644 --- a/src/gui/buy.h +++ b/src/gui/buy.h @@ -29,9 +29,6 @@ #include "../guichanfwd.h" -#ifndef TMWSERV_SUPPORT -class Network; -#endif class ShopItems; class ShopListBox; class ListBox; @@ -50,11 +47,7 @@ class BuyDialog : public Window, public gcn::ActionListener, * * @see Window::Window */ -#ifdef TMWSERV_SUPPORT BuyDialog(); -#else - BuyDialog(Network *network); -#endif /** * Destructor @@ -116,9 +109,6 @@ class BuyDialog : public Window, public gcn::ActionListener, */ void close(); private: -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif gcn::Button *mBuyButton; gcn::Button *mQuitButton; gcn::Button *mAddMaxButton; diff --git a/src/gui/buysell.cpp b/src/gui/buysell.cpp index f45a5adb..8fffd3d5 100644 --- a/src/gui/buysell.cpp +++ b/src/gui/buysell.cpp @@ -31,8 +31,8 @@ #include "../utils/gettext.h" -BuySellDialog::BuySellDialog(Network *network): - Window(_("Shop")), mNetwork(network) +BuySellDialog::BuySellDialog(): + Window(_("Shop")) { setWindowName("BuySell"); Button *buyButton = 0; diff --git a/src/gui/buysell.h b/src/gui/buysell.h index 4b137554..ff956e09 100644 --- a/src/gui/buysell.h +++ b/src/gui/buysell.h @@ -26,8 +26,6 @@ #include "window.h" -class Network; - /** * A dialog to choose between buying or selling at a shop. * @@ -42,7 +40,7 @@ class BuySellDialog : public Window, public gcn::ActionListener * * @see Window::Window */ - BuySellDialog(Network *network); + BuySellDialog(); /** * Check for current NPC @@ -55,9 +53,6 @@ class BuySellDialog : public Window, public gcn::ActionListener * Called when receiving actions from the widgets. */ void action(const gcn::ActionEvent &event); - - private: - Network *mNetwork; }; extern BuySellDialog *buySellDialog; diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index b6cd47d4..a0f7230e 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -100,12 +100,13 @@ void CharDeleteConfirm::action(const gcn::ActionEvent &event) CharSelectDialog::CharSelectDialog(LockedArray *charInfo, LoginData *loginData): Window(_("Account and Character Management")), - mCharInfo(charInfo), mCharSelected(false), mLoginData(loginData) + mCharInfo(charInfo), + mCharSelected(false), + mLoginData(loginData) #else -CharSelectDialog::CharSelectDialog(Network *network, - LockedArray *charInfo, +CharSelectDialog::CharSelectDialog(LockedArray *charInfo, Gender gender): - Window(_("Select Character")), mNetwork(network), + Window(_("Select Character")), mCharInfo(charInfo), mCharSelected(false), mGender(gender) @@ -261,8 +262,7 @@ void CharSelectDialog::action(const gcn::ActionEvent &event) { // Start new character dialog CharCreateDialog *charCreateDialog = - new CharCreateDialog(this, mCharInfo->getPos(), - mNetwork, mGender); + new CharCreateDialog(this, mCharInfo->getPos(), mGender); charServerHandler.setCharCreateDialog(charCreateDialog); } } @@ -398,13 +398,10 @@ bool CharSelectDialog::selectByName(const std::string &name) #ifdef TMWSERV_SUPPORT CharCreateDialog::CharCreateDialog(Window *parent, int slot): #else -CharCreateDialog::CharCreateDialog(Window *parent, int slot, Network *network, +CharCreateDialog::CharCreateDialog(Window *parent, int slot, Gender gender): #endif Window(_("Create Character"), true, parent), -#ifndef TMWSERV_SUPPORT - mNetwork(network), -#endif mSlot(slot) { mPlayer = new Player(0, 0, NULL); diff --git a/src/gui/char_select.h b/src/gui/char_select.h index b29953d3..cf770010 100644 --- a/src/gui/char_select.h +++ b/src/gui/char_select.h @@ -32,8 +32,6 @@ #ifdef TMWSERV_SUPPORT #include "../logindata.h" -#else -class Network; #endif class LocalPlayer; @@ -56,8 +54,7 @@ class CharSelectDialog : public Window, public gcn::ActionListener CharSelectDialog(LockedArray *charInfo, LoginData *loginData); #else - CharSelectDialog(Network *network, - LockedArray *charInfo, + CharSelectDialog(LockedArray *charInfo, Gender gender); #endif @@ -70,9 +67,6 @@ class CharSelectDialog : public Window, public gcn::ActionListener bool selectByName(const std::string &name); private: -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif LockedArray *mCharInfo; gcn::Button *mSelectButton; @@ -129,8 +123,7 @@ class CharCreateDialog : public Window, public gcn::ActionListener #ifdef TMWSERV_SUPPORT CharCreateDialog(Window *parent, int slot); #else - CharCreateDialog(Window *parent, int slot, Network *network, - Gender gender); + CharCreateDialog(Window *parent, int slot, Gender gender); #endif /** @@ -162,9 +155,6 @@ class CharCreateDialog : public Window, public gcn::ActionListener */ void attemptCharCreate(); -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif gcn::TextField *mNameField; gcn::Label *mNameLabel; gcn::Button *mNextHairColorButton; diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 5b07980b..987de11e 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -40,13 +40,8 @@ #include -#ifdef TMWSERV_SUPPORT ChatWindow::ChatWindow(): - Window("Chat"), -#else -ChatWindow::ChatWindow(Network * network): - Window(""), mNetwork(network), -#endif + Window(_("Chat")), mTmpVisible(false) { setWindowName("Chat"); diff --git a/src/gui/chat.h b/src/gui/chat.h index ac4e491e..54270055 100644 --- a/src/gui/chat.h +++ b/src/gui/chat.h @@ -40,9 +40,6 @@ class Recorder; class ScrollArea; class TabbedArea; class ItemLinkHandler; -#ifdef EATHENA_SUPPORT -class Network; -#endif class Tab; class WhisperTab; @@ -69,11 +66,7 @@ class ChatWindow : public Window, /** * Constructor. */ -#ifdef TMWSERV_SUPPORT ChatWindow(); -#else - ChatWindow(Network *network); -#endif /** * Destructor: used to write back values to the config file @@ -190,7 +183,6 @@ class ChatWindow : public Window, void adjustTabSize(); #ifdef EATHENA_SUPPORT - Network *mNetwork; char mPartyPrefix; /**< Messages beginning with the prefix are sent to the party */ #endif diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index bf7b60ed..31f48486 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -37,15 +37,8 @@ #include "../utils/gettext.h" -#ifdef TMWSERV_SUPPORT NpcTextDialog::NpcTextDialog() -#else -NpcTextDialog::NpcTextDialog(Network *network) -#endif : Window(_("NPC")) -#ifdef EATHENA_SUPPORT - , mNetwork(network) -#endif , mState(NPC_TEXT_STATE_WAITING) { setWindowName("NPCText"); diff --git a/src/gui/npc_text.h b/src/gui/npc_text.h index 16c1d5fd..231ac684 100644 --- a/src/gui/npc_text.h +++ b/src/gui/npc_text.h @@ -30,9 +30,6 @@ #include "../npc.h" -#ifdef EATHENA_SUPPORT -class Network; -#endif class TextBox; /** @@ -48,11 +45,7 @@ class NpcTextDialog : public Window, public gcn::ActionListener * * @see Window::Window */ -#ifdef TMWSERV_SUPPORT NpcTextDialog(); -#else - NpcTextDialog(Network *network); -#endif /** * Called when receiving actions from the widgets. @@ -101,9 +94,6 @@ class NpcTextDialog : public Window, public gcn::ActionListener void widgetResized(const gcn::Event &event); private: -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif gcn::ScrollArea *mScrollArea; TextBox *mTextBox; gcn::Button *mButton; diff --git a/src/gui/npcintegerdialog.cpp b/src/gui/npcintegerdialog.cpp index 4dae8d83..4d2ae1ce 100644 --- a/src/gui/npcintegerdialog.cpp +++ b/src/gui/npcintegerdialog.cpp @@ -36,15 +36,8 @@ #include "../utils/gettext.h" #include "../utils/strprintf.h" -#ifdef TMWSERV_SUPPORT NpcIntegerDialog::NpcIntegerDialog() -#else -NpcIntegerDialog::NpcIntegerDialog(Network *network) -#endif : Window(_("NPC Number Request")) -#ifdef EATHENA_SUPPORT - , mNetwork(network) -#endif { setWindowName("NPCInteger"); mValueField = new IntTextField; diff --git a/src/gui/npcintegerdialog.h b/src/gui/npcintegerdialog.h index df74c904..bb3a8e20 100644 --- a/src/gui/npcintegerdialog.h +++ b/src/gui/npcintegerdialog.h @@ -26,9 +26,6 @@ #include "window.h" -#ifdef EATHENA_SUPPORT -class Network; -#endif class IntTextField; /** @@ -44,11 +41,7 @@ class NpcIntegerDialog : public Window, public gcn::ActionListener * * @see Window::Window */ -#ifdef TMWSERV_SUPPORT NpcIntegerDialog(); -#else - NpcIntegerDialog(Network *network); -#endif /** * Called when receiving actions from the widgets. @@ -93,9 +86,6 @@ class NpcIntegerDialog : public Window, public gcn::ActionListener void setVisible(bool visible); private: -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif gcn::Button *mDecButton; gcn::Button *mIncButton; IntTextField *mValueField; diff --git a/src/gui/npclistdialog.cpp b/src/gui/npclistdialog.cpp index 6df0979f..efac8954 100644 --- a/src/gui/npclistdialog.cpp +++ b/src/gui/npclistdialog.cpp @@ -41,15 +41,8 @@ #include "../utils/gettext.h" #include "../utils/strprintf.h" -#ifdef TMWSERV_SUPPORT NpcListDialog::NpcListDialog() -#else -NpcListDialog::NpcListDialog(Network *network) -#endif : Window("NPC") -#ifdef EATHENA_SUPPORT - , mNetwork(network) -#endif { setWindowName("NPCList"); setResizable(true); diff --git a/src/gui/npclistdialog.h b/src/gui/npclistdialog.h index 6c1e02e3..fa297304 100644 --- a/src/gui/npclistdialog.h +++ b/src/gui/npclistdialog.h @@ -29,10 +29,6 @@ #include -#ifdef EATHENA_SUPPORT -class Network; -#endif - /** * The npc list dialog. * @@ -47,11 +43,7 @@ class NpcListDialog : public Window, public gcn::ActionListener, * * @see Window::Window */ -#ifdef TMWSERV_SUPPORT NpcListDialog(); -#else - NpcListDialog(Network *network); -#endif /** * Called when receiving actions from the widgets. @@ -94,9 +86,6 @@ class NpcListDialog : public Window, public gcn::ActionListener, void requestFocus(); private: -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif gcn::ListBox *mItemList; std::vector mItems; diff --git a/src/gui/npcstringdialog.cpp b/src/gui/npcstringdialog.cpp index 7297d7e8..e5137d9c 100644 --- a/src/gui/npcstringdialog.cpp +++ b/src/gui/npcstringdialog.cpp @@ -36,15 +36,8 @@ #include "../utils/gettext.h" #include "../utils/strprintf.h" -#ifdef TMWSERV_SUPPORT NpcStringDialog::NpcStringDialog() -#else -NpcStringDialog::NpcStringDialog(Network *network) -#endif : Window(_("NPC Text Request")) -#ifdef EATHENA_SUPPORT - , mNetwork(network) -#endif { setWindowName("NPCString"); mValueField = new TextField(""); diff --git a/src/gui/npcstringdialog.h b/src/gui/npcstringdialog.h index 94cd59b2..37d46cc0 100644 --- a/src/gui/npcstringdialog.h +++ b/src/gui/npcstringdialog.h @@ -26,10 +26,6 @@ #include -#ifdef EATHENA_SUPPORT -class Network; -#endif - /** * The npc integer input dialog. * @@ -43,11 +39,7 @@ class NpcStringDialog : public Window, public gcn::ActionListener * * @see Window::Window */ -#ifdef TMWSERV_SUPPORT NpcStringDialog(); -#else - NpcStringDialog(Network *network); -#endif /** * Called when receiving actions from the widgets. @@ -79,9 +71,6 @@ class NpcStringDialog : public Window, public gcn::ActionListener void setVisible(bool visible); private: -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif gcn::TextField *mValueField; std::string mDefault; }; diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp index 648bff08..1e1155a7 100644 --- a/src/gui/sell.cpp +++ b/src/gui/sell.cpp @@ -46,14 +46,8 @@ #include "utils/gettext.h" #include "utils/strprintf.h" -#ifdef TMWSERV_SUPPORT SellDialog::SellDialog(): Window(_("Sell")), -#else -SellDialog::SellDialog(Network *network): - Window(_("Sell")), - mNetwork(network), -#endif mMaxItems(0), mAmountItems(0) { setWindowName("Sell"); diff --git a/src/gui/sell.h b/src/gui/sell.h index b6388a1f..b3e59b4f 100644 --- a/src/gui/sell.h +++ b/src/gui/sell.h @@ -30,9 +30,6 @@ #include "window.h" class Item; -#ifdef EATHENA_SUPPORT -class Network; -#endif class ShopItems; class ShopListBox; @@ -49,11 +46,7 @@ class SellDialog : public Window, gcn::ActionListener, gcn::SelectionListener * * @see Window::Window */ -#ifdef TMWSERV_SUPPORT SellDialog(); -#else - SellDialog(Network *network); -#endif /** * Destructor @@ -111,9 +104,6 @@ class SellDialog : public Window, gcn::ActionListener, gcn::SelectionListener */ void updateButtonsAndLabels(); -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif gcn::Button *mSellButton; gcn::Button *mQuitButton; gcn::Button *mAddMaxButton; diff --git a/src/gui/storagewindow.cpp b/src/gui/storagewindow.cpp index 847886cb..690758ed 100644 --- a/src/gui/storagewindow.cpp +++ b/src/gui/storagewindow.cpp @@ -51,9 +51,8 @@ #include "../utils/gettext.h" #include "../utils/strprintf.h" -StorageWindow::StorageWindow(Network *network, int invSize): +StorageWindow::StorageWindow(int invSize): Window(_("Storage")), - mNetwork(network), mMaxSlots(invSize), mItemDesc(false) { diff --git a/src/gui/storagewindow.h b/src/gui/storagewindow.h index cc0df2af..de0937b5 100644 --- a/src/gui/storagewindow.h +++ b/src/gui/storagewindow.h @@ -31,7 +31,6 @@ class Item; class ItemContainer; -class Network; class ProgressBar; class TextBox; @@ -47,7 +46,7 @@ class StorageWindow : public Window, gcn::ActionListener, /** * Constructor. */ - StorageWindow(Network *network, int invSize = (STORAGE_SIZE - 1)); + StorageWindow(int invSize = (STORAGE_SIZE - 1)); /** * Destructor. @@ -88,7 +87,6 @@ class StorageWindow : public Window, gcn::ActionListener, void close(); private: - Network *mNetwork; ItemContainer *mItems; int mSlots; diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp index 6cba1c41..6926eb82 100644 --- a/src/gui/trade.cpp +++ b/src/gui/trade.cpp @@ -51,14 +51,9 @@ #include "../utils/stringutils.h" #include "../utils/strprintf.h" -#ifdef TMWSERV_SUPPORT TradeWindow::TradeWindow(): -#else -TradeWindow::TradeWindow(Network *network): -#endif Window(_("Trade: You")), #ifdef EATHENA_SUPPORT - mNetwork(network), mMyInventory(new Inventory(INVENTORY_SIZE, 2)), mPartnerInventory(new Inventory(INVENTORY_SIZE, 2)) #else diff --git a/src/gui/trade.h b/src/gui/trade.h index 4c215ba6..e2767c5b 100644 --- a/src/gui/trade.h +++ b/src/gui/trade.h @@ -34,9 +34,6 @@ class Inventory; class Item; class ItemContainer; -#ifdef EATHENA_SUPPORT -class Network; -#endif class ScrollArea; /** @@ -50,11 +47,7 @@ class TradeWindow : public Window, gcn::ActionListener, gcn::SelectionListener /** * Constructor. */ -#ifdef TMWSERV_SUPPORT TradeWindow(); -#else - TradeWindow(Network *network); -#endif /** * Destructor. @@ -139,10 +132,6 @@ class TradeWindow : public Window, gcn::ActionListener, gcn::SelectionListener void setStatus(Status); #endif -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif - typedef const std::auto_ptr InventoryPtr; InventoryPtr mMyInventory; InventoryPtr mPartnerInventory; diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 8b2d6907..68f9e4bc 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -96,7 +96,6 @@ LocalPlayer::LocalPlayer(int id, int job, Map *map): mStatPoint(0), mSkillPoint(0), mStatsPointsToAttribute(0), mEquipment(new Equipment), - mNetwork(0), mXp(0), mInStorage(false), mTargetTime(-1), diff --git a/src/localplayer.h b/src/localplayer.h index 77e9ac02..bff38796 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -33,9 +33,6 @@ class ImageSet; class Inventory; class Item; class Map; -#ifdef EATHENA_SUPPORT -class Network; -#endif #ifdef TMWSERV_SUPPORT @@ -155,10 +152,6 @@ class LocalPlayer : public Player virtual void setName(const std::string &name); -#ifdef EATHENA_SUPPORT - void setNetwork(Network *network) { mNetwork = network; } - Network *getNetwork() {return mNetwork; } -#endif virtual void logic(); /** @@ -500,7 +493,6 @@ class LocalPlayer : public Player void walk(unsigned char dir); #ifdef EATHENA_SUPPORT - Network *mNetwork; int mXp; /**< Experience points. */ bool mInStorage; /**< Whether storage is currently accessible */ int mTargetTime; /** How long the being has been targeted **/ diff --git a/src/main.cpp b/src/main.cpp index bd17ce9c..ad3063f6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1653,7 +1653,7 @@ int main(int argc, char *argv[]) break; case STATE_CHAR_SELECT: logger->log("State: CHAR_SELECT"); - currentDialog = new CharSelectDialog(network, &charInfo, + currentDialog = new CharSelectDialog(&charInfo, (loginData.sex == 0) ? GENDER_FEMALE : GENDER_MALE); positionDialog(currentDialog, screenWidth, screenHeight); diff --git a/src/net/ea/network.h b/src/net/ea/network.h index 40d563aa..c246ab8e 100644 --- a/src/net/ea/network.h +++ b/src/net/ea/network.h @@ -36,8 +36,6 @@ class MessageHandler; class MessageIn; -class Network; - class Network { public: diff --git a/src/npc.cpp b/src/npc.cpp index 98c3e0eb..359546e2 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -40,14 +40,8 @@ bool NPC::isTalking = false; int current_npc = 0; -#ifdef TMWSERV_SUPPORT NPC::NPC(int id, int job, Map *map): Player(id, job, map) -#else -NPC::NPC(int id, int job, Map *map, Network *network): - Player(id, job, map), - mNetwork(network) -#endif { NPCInfo info = NPCDB::get(job); @@ -126,9 +120,6 @@ void NPC::talk() #ifdef TMWSERV_SUPPORT Net::GameServer::Player::talkToNPC(mId, true); #else - if (!mNetwork) - return; - MessageOut outMsg(CMSG_NPC_TALK); outMsg.writeInt32(mId); outMsg.writeInt8(0); diff --git a/src/npc.h b/src/npc.h index c2cab6f0..57e6d5a8 100644 --- a/src/npc.h +++ b/src/npc.h @@ -24,20 +24,13 @@ #include "player.h" -#ifdef EATHENA_SUPPORT -class Network; -#endif class Graphics; class Text; class NPC : public Player { public: -#ifdef TMWSERV_SUPPORT - NPC(int id, int sprite, Map *map); -#else - NPC(int id, int job, Map *map, Network *network); -#endif + NPC(int id, int job, Map *map); ~NPC(); @@ -56,6 +49,7 @@ class NPC : public Player { return 0x83; } // blocked like a monster by walls, monsters and characters ( bin 1000 0011) static bool isTalking; + protected: /** * Gets the way a monster blocks pathfinding for other objects @@ -63,10 +57,8 @@ class NPC : public Player virtual Map::BlockType getBlockType() const { return Map::BLOCKTYPE_CHARACTER; } //blocks like a player character -#ifdef EATHENA_SUPPORT - Network *mNetwork; -#endif void updateCoords(); + private: Text *mName; }; diff --git a/src/party.cpp b/src/party.cpp index 4a7912ee..2295cb81 100644 --- a/src/party.cpp +++ b/src/party.cpp @@ -33,9 +33,8 @@ #include "utils/gettext.h" #include "utils/strprintf.h" -Party::Party(Network *network) : - mNetwork(network), - mInviteListener(network, &mInParty) +Party::Party() : + mInviteListener(&mInParty) { } diff --git a/src/party.h b/src/party.h index d73b4a0f..25af80b3 100644 --- a/src/party.h +++ b/src/party.h @@ -29,12 +29,11 @@ class PartyHandler; class Being; class ChatWindow; -class Network; class Party { public: - Party(Network *network); + Party(); void respond(const std::string &command, const std::string &args); void create(const std::string &party); @@ -43,7 +42,7 @@ class Party void createResponse(bool ok); void inviteResponse(const std::string &nick, int status); void invitedAsk(const std::string &nick, int gender, - const std::string &partyName); + const std::string &partyName); void leftResponse(const std::string &nick); void receiveChat(Being *being, const std::string &msg); @@ -51,7 +50,6 @@ class Party private: std::string mPartyName; - Network *mNetwork; bool mInParty; bool mCreating; /**< Used to give an appropriate response to failure */ @@ -60,12 +58,11 @@ class Party class InviteListener : public gcn::ActionListener { public: - InviteListener(Network *network, bool *inParty) : - mNetwork(network), + InviteListener(bool *inParty) : mInParty(inParty) {} void action(const gcn::ActionEvent &event); - Network *mNetwork; + private: bool *mInParty; }; -- cgit v1.2.3-70-g09d2 From f67237cb69599753192c301f0f2eb38b88f7b57a Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Fri, 27 Mar 2009 16:24:01 -0600 Subject: Clean up some ifdefs and start cleanup of parties --- src/Makefile.am | 6 +- src/commandhandler.cpp | 2 +- src/engine.cpp | 16 +-- src/engine.h | 2 +- src/game.cpp | 5 +- src/gui/widgets/whispertab.cpp | 1 - src/map.cpp | 4 - src/net/ea/gui/partytab.cpp | 53 ++++++++++ src/net/ea/gui/partytab.h | 49 +++++++++ src/net/ea/party.cpp | 215 ++++++++++++++++++++++++++++++++++++++ src/net/ea/party.h | 74 +++++++++++++ src/net/ea/playerhandler.cpp | 5 +- src/net/tmwserv/playerhandler.cpp | 3 - src/party.cpp | 215 -------------------------------------- src/party.h | 74 ------------- 15 files changed, 404 insertions(+), 320 deletions(-) create mode 100644 src/net/ea/gui/partytab.cpp create mode 100644 src/net/ea/gui/partytab.h create mode 100644 src/net/ea/party.cpp create mode 100644 src/net/ea/party.h delete mode 100644 src/party.cpp delete mode 100644 src/party.h (limited to 'src/commandhandler.cpp') diff --git a/src/Makefile.am b/src/Makefile.am index 4c5893ac..3768b7cd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -461,6 +461,8 @@ tmw_SOURCES += \ net/ea/network.h \ net/ea/npchandler.cpp \ net/ea/npchandler.h \ + net/ea/party.cpp \ + net/ea/party.h \ net/ea/partyhandler.cpp \ net/ea/partyhandler.h \ net/ea/playerhandler.cpp \ @@ -470,9 +472,7 @@ tmw_SOURCES += \ net/ea/skillhandler.cpp \ net/ea/skillhandler.h \ net/ea/tradehandler.cpp \ - net/ea/tradehandler.h \ - party.cpp \ - party.h + net/ea/tradehandler.h endif # set the include path found by configure diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp index a2de2c63..5431cf88 100644 --- a/src/commandhandler.cpp +++ b/src/commandhandler.cpp @@ -34,8 +34,8 @@ #include "net/tmwserv/chatserver/chatserver.h" #include "net/tmwserv/gameserver/player.h" #else -#include "party.h" #include "net/messageout.h" +#include "net/ea/party.h" #include "net/ea/protocol.h" #endif diff --git a/src/engine.cpp b/src/engine.cpp index d13fbf3f..04d06e38 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -33,11 +33,6 @@ #include "gui/minimap.h" #include "gui/viewport.h" -#ifdef EATHENA_SUPPORT -#include "net/messageout.h" -#include "net/ea/protocol.h" -#endif - #include "resources/mapreader.h" #include "resources/monsterdb.h" #include "resources/resourcemanager.h" @@ -54,7 +49,7 @@ Engine::~Engine() delete mCurrentMap; } -void Engine::changeMap(const std::string &mapPath) +bool Engine::changeMap(const std::string &mapPath) { // Clean up floor items, beings and particles floorItemManager->clear(); @@ -71,11 +66,7 @@ void Engine::changeMap(const std::string &mapPath) mMapName = mapPath; // Store full map path in global var -#ifdef TMWSERV_SUPPORT map_path = "maps/" + mapPath + ".tmx"; -#else - map_path = "maps/" + mapPath.substr(0, mapPath.rfind(".")) + ".tmx"; -#endif ResourceManager *resman = ResourceManager::getInstance(); if (!resman->exists(map_path)) map_path += ".gz"; @@ -143,10 +134,7 @@ void Engine::changeMap(const std::string &mapPath) mCurrentMap = newMap; -#ifdef EATHENA_SUPPORT - // Send "map loaded" - MessageOut outMsg(CMSG_MAP_LOADED); -#endif + return true; } void Engine::logic() diff --git a/src/engine.h b/src/engine.h index eafce3b9..963270e8 100644 --- a/src/engine.h +++ b/src/engine.h @@ -53,7 +53,7 @@ class Engine /** * Sets the currently active map. */ - void changeMap(const std::string &mapName); + bool changeMap(const std::string &mapName); /** * Performs engine logic. This method is called 100 times per second. diff --git a/src/game.cpp b/src/game.cpp index 856a5c11..6b9a829f 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -43,9 +43,6 @@ #include "log.h" #include "npc.h" #include "particle.h" -#ifdef EATHENA_SUPPORT -#include "party.h" -#endif #include "player_relations.h" #include "gui/widgets/chattab.h" @@ -110,6 +107,7 @@ #include "net/ea/inventoryhandler.h" #include "net/ea/itemhandler.h" #include "net/ea/npchandler.h" +#include "net/ea/party.h" #include "net/ea/playerhandler.h" #include "net/ea/tradehandler.h" #include "net/ea/protocol.h" @@ -450,6 +448,7 @@ Game::Game(Network *network): msg.writeInt32(tick_time); engine->changeMap(map_path); + MessageOut outMsg(CMSG_MAP_LOADED); #endif setupWindow->setInGame(true); diff --git a/src/gui/widgets/whispertab.cpp b/src/gui/widgets/whispertab.cpp index 1621e965..9e6d9336 100644 --- a/src/gui/widgets/whispertab.cpp +++ b/src/gui/widgets/whispertab.cpp @@ -28,7 +28,6 @@ #ifdef TMWSERV_SUPPORT #include "net/tmwserv/chatserver/chatserver.h" #else -#include "party.h" #include "net/messageout.h" #include "net/ea/protocol.h" #endif diff --git a/src/map.cpp b/src/map.cpp index 59e6201f..8f736424 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -141,11 +141,7 @@ void MapLayer::draw(Graphics *graphics, int startX, int startY, // tiles have been drawn if (mIsFringeLayer) { -#ifdef TMWSERV_SUPPORT while (si != sprites.end() && (*si)->getPixelY() <= y * 32) -#else - while (si != sprites.end() && (*si)->getPixelY() <= y * 32) -#endif { (*si)->draw(graphics, -scrollX, -scrollY); si++; diff --git a/src/net/ea/gui/partytab.cpp b/src/net/ea/gui/partytab.cpp new file mode 100644 index 00000000..a55d2492 --- /dev/null +++ b/src/net/ea/gui/partytab.cpp @@ -0,0 +1,53 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "partytab.h" + +#include "net/messageout.h" + +#include "net/ea/party.h" +#include "net/ea/protocol.h" + +#include "resources/iteminfo.h" +#include "resources/itemdb.h" + +#include "utils/dtor.h" +#include "utils/gettext.h" +#include "utils/strprintf.h" +#include "utils/stringutils.h" + +PartyTab::PartyTab() : ChatTab(_("Party")) +{ +} + +PartyTab::~PartyTab() +{ +} + +void PartyTab::handleInput(std::string &msg) { + // TODO +} + +void PartyTab::handleCommand(std::string &msg) { + // TODO +} diff --git a/src/net/ea/gui/partytab.h b/src/net/ea/gui/partytab.h new file mode 100644 index 00000000..b2aaca68 --- /dev/null +++ b/src/net/ea/gui/partytab.h @@ -0,0 +1,49 @@ +/* + * The Mana World + * Copyright (C) 2009 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CHANNELTAB_H +#define CHANNELTAB_H + +#include "gui/widgets/chattab.h" + +/** + * A tab for a chat channel. + */ +class PartyTab : public ChatTab +{ + public: + /** + * Constructor. + */ + PartyTab(); + + /** + * Destructor. + */ + ~PartyTab(); + + protected: + void handleInput(const std::string &msg); + + void handleCommand(std::string msg); +}; + +#endif // CHANNELTAB_H diff --git a/src/net/ea/party.cpp b/src/net/ea/party.cpp new file mode 100644 index 00000000..2295cb81 --- /dev/null +++ b/src/net/ea/party.cpp @@ -0,0 +1,215 @@ +/* + * The Mana World + * Copyright (C) 2008 Lloyd Bryant + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "being.h" +#include "localplayer.h" +#include "party.h" + +#include "gui/widgets/chattab.h" +#include "gui/chat.h" +#include "gui/confirm_dialog.h" + +#include "net/messageout.h" +#include "net/ea/protocol.h" + +#include "utils/gettext.h" +#include "utils/strprintf.h" + +Party::Party() : + mInviteListener(&mInParty) +{ +} + +void Party::respond(const std::string &command, const std::string &args) +{ + if (command == "new" || command == "create") + { + create(args); + return; + } + if (command == "leave") + { + leave(args); + return; + } + if (command == "settings") + { + localChatTab->chatLog(_("Not yet implemented!"), BY_SERVER); + return; + /* + MessageOut outMsg(CMSG_PARTY_SETTINGS); + outMsg.writeInt16(0); // Experience + outMsg.writeInt16(0); // Item + */ + } + localChatTab->chatLog(_("Party command not known."), BY_SERVER); +} + +void Party::create(const std::string &party) +{ + if (party.empty()) + { + localChatTab->chatLog(_("Party name is missing."), BY_SERVER); + return; + } + MessageOut outMsg(CMSG_PARTY_CREATE); + outMsg.writeString(party.substr(0, 23), 24); + mCreating = true; +} + +void Party::leave(const std::string &args) +{ + MessageOut outMsg(CMSG_PARTY_LEAVE); + localChatTab->chatLog(_("Left party."), BY_SERVER); + mInParty = false; +} + +void Party::createResponse(bool ok) +{ + if (ok) + { + localChatTab->chatLog(_("Party successfully created."), BY_SERVER); + mInParty = true; + } + else + { + localChatTab->chatLog(_("Could not create party."), BY_SERVER); + } +} + +void Party::inviteResponse(const std::string &nick, int status) +{ + switch (status) + { + case 0: + localChatTab->chatLog(strprintf(_("%s is already a member of a party."), + nick.c_str()), BY_SERVER); + break; + case 1: + localChatTab->chatLog(strprintf(_("%s refused your invitation."), + nick.c_str()), BY_SERVER); + break; + case 2: + localChatTab->chatLog(strprintf(_("%s is now a member of your party."), + nick.c_str()), BY_SERVER); + break; + } +} + +void Party::invitedAsk(const std::string &nick, int gender, + const std::string &partyName) +{ + mPartyName = partyName; /* Quick and nasty - needs redoing */ + if (nick.empty()) + { + localChatTab->chatLog(_("You can\'t have a blank party name!"), BY_SERVER); + return; + } + mCreating = false; + ConfirmDialog *dlg = new ConfirmDialog(_("Invite to party"), + strprintf(_("%s invites you to join" + " the %s party, do you accept?"), + nick.c_str(), partyName.c_str())); + dlg->addActionListener(&mInviteListener); +} + +void Party::InviteListener::action(const gcn::ActionEvent &event) +{ + MessageOut outMsg(CMSG_PARTY_INVITED); + outMsg.writeInt32(player_node->getId()); + bool accept = event.getId() == "yes"; + outMsg.writeInt32(accept ? 1 : 0); + *mInParty = *mInParty || accept; +} + +void Party::leftResponse(const std::string &nick) +{ + localChatTab->chatLog(strprintf(_("%s has left your party."), nick.c_str()), + BY_SERVER); +} + +void Party::receiveChat(Being *being, const std::string &msg) +{ + if (!being) + { + return; + } + if (being->getType() != Being::PLAYER) + { + localChatTab->chatLog(_("Party chat received, but being is not a player"), + BY_SERVER); + return; + } + being->setSpeech(msg, SPEECH_TIME); + localChatTab->chatLog(being->getName() + " : " + msg, BY_PARTY); +} + +void Party::help(const std::string &args) +{ + // Strip "party " from the front + std::string msg = args.substr(6, args.length()); + + if (msg.empty()) + { + localChatTab->chatLog(_("Command: /party "), BY_SERVER); + localChatTab->chatLog(_("where can be one of:"), BY_SERVER); + localChatTab->chatLog(_(" /new"), BY_SERVER); + localChatTab->chatLog(_(" /create"), BY_SERVER); + localChatTab->chatLog(_(" /prefix"), BY_SERVER); + localChatTab->chatLog(_(" /leave"), BY_SERVER); + localChatTab->chatLog(_("This command implements the partying function."), + BY_SERVER); + localChatTab->chatLog(_("Type /help party for further help."), + BY_SERVER); + return; + } + if (msg == "new" || msg == "create") + { + localChatTab->chatLog(_("Command: /party new "), BY_SERVER); + localChatTab->chatLog(_("Command: /party create "), BY_SERVER); + localChatTab->chatLog(_("These commands create a new party chatLog(_("Command: /party prefix "), BY_SERVER); + localChatTab->chatLog(_("This command sets the party prefix character."), + BY_SERVER); + localChatTab->chatLog(_("Any message preceded by is sent to " + "the party instead of everyone."), BY_SERVER); + localChatTab->chatLog(_("Command: /party prefix"), BY_SERVER); + localChatTab->chatLog(_("This command reports the current party prefix " + "character."), BY_SERVER); + return; + } + //if (msg == "settings") + //if (msg == "info") + if (msg == "leave") + { + localChatTab->chatLog(_("Command: /party leave"), BY_SERVER); + localChatTab->chatLog(_("This command causes the player to leave the party."), + BY_SERVER); + return; + } + localChatTab->chatLog(_("Unknown /party command."), BY_SERVER); + localChatTab->chatLog(_("Type /help party for a list of options."), BY_SERVER); +} diff --git a/src/net/ea/party.h b/src/net/ea/party.h new file mode 100644 index 00000000..25af80b3 --- /dev/null +++ b/src/net/ea/party.h @@ -0,0 +1,74 @@ +/* + * The Mana World + * Copyright (C) 2008 Lloyd Bryant + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PARTY_H +#define PARTY_H + +#include + +#include + +class PartyHandler; +class Being; +class ChatWindow; + +class Party +{ + public: + Party(); + void respond(const std::string &command, const std::string &args); + + void create(const std::string &party); + void leave(const std::string &args); + + void createResponse(bool ok); + void inviteResponse(const std::string &nick, int status); + void invitedAsk(const std::string &nick, int gender, + const std::string &partyName); + void leftResponse(const std::string &nick); + void receiveChat(Being *being, const std::string &msg); + + void help(const std::string &args); + + private: + std::string mPartyName; + bool mInParty; + bool mCreating; /**< Used to give an appropriate response to + failure */ + PartyHandler *handler; + + class InviteListener : public gcn::ActionListener + { + public: + InviteListener(bool *inParty) : + mInParty(inParty) + {} + void action(const gcn::ActionEvent &event); + + private: + bool *mInParty; + }; + InviteListener mInviteListener; +}; + +extern Party *playerParty; + +#endif diff --git a/src/net/ea/playerhandler.cpp b/src/net/ea/playerhandler.cpp index bf775f51..05f74630 100644 --- a/src/net/ea/playerhandler.cpp +++ b/src/net/ea/playerhandler.cpp @@ -24,6 +24,7 @@ #include "net/ea/protocol.h" #include "net/messagein.h" +#include "net/messageout.h" #include "engine.h" #include "localplayer.h" @@ -193,7 +194,9 @@ void PlayerHandler::handleMessage(MessageIn &msg) nearby = (engine->getCurrentMapName() == mapPath); // Switch the actual map, deleting the previous one if necessary - engine->changeMap(mapPath); + mapPath = mapPath.substr(0, mapPath.rfind(".")); + if (engine->changeMap(mapPath)) + MessageOut outMsg(CMSG_MAP_LOADED); float scrollOffsetX = 0.0f; float scrollOffsetY = 0.0f; diff --git a/src/net/tmwserv/playerhandler.cpp b/src/net/tmwserv/playerhandler.cpp index f02ed4c1..106894a1 100644 --- a/src/net/tmwserv/playerhandler.cpp +++ b/src/net/tmwserv/playerhandler.cpp @@ -85,9 +85,6 @@ namespace { npcTextDialog->setVisible(false); buyDialog->setVisible(false); sellDialog->setVisible(false); -#ifdef EATHENA_SUPPORT - buySellDialog->setVisible(false); -#endif current_npc = 0; } } deathListener; diff --git a/src/party.cpp b/src/party.cpp deleted file mode 100644 index 2295cb81..00000000 --- a/src/party.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2008 Lloyd Bryant - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "being.h" -#include "localplayer.h" -#include "party.h" - -#include "gui/widgets/chattab.h" -#include "gui/chat.h" -#include "gui/confirm_dialog.h" - -#include "net/messageout.h" -#include "net/ea/protocol.h" - -#include "utils/gettext.h" -#include "utils/strprintf.h" - -Party::Party() : - mInviteListener(&mInParty) -{ -} - -void Party::respond(const std::string &command, const std::string &args) -{ - if (command == "new" || command == "create") - { - create(args); - return; - } - if (command == "leave") - { - leave(args); - return; - } - if (command == "settings") - { - localChatTab->chatLog(_("Not yet implemented!"), BY_SERVER); - return; - /* - MessageOut outMsg(CMSG_PARTY_SETTINGS); - outMsg.writeInt16(0); // Experience - outMsg.writeInt16(0); // Item - */ - } - localChatTab->chatLog(_("Party command not known."), BY_SERVER); -} - -void Party::create(const std::string &party) -{ - if (party.empty()) - { - localChatTab->chatLog(_("Party name is missing."), BY_SERVER); - return; - } - MessageOut outMsg(CMSG_PARTY_CREATE); - outMsg.writeString(party.substr(0, 23), 24); - mCreating = true; -} - -void Party::leave(const std::string &args) -{ - MessageOut outMsg(CMSG_PARTY_LEAVE); - localChatTab->chatLog(_("Left party."), BY_SERVER); - mInParty = false; -} - -void Party::createResponse(bool ok) -{ - if (ok) - { - localChatTab->chatLog(_("Party successfully created."), BY_SERVER); - mInParty = true; - } - else - { - localChatTab->chatLog(_("Could not create party."), BY_SERVER); - } -} - -void Party::inviteResponse(const std::string &nick, int status) -{ - switch (status) - { - case 0: - localChatTab->chatLog(strprintf(_("%s is already a member of a party."), - nick.c_str()), BY_SERVER); - break; - case 1: - localChatTab->chatLog(strprintf(_("%s refused your invitation."), - nick.c_str()), BY_SERVER); - break; - case 2: - localChatTab->chatLog(strprintf(_("%s is now a member of your party."), - nick.c_str()), BY_SERVER); - break; - } -} - -void Party::invitedAsk(const std::string &nick, int gender, - const std::string &partyName) -{ - mPartyName = partyName; /* Quick and nasty - needs redoing */ - if (nick.empty()) - { - localChatTab->chatLog(_("You can\'t have a blank party name!"), BY_SERVER); - return; - } - mCreating = false; - ConfirmDialog *dlg = new ConfirmDialog(_("Invite to party"), - strprintf(_("%s invites you to join" - " the %s party, do you accept?"), - nick.c_str(), partyName.c_str())); - dlg->addActionListener(&mInviteListener); -} - -void Party::InviteListener::action(const gcn::ActionEvent &event) -{ - MessageOut outMsg(CMSG_PARTY_INVITED); - outMsg.writeInt32(player_node->getId()); - bool accept = event.getId() == "yes"; - outMsg.writeInt32(accept ? 1 : 0); - *mInParty = *mInParty || accept; -} - -void Party::leftResponse(const std::string &nick) -{ - localChatTab->chatLog(strprintf(_("%s has left your party."), nick.c_str()), - BY_SERVER); -} - -void Party::receiveChat(Being *being, const std::string &msg) -{ - if (!being) - { - return; - } - if (being->getType() != Being::PLAYER) - { - localChatTab->chatLog(_("Party chat received, but being is not a player"), - BY_SERVER); - return; - } - being->setSpeech(msg, SPEECH_TIME); - localChatTab->chatLog(being->getName() + " : " + msg, BY_PARTY); -} - -void Party::help(const std::string &args) -{ - // Strip "party " from the front - std::string msg = args.substr(6, args.length()); - - if (msg.empty()) - { - localChatTab->chatLog(_("Command: /party "), BY_SERVER); - localChatTab->chatLog(_("where can be one of:"), BY_SERVER); - localChatTab->chatLog(_(" /new"), BY_SERVER); - localChatTab->chatLog(_(" /create"), BY_SERVER); - localChatTab->chatLog(_(" /prefix"), BY_SERVER); - localChatTab->chatLog(_(" /leave"), BY_SERVER); - localChatTab->chatLog(_("This command implements the partying function."), - BY_SERVER); - localChatTab->chatLog(_("Type /help party for further help."), - BY_SERVER); - return; - } - if (msg == "new" || msg == "create") - { - localChatTab->chatLog(_("Command: /party new "), BY_SERVER); - localChatTab->chatLog(_("Command: /party create "), BY_SERVER); - localChatTab->chatLog(_("These commands create a new party chatLog(_("Command: /party prefix "), BY_SERVER); - localChatTab->chatLog(_("This command sets the party prefix character."), - BY_SERVER); - localChatTab->chatLog(_("Any message preceded by is sent to " - "the party instead of everyone."), BY_SERVER); - localChatTab->chatLog(_("Command: /party prefix"), BY_SERVER); - localChatTab->chatLog(_("This command reports the current party prefix " - "character."), BY_SERVER); - return; - } - //if (msg == "settings") - //if (msg == "info") - if (msg == "leave") - { - localChatTab->chatLog(_("Command: /party leave"), BY_SERVER); - localChatTab->chatLog(_("This command causes the player to leave the party."), - BY_SERVER); - return; - } - localChatTab->chatLog(_("Unknown /party command."), BY_SERVER); - localChatTab->chatLog(_("Type /help party for a list of options."), BY_SERVER); -} diff --git a/src/party.h b/src/party.h deleted file mode 100644 index 25af80b3..00000000 --- a/src/party.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2008 Lloyd Bryant - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PARTY_H -#define PARTY_H - -#include - -#include - -class PartyHandler; -class Being; -class ChatWindow; - -class Party -{ - public: - Party(); - void respond(const std::string &command, const std::string &args); - - void create(const std::string &party); - void leave(const std::string &args); - - void createResponse(bool ok); - void inviteResponse(const std::string &nick, int status); - void invitedAsk(const std::string &nick, int gender, - const std::string &partyName); - void leftResponse(const std::string &nick); - void receiveChat(Being *being, const std::string &msg); - - void help(const std::string &args); - - private: - std::string mPartyName; - bool mInParty; - bool mCreating; /**< Used to give an appropriate response to - failure */ - PartyHandler *handler; - - class InviteListener : public gcn::ActionListener - { - public: - InviteListener(bool *inParty) : - mInParty(inParty) - {} - void action(const gcn::ActionEvent &event); - - private: - bool *mInParty; - }; - InviteListener mInviteListener; -}; - -extern Party *playerParty; - -#endif -- cgit v1.2.3-70-g09d2 From 088c0e4680d8013f01bdc70ac4f340f98afa2394 Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Sat, 28 Mar 2009 18:13:57 -0600 Subject: Clean up eAthena party handling a bit more --- src/Makefile.am | 18 +++++++------ src/commandhandler.cpp | 4 +-- src/game.cpp | 17 +++---------- src/gui/partywindow.cpp | 27 ++++++++++++++++++-- src/gui/partywindow.h | 3 ++- src/localplayer.cpp | 14 +++++++---- src/localplayer.h | 8 +++--- src/net/ea/gui/partytab.cpp | 4 +-- src/net/ea/gui/partytab.h | 2 ++ src/net/ea/party.cpp | 61 +++++++++++++++------------------------------ src/net/ea/party.h | 48 ++++++++++++----------------------- src/net/ea/partyhandler.cpp | 31 +++++++++++++++++------ src/net/ea/partyhandler.h | 9 +++---- src/net/ea/protocol.h | 2 +- src/player.cpp | 4 +-- src/player.h | 5 ++-- 16 files changed, 127 insertions(+), 130 deletions(-) (limited to 'src/commandhandler.cpp') diff --git a/src/Makefile.am b/src/Makefile.am index ae9fa827..81e40d06 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -32,7 +32,7 @@ tmw_SOURCES = gui/widgets/avatar.cpp \ gui/button.cpp \ gui/button.h \ gui/buy.cpp \ - gui/buy.h \ + gui/buy.h \ gui/char_select.cpp \ gui/char_select.h \ gui/chat.cpp \ @@ -102,6 +102,8 @@ tmw_SOURCES = gui/widgets/avatar.cpp \ gui/ok_dialog.h \ gui/palette.cpp \ gui/palette.h \ + gui/partywindow.cpp \ + gui/partywindow.h \ gui/passwordfield.cpp \ gui/passwordfield.h \ gui/playerbox.cpp \ @@ -355,8 +357,6 @@ tmw_SOURCES += \ gui/magic.h \ gui/npcpostdialog.cpp \ gui/npcpostdialog.h \ - gui/partywindow.cpp \ - gui/partywindow.h \ gui/quitdialog.cpp \ gui/quitdialog.h \ gui/serverdialog.cpp \ @@ -429,8 +429,8 @@ endif if SERVER_EATHENA tmw_CXXFLAGS += -DEATHENA_SUPPORT tmw_SOURCES += \ - gui/buysell.cpp \ - gui/buysell.h \ + gui/buysell.cpp \ + gui/buysell.h \ gui/char_server.cpp \ gui/char_server.h \ gui/skill.cpp \ @@ -439,6 +439,8 @@ tmw_SOURCES += \ gui/status.h \ gui/storagewindow.cpp \ gui/storagewindow.h \ + net/ea/gui/partytab.cpp \ + net/ea/gui/partytab.h \ net/ea/beinghandler.cpp \ net/ea/beinghandler.h \ net/ea/buysellhandler.cpp \ @@ -461,8 +463,8 @@ tmw_SOURCES += \ net/ea/network.h \ net/ea/npchandler.cpp \ net/ea/npchandler.h \ - net/ea/party.cpp \ - net/ea/party.h \ + net/ea/party.cpp \ + net/ea/party.h \ net/ea/partyhandler.cpp \ net/ea/partyhandler.h \ net/ea/playerhandler.cpp \ @@ -472,7 +474,7 @@ tmw_SOURCES += \ net/ea/skillhandler.cpp \ net/ea/skillhandler.h \ net/ea/tradehandler.cpp \ - net/ea/tradehandler.h + net/ea/tradehandler.h endif # set the include path found by configure diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp index 5431cf88..19791aa8 100644 --- a/src/commandhandler.cpp +++ b/src/commandhandler.cpp @@ -252,7 +252,7 @@ void CommandHandler::handleHelp(const std::string &args) #else else if (args.substr(0, 5) == "party") { - playerParty->help(args); + eAthena::Party::help(args); #endif } else if (args == "present") @@ -526,7 +526,7 @@ void CommandHandler::handleParty(const std::string &args) } } else - playerParty->respond(command, rest); + eAthena::Party::respond(command, rest); #endif } diff --git a/src/game.cpp b/src/game.cpp index 2dc62b05..20bf1af1 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -74,12 +74,12 @@ #include "gui/status.h" #include "gui/trade.h" #include "gui/viewport.h" +#include "gui/partywindow.h" #ifdef TMWSERV_SUPPORT #include "gui/buddywindow.h" #include "gui/guildwindow.h" #include "gui/magic.h" #include "gui/npcpostdialog.h" -#include "gui/partywindow.h" #include "gui/quitdialog.h" #else #include "gui/storagewindow.h" @@ -107,7 +107,6 @@ #include "net/ea/inventoryhandler.h" #include "net/ea/itemhandler.h" #include "net/ea/npchandler.h" -#include "net/ea/party.h" #include "net/ea/playerhandler.h" #include "net/ea/tradehandler.h" #include "net/ea/protocol.h" @@ -155,12 +154,12 @@ NpcListDialog *npcListDialog; NpcTextDialog *npcTextDialog; NpcStringDialog *npcStringDialog; SkillDialog *skillDialog; +PartyWindow *partyWindow; #ifdef TMWSERV_SUPPORT BuddyWindow *buddyWindow; GuildWindow *guildWindow; MagicDialog *magicDialog; NpcPostDialog *npcPostDialog; -PartyWindow *partyWindow; #else StorageWindow *storageWindow; #endif @@ -180,9 +179,6 @@ Particle *particleEngine = NULL; EffectManager *effectManager = NULL; ChatTab *localChatTab = NULL; -#ifdef EATHENA_SUPPORT -Party *playerParty = NULL; -#endif const int MAX_TIME = 10000; @@ -248,13 +244,13 @@ static void createGuiWindows() npcIntegerDialog = new NpcIntegerDialog; npcListDialog = new NpcListDialog; npcStringDialog = new NpcStringDialog; + partyWindow = new PartyWindow; #ifdef TMWSERV_SUPPORT npcPostDialog = new NpcPostDialog; magicDialog = new MagicDialog; equipmentWindow = new EquipmentWindow(player_node->mEquipment.get()); buddyWindow = new BuddyWindow; guildWindow = new GuildWindow; - partyWindow = new PartyWindow; #else buySellDialog = new BuySellDialog; equipmentWindow = new EquipmentWindow; @@ -333,12 +329,12 @@ static void destroyGuiWindows() delete npcListDialog; delete npcTextDialog; delete npcStringDialog; + delete partyWindow; #ifdef TMWSERV_SUPPORT delete npcPostDialog; delete magicDialog; delete buddyWindow; delete guildWindow; - delete partyWindow; #endif delete skillDialog; delete minimap; @@ -401,9 +397,6 @@ Game::Game(Network *network): // Initialize beings beingManager->setPlayer(player_node); -#ifdef EATHENA_SUPPORT - playerParty = new Party; -#endif Joystick::init(); // TODO: The user should be able to choose which one to use @@ -459,8 +452,6 @@ Game::~Game() { #ifdef TMWSERV_SUPPORT Net::clearHandlers(); -#else - delete playerParty; #endif destroyGuiWindows(); diff --git a/src/gui/partywindow.cpp b/src/gui/partywindow.cpp index 1f87b26f..f5cebdfd 100644 --- a/src/gui/partywindow.cpp +++ b/src/gui/partywindow.cpp @@ -24,9 +24,14 @@ #include "gui/widgets/avatar.h" #include "gui/widgets/chattab.h" +#ifdef TMWSERV_SUPPORT #include "net/tmwserv/chatserver/party.h" +#else +#include "net/ea/party.h" +#endif #include "utils/gettext.h" +#include "utils/strprintf.h" PartyWindow::PartyWindow() : Window(_("Party")) { @@ -107,7 +112,8 @@ void PartyWindow::removePartyMember(const std::string &memberName) } } -void PartyWindow::showPartyInvite(const std::string &inviter) +void PartyWindow::showPartyInvite(const std::string &inviter, + const std::string &partyName) { // check there isnt already an invite showing if (mPartyInviter != "") @@ -117,8 +123,15 @@ void PartyWindow::showPartyInvite(const std::string &inviter) return; } + std::string msg; // log invite - std::string msg = inviter + " has invited you to join their party"; + if (partyName.empty()) + msg = strprintf("%s has invited you to join their party", + inviter.c_str()); + else + msg = strprintf("%s has invited you to join the %s party", + inviter.c_str(), partyName.c_str()); + localChatTab->chatLog(msg, BY_SERVER); // show invite @@ -136,11 +149,21 @@ void PartyWindow::action(const gcn::ActionEvent &event) if (eventId == "yes") { localChatTab->chatLog("Accepted invite from " + mPartyInviter); +#ifdef TMWSERV_SUPPORT Net::ChatServer::Party::acceptInvite(mPartyInviter); +#else + eAthena::Party::respondToInvite(true); +#endif mPartyInviter = ""; } else if (eventId == "no") { + localChatTab->chatLog("Rejected invite from " + mPartyInviter); +#ifdef TMWSERV_SUPPORT + // TODO +#else + eAthena::Party::respondToInvite(false); +#endif mPartyInviter = ""; } } diff --git a/src/gui/partywindow.h b/src/gui/partywindow.h index b587cc42..64cfb582 100644 --- a/src/gui/partywindow.h +++ b/src/gui/partywindow.h @@ -77,7 +77,8 @@ class PartyWindow : public Window, gcn::ActionListener /** * Show party invite */ - void showPartyInvite(const std::string &inviter); + void showPartyInvite(const std::string &inviter, + const std::string &partyName = ""); /** * Handle events diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 553e473b..eb54b4b1 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -363,11 +363,6 @@ void LocalPlayer::inviteToGuild(Being *being) } } -void LocalPlayer::inviteToParty(const std::string &name) -{ - Net::ChatServer::Party::invitePlayer(name); -} - void LocalPlayer::clearInventory() { mEquipment->clear(); @@ -381,6 +376,15 @@ void LocalPlayer::setInvItem(int index, int id, int amount) #endif +void LocalPlayer::inviteToParty(const std::string &name) +{ +#ifdef TMWSERV_SUPPORT + Net::ChatServer::Party::invitePlayer(name); +#else + +#endif +} + void LocalPlayer::moveInvItem(Item *item, int newIndex) { // special case, the old and new cannot copy over each other. diff --git a/src/localplayer.h b/src/localplayer.h index 7e48530e..4fd68d8f 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -183,15 +183,15 @@ class LocalPlayer : public Player */ void inviteToGuild(Being *being); + void clearInventory(); + void setInvItem(int index, int id, int amount); +#endif + /** * Invite a player to join their party */ void inviteToParty(const std::string &name); - void clearInventory(); - void setInvItem(int index, int id, int amount); -#endif - /** * Move the Inventory item from the old slot to the new slot. */ diff --git a/src/net/ea/gui/partytab.cpp b/src/net/ea/gui/partytab.cpp index a55d2492..4e486bf0 100644 --- a/src/net/ea/gui/partytab.cpp +++ b/src/net/ea/gui/partytab.cpp @@ -44,10 +44,10 @@ PartyTab::~PartyTab() { } -void PartyTab::handleInput(std::string &msg) { +void PartyTab::handleInput(const std::string &msg) { // TODO } -void PartyTab::handleCommand(std::string &msg) { +void PartyTab::handleCommand(std::string msg) { // TODO } diff --git a/src/net/ea/gui/partytab.h b/src/net/ea/gui/partytab.h index b2aaca68..fce4b515 100644 --- a/src/net/ea/gui/partytab.h +++ b/src/net/ea/gui/partytab.h @@ -46,4 +46,6 @@ class PartyTab : public ChatTab void handleCommand(std::string msg); }; +extern PartyTab *partyTab; + #endif // CHANNELTAB_H diff --git a/src/net/ea/party.cpp b/src/net/ea/party.cpp index 2295cb81..0fbba2f1 100644 --- a/src/net/ea/party.cpp +++ b/src/net/ea/party.cpp @@ -26,19 +26,16 @@ #include "gui/widgets/chattab.h" #include "gui/chat.h" #include "gui/confirm_dialog.h" +#include "gui/partywindow.h" #include "net/messageout.h" #include "net/ea/protocol.h" +#include "net/ea/gui/partytab.h" #include "utils/gettext.h" #include "utils/strprintf.h" -Party::Party() : - mInviteListener(&mInParty) -{ -} - -void Party::respond(const std::string &command, const std::string &args) +void eAthena::Party::respond(const std::string &command, const std::string &args) { if (command == "new" || command == "create") { @@ -52,7 +49,7 @@ void Party::respond(const std::string &command, const std::string &args) } if (command == "settings") { - localChatTab->chatLog(_("Not yet implemented!"), BY_SERVER); + partyTab->chatLog(_("Not yet implemented!"), BY_SERVER); return; /* MessageOut outMsg(CMSG_PARTY_SETTINGS); @@ -60,10 +57,10 @@ void Party::respond(const std::string &command, const std::string &args) outMsg.writeInt16(0); // Item */ } - localChatTab->chatLog(_("Party command not known."), BY_SERVER); + partyTab->chatLog(_("Party command not known."), BY_SERVER); } -void Party::create(const std::string &party) +void eAthena::Party::create(const std::string &party) { if (party.empty()) { @@ -72,22 +69,21 @@ void Party::create(const std::string &party) } MessageOut outMsg(CMSG_PARTY_CREATE); outMsg.writeString(party.substr(0, 23), 24); - mCreating = true; } -void Party::leave(const std::string &args) +void eAthena::Party::leave(const std::string &args) { MessageOut outMsg(CMSG_PARTY_LEAVE); localChatTab->chatLog(_("Left party."), BY_SERVER); - mInParty = false; + player_node->setInParty(false); } -void Party::createResponse(bool ok) +void eAthena::Party::createResponse(bool ok) { if (ok) { localChatTab->chatLog(_("Party successfully created."), BY_SERVER); - mInParty = true; + player_node->setInParty(true); } else { @@ -95,58 +91,41 @@ void Party::createResponse(bool ok) } } -void Party::inviteResponse(const std::string &nick, int status) +void eAthena::Party::inviteResponse(const std::string &nick, int status) { switch (status) { case 0: - localChatTab->chatLog(strprintf(_("%s is already a member of a party."), + partyTab->chatLog(strprintf(_("%s is already a member of a party."), nick.c_str()), BY_SERVER); break; case 1: - localChatTab->chatLog(strprintf(_("%s refused your invitation."), + partyTab->chatLog(strprintf(_("%s refused your invitation."), nick.c_str()), BY_SERVER); break; case 2: - localChatTab->chatLog(strprintf(_("%s is now a member of your party."), + partyTab->chatLog(strprintf(_("%s is now a member of your party."), nick.c_str()), BY_SERVER); break; } } -void Party::invitedAsk(const std::string &nick, int gender, - const std::string &partyName) -{ - mPartyName = partyName; /* Quick and nasty - needs redoing */ - if (nick.empty()) - { - localChatTab->chatLog(_("You can\'t have a blank party name!"), BY_SERVER); - return; - } - mCreating = false; - ConfirmDialog *dlg = new ConfirmDialog(_("Invite to party"), - strprintf(_("%s invites you to join" - " the %s party, do you accept?"), - nick.c_str(), partyName.c_str())); - dlg->addActionListener(&mInviteListener); -} - -void Party::InviteListener::action(const gcn::ActionEvent &event) +void eAthena::Party::respondToInvite(bool accept) { MessageOut outMsg(CMSG_PARTY_INVITED); outMsg.writeInt32(player_node->getId()); - bool accept = event.getId() == "yes"; outMsg.writeInt32(accept ? 1 : 0); - *mInParty = *mInParty || accept; + player_node->setInParty(player_node->getInParty() || accept); } -void Party::leftResponse(const std::string &nick) +void eAthena::Party::leftResponse(const std::string &nick) { localChatTab->chatLog(strprintf(_("%s has left your party."), nick.c_str()), BY_SERVER); + partyWindow->removePartyMember(nick); } -void Party::receiveChat(Being *being, const std::string &msg) +void eAthena::Party::receiveChat(Being *being, const std::string &msg) { if (!being) { @@ -162,7 +141,7 @@ void Party::receiveChat(Being *being, const std::string &msg) localChatTab->chatLog(being->getName() + " : " + msg, BY_PARTY); } -void Party::help(const std::string &args) +void eAthena::Party::help(const std::string &args) { // Strip "party " from the front std::string msg = args.substr(6, args.length()); diff --git a/src/net/ea/party.h b/src/net/ea/party.h index 25af80b3..6907de47 100644 --- a/src/net/ea/party.h +++ b/src/net/ea/party.h @@ -22,18 +22,14 @@ #ifndef PARTY_H #define PARTY_H -#include - -#include +#include "being.h" -class PartyHandler; -class Being; -class ChatWindow; +#include -class Party +namespace eAthena { - public: - Party(); + namespace Party + { void respond(const std::string &command, const std::string &args); void create(const std::string &party); @@ -43,32 +39,20 @@ class Party void inviteResponse(const std::string &nick, int status); void invitedAsk(const std::string &nick, int gender, const std::string &partyName); + + /** + * Send invite response to the server + */ + void respondToInvite(bool accept); + + /** + * The player has left your party + */ void leftResponse(const std::string &nick); void receiveChat(Being *being, const std::string &msg); void help(const std::string &args); - - private: - std::string mPartyName; - bool mInParty; - bool mCreating; /**< Used to give an appropriate response to - failure */ - PartyHandler *handler; - - class InviteListener : public gcn::ActionListener - { - public: - InviteListener(bool *inParty) : - mInParty(inParty) - {} - void action(const gcn::ActionEvent &event); - - private: - bool *mInParty; - }; - InviteListener mInviteListener; -}; - -extern Party *playerParty; + } +} #endif diff --git a/src/net/ea/partyhandler.cpp b/src/net/ea/partyhandler.cpp index d903976e..7ecf0863 100644 --- a/src/net/ea/partyhandler.cpp +++ b/src/net/ea/partyhandler.cpp @@ -21,21 +21,29 @@ #include "net/ea/partyhandler.h" +#include "net/ea/gui/partytab.h" + #include "net/ea/protocol.h" #include "net/messagein.h" #include "gui/chat.h" +#include "gui/partywindow.h" #include "beingmanager.h" #include "party.h" -PartyHandler::PartyHandler(Party *party) : mParty(party) +PartyTab *partyTab; + +static void newPartyTab() { partyTab = new PartyTab(); } +static void deletePartyTab() { delete partyTab ; } + +PartyHandler::PartyHandler() { static const Uint16 _messages[] = { SMSG_PARTY_CREATE, SMSG_PARTY_INFO, - SMSG_PARTY_INVITE, + SMSG_PARTY_INVITE_RESPONSE, SMSG_PARTY_INVITED, SMSG_PARTY_SETTINGS, SMSG_PARTY_MEMBER_INFO, @@ -46,6 +54,13 @@ PartyHandler::PartyHandler(Party *party) : mParty(party) 0 }; handledMessages = _messages; + + newPartyTab(); +} + +PartyHandler::~PartyHandler() +{ + deletePartyTab(); } void PartyHandler::handleMessage(MessageIn &msg) @@ -53,15 +68,15 @@ void PartyHandler::handleMessage(MessageIn &msg) switch (msg.getId()) { case SMSG_PARTY_CREATE: - mParty->createResponse(msg.readInt8()); + eAthena::Party::createResponse(msg.readInt8()); break; case SMSG_PARTY_INFO: break; - case SMSG_PARTY_INVITE: + case SMSG_PARTY_INVITE_RESPONSE: { std::string nick = msg.readString(24); int status = msg.readInt8(); - mParty->inviteResponse(nick, status); + eAthena::Party::inviteResponse(nick, status); break; } case SMSG_PARTY_INVITED: @@ -85,7 +100,7 @@ void PartyHandler::handleMessage(MessageIn &msg) gender = being->getGender(); partyName = msg.readString(24); } - mParty->invitedAsk(nick, gender, partyName); + partyWindow->showPartyInvite(nick, partyName); break; } case SMSG_PARTY_SETTINGS: @@ -97,7 +112,7 @@ void PartyHandler::handleMessage(MessageIn &msg) /*int id = */msg.readInt32(); std::string nick = msg.readString(24); /*int fail = */msg.readInt8(); - mParty->leftResponse(nick); + eAthena::Party::leftResponse(nick); break; } case SMSG_PARTY_UPDATE_HP: @@ -114,7 +129,7 @@ void PartyHandler::handleMessage(MessageIn &msg) int id = msg.readInt32(); Being *being = beingManager->findBeing(id); std::string chatMsg = msg.readString(msgLength); - mParty->receiveChat(being, chatMsg); + eAthena::Party::receiveChat(being, chatMsg); } break; } diff --git a/src/net/ea/partyhandler.h b/src/net/ea/partyhandler.h index 851c4ae3..c6ee261b 100644 --- a/src/net/ea/partyhandler.h +++ b/src/net/ea/partyhandler.h @@ -24,17 +24,14 @@ #include "net/messagehandler.h" -class Party; - class PartyHandler : public MessageHandler { public: - PartyHandler(Party *party); + PartyHandler(); - void handleMessage(MessageIn &msg); + ~PartyHandler(); - private: - Party *mParty; + void handleMessage(MessageIn &msg); }; #endif // NET_EA_PARTYHANDLER_H diff --git a/src/net/ea/protocol.h b/src/net/ea/protocol.h index a70e47b4..ff13cce9 100644 --- a/src/net/ea/protocol.h +++ b/src/net/ea/protocol.h @@ -101,7 +101,7 @@ static const int STORAGE_OFFSET = 1; #define SMSG_PARTY_CREATE 0x00fa #define SMSG_PARTY_INFO 0x00fb -#define SMSG_PARTY_INVITE 0x00fd +#define SMSG_PARTY_INVITE_RESPONSE 0x00fd #define SMSG_PARTY_INVITED 0x00fe #define SMSG_PARTY_SETTINGS 0x0102 #define SMSG_PARTY_MEMBER_INFO 0x0104 diff --git a/src/player.cpp b/src/player.cpp index a75d4e35..839959b0 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -283,9 +283,9 @@ short Player::getNumberOfGuilds() return mGuilds.size(); } +#endif + void Player::setInParty(bool value) { mInParty = value; } - -#endif diff --git a/src/player.h b/src/player.h index 1904c6d9..d1155f4b 100644 --- a/src/player.h +++ b/src/player.h @@ -107,6 +107,8 @@ class Player : public Being */ short getNumberOfGuilds(); +#endif + /** * Set the player in party */ @@ -116,7 +118,6 @@ class Player : public Being * Returns whether player is in the party */ bool getInParty() const { return mInParty; } -#endif /** * Gets the way the character is blocked by other objects. @@ -140,10 +141,8 @@ class Player : public Being FlashText *mName; -#ifdef TMWSERV_SUPPORT private: bool mInParty; -#endif }; #endif -- cgit v1.2.3-70-g09d2 From 8748f26234bba1e71bbe059147fb02256f8cec2a Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Sat, 28 Mar 2009 23:06:32 -0600 Subject: Fix output location for CommandHandler --- src/commandhandler.cpp | 284 ++++++++++++++++++++++---------------------- src/commandhandler.h | 42 ++++--- src/gui/chat.cpp | 4 +- src/gui/widgets/chattab.cpp | 2 +- 4 files changed, 168 insertions(+), 164 deletions(-) (limited to 'src/commandhandler.cpp') diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp index 19791aa8..f2da21e0 100644 --- a/src/commandhandler.cpp +++ b/src/commandhandler.cpp @@ -46,7 +46,7 @@ CommandHandler::CommandHandler() {} -void CommandHandler::handleCommand(const std::string &command) +void CommandHandler::handleCommand(const std::string &command, ChatTab *tab) { std::string::size_type pos = command.find(' '); std::string type(command, 0, pos); @@ -54,85 +54,85 @@ void CommandHandler::handleCommand(const std::string &command) if (type == "announce") { - handleAnnounce(args); + handleAnnounce(args, tab); } else if (type == "help") { - handleHelp(args); + handleHelp(args, tab); } else if (type == "where") { - handleWhere(); + handleWhere(args, tab); } else if (type == "who") { - handleWho(); + handleWho(args, tab); } else if (type == "msg" || type == "whisper" || type == "w") { - handleMsg(args); + handleMsg(args, tab); } #ifdef TMWSERV_SUPPORT else if (type == "join") { - handleJoin(args); + handleJoin(args, tab); } else if (type == "list") { - handleListChannels(); + handleListChannels(args, tab); } else if (type == "users") { - handleListUsers(); + handleListUsers(args, tab); } else if (type == "quit") { - handleQuit(); + handleQuit(args, tab); } else if (type == "topic") { - handleTopic(args); + handleTopic(args, tab); } else if (type == "clear") { - handleClear(); + handleClear(args, tab); } else if (type == "op") { - handleOp(args); + handleOp(args, tab); } else if (type == "kick") { - handleKick(args); + handleKick(args, tab); } #endif else if (type == "party") { - handleParty(args); + handleParty(args, tab); } else if (type == "me") { - handleMe(args); + handleMe(args, tab); } else if (type == "record") { - handleRecord(args); + handleRecord(args, tab); } else if (type == "toggle") { - handleToggle(args); + handleToggle(args, tab); } else if (type == "present") { - handlePresent(args); + handlePresent(args, tab); } else { - localChatTab->chatLog("Unknown command"); + tab->chatLog("Unknown command"); } } -void CommandHandler::handleAnnounce(const std::string &args) +void CommandHandler::handleAnnounce(const std::string &args, ChatTab *tab) { #ifdef TMWSERV_SUPPORT Net::ChatServer::announce(args); @@ -143,111 +143,111 @@ void CommandHandler::handleAnnounce(const std::string &args) #endif } -void CommandHandler::handleHelp(const std::string &args) +void CommandHandler::handleHelp(const std::string &args, ChatTab *tab) { if (args == "") { - localChatTab->chatLog(_("-- Help --")); - localChatTab->chatLog(_("/help > Display this help.")); + tab->chatLog(_("-- Help --")); + tab->chatLog(_("/help > Display this help.")); - localChatTab->chatLog(_("/where > Display map name")); - localChatTab->chatLog(_("/who > Display number of online users")); - localChatTab->chatLog(_("/me > Tell something about yourself")); + tab->chatLog(_("/where > Display map name")); + tab->chatLog(_("/who > Display number of online users")); + tab->chatLog(_("/me > Tell something about yourself")); - localChatTab->chatLog(_("/msg > Send a private message to a user")); - localChatTab->chatLog(_("/whisper > Alias of msg")); - localChatTab->chatLog(_("/w > Alias of msg")); - localChatTab->chatLog(_("/close > Close the whisper tab (only works in whisper tabs)")); + tab->chatLog(_("/msg > Send a private message to a user")); + tab->chatLog(_("/whisper > Alias of msg")); + tab->chatLog(_("/w > Alias of msg")); + tab->chatLog(_("/close > Close the whisper tab (only works in whisper tabs)")); #ifdef TMWSERV_SUPPORT - localChatTab->chatLog(_("/list > Display all public channels")); - localChatTab->chatLog(_("/users > Lists the users in the current channel")); - localChatTab->chatLog(_("/join > Join or create a channel")); - localChatTab->chatLog(_("/topic > Set the topic of the current channel")); - localChatTab->chatLog(_("/quit > Leave a channel")); - localChatTab->chatLog(_("/clear > Clears this window")); - localChatTab->chatLog(_("/op > Make a user a channel operator")); - localChatTab->chatLog(_("/kick > Kick a user from the channel")); - - localChatTab->chatLog(_("/party > Invite a user to party")); + tab->chatLog(_("/list > Display all public channels")); + tab->chatLog(_("/users > Lists the users in the current channel")); + tab->chatLog(_("/join > Join or create a channel")); + tab->chatLog(_("/topic > Set the topic of the current channel")); + tab->chatLog(_("/quit > Leave a channel")); + tab->chatLog(_("/clear > Clears this window")); + tab->chatLog(_("/op > Make a user a channel operator")); + tab->chatLog(_("/kick > Kick a user from the channel")); + + tab->chatLog(_("/party > Invite a user to party")); #else - localChatTab->chatLog(_("/party > Party-related commands")); + tab->chatLog(_("/party > Party-related commands")); #endif - localChatTab->chatLog(_("/record > Start recording the chat to an external file")); - localChatTab->chatLog(_("/toggle > Determine whether toggles the chat log")); - localChatTab->chatLog(_("/present > Get list of players present (sent to chat log, if logging)")); + tab->chatLog(_("/record > Start recording the chat to an external file")); + tab->chatLog(_("/toggle > Determine whether toggles the chat log")); + tab->chatLog(_("/present > Get list of players present (sent to chat log, if logging)")); - localChatTab->chatLog(_("/announce > Global announcement (GM only)")); + tab->chatLog(_("/announce > Global announcement (GM only)")); - localChatTab->chatLog(_("For more information, type /help ")); + tab->chatLog(_("For more information, type /help ")); } else if (args == "announce") { - localChatTab->chatLog(_("Command: /announce ")); - localChatTab->chatLog(_("*** only available to a GM ***")); - localChatTab->chatLog(_("This command sends the message to " + tab->chatLog(_("Command: /announce ")); + tab->chatLog(_("*** only available to a GM ***")); + tab->chatLog(_("This command sends the message to " "all players currently online.")); } else if (args == "clear") { - localChatTab->chatLog(_("Command: /clear")); - localChatTab->chatLog(_("This command clears the chat log of previous chat.")); + tab->chatLog(_("Command: /clear")); + tab->chatLog(_("This command clears the chat log of previous chat.")); } else if (args == "help") { - localChatTab->chatLog(_("Command: /help")); - localChatTab->chatLog(_("This command displays a list of all commands available.")); - localChatTab->chatLog(_("Command: /help ")); - localChatTab->chatLog(_("This command displays help on .")); + tab->chatLog(_("Command: /help")); + tab->chatLog(_("This command displays a list of all commands available.")); + tab->chatLog(_("Command: /help ")); + tab->chatLog(_("This command displays help on .")); } else if (args == "join") { - localChatTab->chatLog(_("Command: /join ")); - localChatTab->chatLog(_("This command makes you enter .")); - localChatTab->chatLog(_("If doesn't exist, it's created.")); + tab->chatLog(_("Command: /join ")); + tab->chatLog(_("This command makes you enter .")); + tab->chatLog(_("If doesn't exist, it's created.")); } else if (args == "kick") { - localChatTab->chatLog(_("Command: /kick ")); - localChatTab->chatLog(_("This command makes leave the channel.")); - localChatTab->chatLog(_("If the has spaces in it, enclose it in " + tab->chatLog(_("Command: /kick ")); + tab->chatLog(_("This command makes leave the channel.")); + tab->chatLog(_("If the has spaces in it, enclose it in " "double quotes (\").")); } else if (args == "list") { - localChatTab->chatLog(_("Command: /list")); - localChatTab->chatLog(_("This command shows a list of all channels.")); + tab->chatLog(_("Command: /list")); + tab->chatLog(_("This command shows a list of all channels.")); } else if (args == "me") { - localChatTab->chatLog(_("Command: /me ")); - localChatTab->chatLog(_("This command tell others you are (doing) .")); + tab->chatLog(_("Command: /me ")); + tab->chatLog(_("This command tell others you are (doing) .")); } else if (args == "msg" || args == "whisper" || args == "w") { - localChatTab->chatLog(_("Command: /msg ")); - localChatTab->chatLog(_("Command: /whisper ")); - localChatTab->chatLog(_("Command: /w ")); - localChatTab->chatLog(_("This command sends the text to .")); - localChatTab->chatLog(_("If the has spaces in it, enclose it in " + tab->chatLog(_("Command: /msg ")); + tab->chatLog(_("Command: /whisper ")); + tab->chatLog(_("Command: /w ")); + tab->chatLog(_("This command sends the text to .")); + tab->chatLog(_("If the has spaces in it, enclose it in " "double quotes (\").")); } else if (args == "op") { - localChatTab->chatLog(_("Command: /op ")); - localChatTab->chatLog(_("This command makes a channel operator.")); - localChatTab->chatLog(_("If the has spaces in it, enclose it in " + tab->chatLog(_("Command: /op ")); + tab->chatLog(_("This command makes a channel operator.")); + tab->chatLog(_("If the has spaces in it, enclose it in " "double quotes (\").")); - localChatTab->chatLog(_("Channel operators can kick and op other users " + tab->chatLog(_("Channel operators can kick and op other users " "from the channel.")); } #ifdef TMWSERV_SUPPORT else if (args == "party") { - localChatTab->chatLog(_("Command: /party ")); - localChatTab->chatLog(_("This command invites to party with you.")); - localChatTab->chatLog(_("If the has spaces in it, enclose it in " + tab->chatLog(_("Command: /party ")); + tab->chatLog(_("This command invites to party with you.")); + tab->chatLog(_("If the has spaces in it, enclose it in " "double quotes (\").")); #else else if (args.substr(0, 5) == "party") @@ -257,71 +257,71 @@ void CommandHandler::handleHelp(const std::string &args) } else if (args == "present") { - localChatTab->chatLog(_("Command: /present")); - localChatTab->chatLog(_("This command gets a list of players within hearing and " + tab->chatLog(_("Command: /present")); + tab->chatLog(_("This command gets a list of players within hearing and " "sends it to either the record log if recording, or the chat " "log otherwise.")); } else if (args == "quit") { - localChatTab->chatLog(_("Command: /quit")); - localChatTab->chatLog(_("This command leaves the current channel.")); - localChatTab->chatLog(_("If you're the last person in the channel, it will be deleted.")); + tab->chatLog(_("Command: /quit")); + tab->chatLog(_("This command leaves the current channel.")); + tab->chatLog(_("If you're the last person in the channel, it will be deleted.")); } else if (args == "record") { - localChatTab->chatLog(_("Command: /record ")); - localChatTab->chatLog(_("This command starts recording the chat log to the file " + tab->chatLog(_("Command: /record ")); + tab->chatLog(_("This command starts recording the chat log to the file " ".")); - localChatTab->chatLog(_("Command: /record")); - localChatTab->chatLog(_("This command finishes a recording session.")); + tab->chatLog(_("Command: /record")); + tab->chatLog(_("This command finishes a recording session.")); } else if (args == "toggle") { - localChatTab->chatLog(_("Command: /toggle ")); - localChatTab->chatLog(_("This command sets whether the return key should toggle the " + tab->chatLog(_("Command: /toggle ")); + tab->chatLog(_("This command sets whether the return key should toggle the " "chat log, or whether the chat log turns off automatically.")); - localChatTab->chatLog(_(" can be one of \"1\", \"yes\", \"true\" to " + tab->chatLog(_(" can be one of \"1\", \"yes\", \"true\" to " "turn the toggle on, or \"0\", \"no\", \"false\" to turn the " "toggle off.")); - localChatTab->chatLog(_("Command: /toggle")); - localChatTab->chatLog(_("This command displays the return toggle status.")); + tab->chatLog(_("Command: /toggle")); + tab->chatLog(_("This command displays the return toggle status.")); } else if (args == "topic") { - localChatTab->chatLog(_("Command: /topic ")); - localChatTab->chatLog(_("This command sets the topic to .")); + tab->chatLog(_("Command: /topic ")); + tab->chatLog(_("This command sets the topic to .")); } else if (args == "users") { - localChatTab->chatLog(_("Command: /users ")); - localChatTab->chatLog(_("This command shows the users in .")); + tab->chatLog(_("Command: /users ")); + tab->chatLog(_("This command shows the users in .")); } else if (args == "where") { - localChatTab->chatLog(_("Command: /where")); - localChatTab->chatLog(_("This command displays the name of the current map.")); + tab->chatLog(_("Command: /where")); + tab->chatLog(_("This command displays the name of the current map.")); } else if (args == "who") { - localChatTab->chatLog(_("Command: /who")); - localChatTab->chatLog(_("This command displays the number of players currently " + tab->chatLog(_("Command: /who")); + tab->chatLog(_("This command displays the number of players currently " "online.")); } else { - localChatTab->chatLog(_("Unknown command.")); - localChatTab->chatLog(_("Type /help for a list of commands.")); + tab->chatLog(_("Unknown command.")); + tab->chatLog(_("Type /help for a list of commands.")); } } -void CommandHandler::handleWhere() +void CommandHandler::handleWhere(const std::string &args, ChatTab *tab) { // TODO: add position - localChatTab->chatLog(map_path, BY_SERVER); + tab->chatLog(map_path, BY_SERVER); } -void CommandHandler::handleWho() +void CommandHandler::handleWho(const std::string &args, ChatTab *tab) { #ifdef TMWSERV_SUPPORT //TODO @@ -330,7 +330,7 @@ void CommandHandler::handleWho() #endif } -void CommandHandler::handleMsg(const std::string &args) +void CommandHandler::handleMsg(const std::string &args, ChatTab *tab) { std::string recvnick = ""; std::string msg = ""; @@ -377,67 +377,67 @@ void CommandHandler::handleMsg(const std::string &args) chatWindow->whisper(recvnick, msg, true); } else - localChatTab->chatLog("Cannont send empty whispers!"); + tab->chatLog("Cannont send empty whispers!"); } -void CommandHandler::handleClear() +void CommandHandler::handleClear(const std::string &args, ChatTab *tab) { chatWindow->clearTab(); } #ifdef TMWSERV_SUPPORT -void CommandHandler::handleJoin(const std::string &args) +void CommandHandler::handleJoin(const std::string &args, ChatTab *tab) { std::string::size_type pos = args.find(' '); std::string name(args, 0, pos); std::string password(args, pos+1); - localChatTab->chatLog("Requesting to join channel " + name); + tab->chatLog("Requesting to join channel " + name); Net::ChatServer::enterChannel(name, password); } -void CommandHandler::handleListChannels() +void CommandHandler::handleListChannels(const std::string &args, ChatTab *tab) { Net::ChatServer::getChannelList(); } -void CommandHandler::handleListUsers() +void CommandHandler::handleListUsers(const std::string &args, ChatTab *tab) { Net::ChatServer::getUserList(chatWindow->getFocused()->getCaption()); } -void CommandHandler::handleTopic(const std::string &args) +void CommandHandler::handleTopic(const std::string &args, ChatTab *tab) { - ChannelTab *tab = dynamic_cast(chatWindow->getFocused()); - Channel *channel = tab ? tab->getChannel() : NULL; + ChannelTab *channelTab = dynamic_cast(tab); + Channel *channel = channelTab ? channelTab->getChannel() : NULL; if (channel) { Net::ChatServer::setChannelTopic(channel->getId(), args); } else { - localChatTab->chatLog("Unable to set this channel's topic", BY_CHANNEL); + tab->chatLog("Unable to set this channel's topic", BY_CHANNEL); } } -void CommandHandler::handleQuit() +void CommandHandler::handleQuit(const std::string &args, ChatTab *tab) { - ChannelTab *tab = dynamic_cast(chatWindow->getFocused()); - Channel *channel = tab ? tab->getChannel() : NULL; + ChannelTab *channelTab = dynamic_cast(tab); + Channel *channel = channelTab ? channelTab->getChannel() : NULL; if (channel) { Net::ChatServer::quitChannel(channel->getId()); } else { - localChatTab->chatLog("Unable to quit this channel", BY_CHANNEL); + tab->chatLog("Unable to quit this channel", BY_CHANNEL); } } -void CommandHandler::handleOp(const std::string &args) +void CommandHandler::handleOp(const std::string &args, ChatTab *tab) { - ChannelTab *tab = dynamic_cast(chatWindow->getFocused()); - Channel *channel = tab ? tab->getChannel() : NULL; + ChannelTab *channelTab = dynamic_cast(tab); + Channel *channel = channelTab ? channelTab->getChannel() : NULL; if (channel) { // set the user mode 'o' to op a user @@ -448,14 +448,14 @@ void CommandHandler::handleOp(const std::string &args) } else { - localChatTab->chatLog("Unable to set this user's mode", BY_CHANNEL); + tab->chatLog("Unable to set this user's mode", BY_CHANNEL); } } -void CommandHandler::handleKick(const std::string &args) +void CommandHandler::handleKick(const std::string &args, ChatTab *tab) { - ChannelTab *tab = dynamic_cast(chatWindow->getFocused()); - Channel *channel = tab ? tab->getChannel() : NULL; + ChannelTab *channelTab = dynamic_cast(tab); + Channel *channel = channelTab ? channelTab->getChannel() : NULL; if (channel) { if (args != "") @@ -465,13 +465,13 @@ void CommandHandler::handleKick(const std::string &args) } else { - localChatTab->chatLog("Unable to kick user", BY_CHANNEL); + tab->chatLog("Unable to kick user", BY_CHANNEL); } } #endif -void CommandHandler::handleParty(const std::string &args) +void CommandHandler::handleParty(const std::string &args, ChatTab *tab) { #ifdef TMWSERV_SUPPORT if (args != "") @@ -481,7 +481,7 @@ void CommandHandler::handleParty(const std::string &args) #else if (args.empty()) { - localChatTab->chatLog(_("Unknown party command... Type \"/help\" party for more " + tab->chatLog(_("Unknown party command... Type \"/help\" party for more " "information."), BY_SERVER); return; } @@ -506,22 +506,22 @@ void CommandHandler::handleParty(const std::string &args) { char temp[2] = "."; *temp = chatWindow->getPartyPrefix(); - localChatTab->chatLog(_("The current party prefix is ") + std::string(temp)); + tab->chatLog(_("The current party prefix is ") + std::string(temp)); } else if (rest.length() != 1) { - localChatTab->chatLog(_("Party prefix must be one character long.")); + tab->chatLog(_("Party prefix must be one character long.")); } else { if (rest == "/") { - localChatTab->chatLog(_("Cannot use a '/' as the prefix.")); + tab->chatLog(_("Cannot use a '/' as the prefix.")); } else { chatWindow->setPartyPrefix(rest.at(0)); - localChatTab->chatLog(_("Changing prefix to ") + rest); + tab->chatLog(_("Changing prefix to ") + rest); } } } @@ -530,22 +530,22 @@ void CommandHandler::handleParty(const std::string &args) #endif } -void CommandHandler::handleMe(const std::string &args) +void CommandHandler::handleMe(const std::string &args, ChatTab *tab) { std::string action = strprintf("*%s*", args.c_str()); chatWindow->chatInput(action); } -void CommandHandler::handleRecord(const std::string &args) +void CommandHandler::handleRecord(const std::string &args, ChatTab *tab) { chatWindow->setRecordingFile(args); } -void CommandHandler::handleToggle(const std::string &args) +void CommandHandler::handleToggle(const std::string &args, ChatTab *tab) { if (args.empty()) { - localChatTab->chatLog(chatWindow->getReturnTogglesChat() ? + tab->chatLog(chatWindow->getReturnTogglesChat() ? _("Return toggles chat.") : _("Message closes chat.")); return; } @@ -556,7 +556,7 @@ void CommandHandler::handleToggle(const std::string &args) opt == "y" || opt == "Y" || opt == "t" || opt == "T") { - localChatTab->chatLog(_("Return now toggles chat.")); + tab->chatLog(_("Return now toggles chat.")); chatWindow->setReturnTogglesChat(true); return; } @@ -564,16 +564,16 @@ void CommandHandler::handleToggle(const std::string &args) opt == "n" || opt == "N" || opt == "f" || opt == "F") { - localChatTab->chatLog(_("Message now closes chat.")); + tab->chatLog(_("Message now closes chat.")); chatWindow->setReturnTogglesChat(false); return; } else - localChatTab->chatLog(_("Options to /toggle are \"yes\", \"no\", \"true\", " + tab->chatLog(_("Options to /toggle are \"yes\", \"no\", \"true\", " "\"false\", \"1\", \"0\".")); } -void CommandHandler::handlePresent(const std::string &args) +void CommandHandler::handlePresent(const std::string &args, ChatTab *tab) { chatWindow->doPresent(); } diff --git a/src/commandhandler.h b/src/commandhandler.h index 43ce172f..b9b61647 100644 --- a/src/commandhandler.h +++ b/src/commandhandler.h @@ -24,6 +24,10 @@ #include +class ChatTab; + +extern ChatTab *localChatTab; + /** * A class to parse and handle user commands */ @@ -43,98 +47,98 @@ class CommandHandler /** * Parse and handle the given command. */ - void handleCommand(const std::string &command); + void handleCommand(const std::string &command, ChatTab *tab = localChatTab); private: /** * Handle an announce command. */ - void handleAnnounce(const std::string &args); + void handleAnnounce(const std::string &args, ChatTab *tab); /** * Handle a help command. */ - void handleHelp(const std::string &args); + void handleHelp(const std::string &args, ChatTab *tab); /** * Handle a where command. */ - void handleWhere(); + void handleWhere(const std::string &args, ChatTab *tab); /** * Handle a who command. */ - void handleWho(); + void handleWho(const std::string &args, ChatTab *tab); /** * Handle a msg command. */ - void handleMsg(const std::string &args); + void handleMsg(const std::string &args, ChatTab *tab); /** * Handle a join command. */ - void handleJoin(const std::string &args); + void handleJoin(const std::string &args, ChatTab *tab); /** * Handle a listchannels command. */ - void handleListChannels(); + void handleListChannels(const std::string &args, ChatTab *tab); /** * Handle a listusers command. */ - void handleListUsers(); + void handleListUsers(const std::string &args, ChatTab *tab); /** * Handle a topic command. */ - void handleTopic(const std::string &args); + void handleTopic(const std::string &args, ChatTab *tab); /** * Handle a quit command. */ - void handleQuit(); + void handleQuit(const std::string &args, ChatTab *tab); /** * Handle a clear command. */ - void handleClear(); + void handleClear(const std::string &args, ChatTab *tab); /** * Handle a party command. */ - void handleParty(const std::string &args); + void handleParty(const std::string &args, ChatTab *tab); /** * Handle a op command. */ - void handleOp(const std::string &args); + void handleOp(const std::string &args, ChatTab *tab); /** * Handle a kick command. */ - void handleKick(const std::string &args); + void handleKick(const std::string &args, ChatTab *tab); /** * Handle a me command. */ - void handleMe(const std::string &args); + void handleMe(const std::string &args, ChatTab *tab); /** * Handle a record command. */ - void handleRecord(const std::string &args); + void handleRecord(const std::string &args, ChatTab *tab); /** * Handle a toggle command. */ - void handleToggle(const std::string &args); + void handleToggle(const std::string &args, ChatTab *tab); /** * Handle a present command. */ - void handlePresent(const std::string &args); + void handlePresent(const std::string &args, ChatTab *tab); }; extern CommandHandler *commandHandler; diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 398b5792..10993027 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -316,12 +316,12 @@ void ChatWindow::doPresent() mRecorder->record(timeStr.str() + _("Present: ") + response + "."); - localChatTab->chatLog(_("Attendance written to record log."), + getFocused()->chatLog(_("Attendance written to record log."), BY_SERVER, true); } else { - localChatTab->chatLog(_("Present: ") + response, BY_SERVER); + getFocused()->chatLog(_("Present: ") + response, BY_SERVER); } } diff --git a/src/gui/widgets/chattab.cpp b/src/gui/widgets/chattab.cpp index 95606281..c4563cc9 100644 --- a/src/gui/widgets/chattab.cpp +++ b/src/gui/widgets/chattab.cpp @@ -314,5 +314,5 @@ void ChatTab::handleInput(const std::string &msg) { void ChatTab::handleCommand(std::string msg) { - commandHandler->handleCommand(msg); + commandHandler->handleCommand(msg, this); } -- cgit v1.2.3-70-g09d2