diff options
author | Jared Adams <jaxad0127@gmail.com> | 2009-04-07 21:16:24 -0600 |
---|---|---|
committer | Jared Adams <jaxad0127@gmail.com> | 2009-04-07 21:23:27 -0600 |
commit | 73c773adfb8b65e1305242ab55607882a46e71c3 (patch) | |
tree | 5b6d767ce2f44e33283f4e78edbb5a08f0c2b52a | |
parent | aefbc69aac9f7c793725153eefce2631555bfd1f (diff) | |
download | mana-73c773adfb8b65e1305242ab55607882a46e71c3.tar.gz mana-73c773adfb8b65e1305242ab55607882a46e71c3.tar.bz2 mana-73c773adfb8b65e1305242ab55607882a46e71c3.tar.xz mana-73c773adfb8b65e1305242ab55607882a46e71c3.zip |
Implement TMWServ's PartyHandler
-rw-r--r-- | src/commandhandler.cpp | 14 | ||||
-rw-r--r-- | src/gui/partywindow.cpp | 20 | ||||
-rw-r--r-- | src/localplayer.cpp | 15 | ||||
-rw-r--r-- | src/net/ea/generalhandler.cpp | 4 | ||||
-rw-r--r-- | src/net/ea/gui/partytab.cpp | 60 | ||||
-rw-r--r-- | src/net/ea/partyhandler.cpp | 6 | ||||
-rw-r--r-- | src/net/ea/partyhandler.h | 4 | ||||
-rw-r--r-- | src/net/partyhandler.h | 6 | ||||
-rw-r--r-- | src/net/tmwserv/generalhandler.cpp | 16 | ||||
-rw-r--r-- | src/net/tmwserv/partyhandler.cpp | 59 | ||||
-rw-r--r-- | src/net/tmwserv/partyhandler.h | 25 |
11 files changed, 144 insertions, 85 deletions
diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp index 6fc28978..586a62cd 100644 --- a/src/commandhandler.cpp +++ b/src/commandhandler.cpp @@ -156,9 +156,9 @@ void CommandHandler::handleHelp(const std::string &args, ChatTab *tab) tab->chatLog(_("/clear > Clears this window")); tab->chatLog(_("/op > Make a user a channel operator")); tab->chatLog(_("/kick > Kick a user from the channel")); +#endif tab->chatLog(_("/party > Invite a user to party")); -#endif tab->chatLog(_("/record > Start recording the chat to an external file")); tab->chatLog(_("/toggle > Determine whether <return> toggles the chat log")); @@ -230,14 +230,10 @@ void CommandHandler::handleHelp(const std::string &args, ChatTab *tab) } else if (args == "party") { -#ifdef TMWSERV_SUPPORT tab->chatLog(_("Command: /party <nick>")); tab->chatLog(_("This command invites <nick> to party with you.")); tab->chatLog(_("If the <nick> has spaces in it, enclose it in " "double quotes (\").")); -#else - tab->chatLog(_("Party commands are used on the party tab.")); -#endif } else if (args == "present") { @@ -449,14 +445,10 @@ void CommandHandler::handleKick(const std::string &args, ChatTab *tab) void CommandHandler::handleParty(const std::string &args, ChatTab *tab) { -#ifdef TMWSERV_SUPPORT if (args != "") - { player_node->inviteToParty(args); - } -#else - tab->chatLog(_("Please use party commands on the party tab.")); -#endif + else + tab->chatLog("Please specify a name.", BY_SERVER); } void CommandHandler::handleMe(const std::string &args, ChatTab *tab) diff --git a/src/gui/partywindow.cpp b/src/gui/partywindow.cpp index fde39179..aea1388b 100644 --- a/src/gui/partywindow.cpp +++ b/src/gui/partywindow.cpp @@ -24,11 +24,7 @@ #include "gui/widgets/chattab.h" #include "net/net.h" -#ifdef TMWSERV_SUPPORT -#include "net/tmwserv/chatserver/party.h" -#else -#include "net/ea/partyhandler.h" -#endif +#include "net/partyhandler.h" #include "utils/gettext.h" #include "utils/strprintf.h" @@ -172,23 +168,13 @@ void PartyWindow::action(const gcn::ActionEvent &event) if (eventId == "yes") { localChatTab->chatLog("Accepted invite from " + mPartyInviter); - // Net::getPartyHandler()->inviteResponse(true); -#ifdef TMWSERV_SUPPORT - Net::ChatServer::Party::acceptInvite(mPartyInviter); -#else - partyHandler->inviteResponse(true); -#endif + Net::getPartyHandler()->inviteResponse(mPartyInviter, true); mPartyInviter = ""; } else if (eventId == "no") { localChatTab->chatLog("Rejected invite from " + mPartyInviter); - // Net::getPartyHandler()->inviteResponse(false); -#ifdef TMWSERV_SUPPORT - // TODO -#else - partyHandler->inviteResponse(false); -#endif + Net::getPartyHandler()->inviteResponse(mPartyInviter, false); mPartyInviter = ""; } } diff --git a/src/localplayer.cpp b/src/localplayer.cpp index fea3bae8..d44e28c0 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -45,6 +45,7 @@ #include "net/inventoryhandler.h" #include "net/net.h" +#include "net/partyhandler.h" #include "net/playerhandler.h" #include "net/tradehandler.h" @@ -54,7 +55,6 @@ #include "net/tmwserv/gameserver/player.h" #include "net/tmwserv/chatserver/guild.h" -#include "net/tmwserv/chatserver/party.h" #else #include "net/ea/partyhandler.h" #include "net/ea/skillhandler.h" @@ -322,21 +322,12 @@ void LocalPlayer::setInvItem(int index, int id, int amount) void LocalPlayer::inviteToParty(const std::string &name) { -#ifdef TMWSERV_SUPPORT - Net::ChatServer::Party::invitePlayer(name); -#else - // need an id -#endif + Net::getPartyHandler()->invite(name); } void LocalPlayer::inviteToParty(Player *player) { - // Net::getPartyHandler()->invite(player->getId()); -#ifdef TMWSERV_SUPPORT - Net::ChatServer::Party::invitePlayer(player->getName()); -#else - partyHandler->invite(player->getId()); -#endif + Net::getPartyHandler()->invite(player); } void LocalPlayer::moveInvItem(Item *item, int newIndex) diff --git a/src/net/ea/generalhandler.cpp b/src/net/ea/generalhandler.cpp index e0974e63..2dee8d1e 100644 --- a/src/net/ea/generalhandler.cpp +++ b/src/net/ea/generalhandler.cpp @@ -141,7 +141,9 @@ void GeneralHandler::unload() { mNetwork->clearHandlers(); - delete partyTab; + // The party tab might not have been made (if we never loaded the main GUI) + if (partyTab) + delete partyTab; } void GeneralHandler::flushNetwork() diff --git a/src/net/ea/gui/partytab.cpp b/src/net/ea/gui/partytab.cpp index 0e0e339e..5f6da0f9 100644 --- a/src/net/ea/gui/partytab.cpp +++ b/src/net/ea/gui/partytab.cpp @@ -22,8 +22,7 @@ #include "partytab.h" #include "net/net.h" - -#include "net/ea/partyhandler.h" +#include "net/partyhandler.h" #include "resources/iteminfo.h" #include "resources/itemdb.h" @@ -44,8 +43,7 @@ PartyTab::~PartyTab() void PartyTab::handleInput(const std::string &msg) { - // Net::getPartyHandler()->chat(msg); - partyHandler->chat(msg); + Net::getPartyHandler()->chat(msg); } void PartyTab::handleCommand(std::string msg) @@ -58,36 +56,44 @@ void PartyTab::handleCommand(std::string msg) { if (args == "") { - partyTab->chatLog(_("-- Help --")); - partyTab->chatLog(_("/help > Display this help.")); - partyTab->chatLog(_("/create > Create a new party")); - partyTab->chatLog(_("/new > alias of create")); - partyTab->chatLog(_("/leave > leave the party you are in")); + chatLog(_("-- Help --")); + chatLog(_("/help > Display this help.")); + chatLog(_("/create > Create a new party")); + chatLog(_("/new > Alias of create")); + chatLog(_("/invite > Invite a player to your party")); + chatLog(_("/leave > Leave the party you are in")); } else if (args == "create" || args == "new") { - partyTab->chatLog(_("Command: /party new <party-name>")); - partyTab->chatLog(_("Command: /party create <party-name>")); - partyTab->chatLog(_("These commands create a new party <party-name.")); + chatLog(_("Command: /new <party-name>")); + chatLog(_("Command: /create <party-name>")); + chatLog(_("These commands create a new party called <party-name>.")); } //else if (msg == "settings") //else if (msg == "info") + else if (args == "invite") + { + chatLog(_("Command: /invite <nick>")); + chatLog(_("This command invites <nick> to party with you.")); + chatLog(_("If the <nick> has spaces in it, enclose it in " + "double quotes (\").")); + } else if (args == "leave") { - partyTab->chatLog(_("Command: /party leave")); - partyTab->chatLog(_("This command causes the player to leave the party.")); + chatLog(_("Command: /leave")); + chatLog(_("This command causes the player to leave the party.")); } else if (args == "help") { - partyTab->chatLog(_("Command: /help")); - partyTab->chatLog(_("This command displays a list of all commands available.")); - partyTab->chatLog(_("Command: /help <command>")); - partyTab->chatLog(_("This command displays help on <command>.")); + chatLog(_("Command: /help")); + chatLog(_("This command displays a list of all commands available.")); + chatLog(_("Command: /help <command>")); + chatLog(_("This command displays help on <command>.")); } else { - partyTab->chatLog(_("Unknown command.")); - partyTab->chatLog(_("Type /help for a list of commands.")); + chatLog(_("Unknown command.")); + chatLog(_("Type /help for a list of commands.")); } } else if (type == "create" || type == "new") @@ -95,17 +101,19 @@ void PartyTab::handleCommand(std::string msg) if (args.empty()) chatLog(_("Party name is missing."), BY_SERVER); else - // Net::getPartyHandler()->create(args); - partyHandler->create(args); + Net::getPartyHandler()->create(args); + } + else if (type == "invite") + { + Net::getPartyHandler()->invite(args); } else if (type == "leave") { - // Net::getPartyHandler()->leave(); - partyHandler->leave(); + Net::getPartyHandler()->leave(); } else if (type == "settings") { - partyTab->chatLog(_("The settings command is not yet implemented!")); + chatLog(_("The settings command is not yet implemented!")); /* MessageOut outMsg(CMSG_PARTY_SETTINGS); outMsg.writeInt16(0); // Experience @@ -114,6 +122,6 @@ void PartyTab::handleCommand(std::string msg) } else { - partyTab->chatLog("Unknown command"); + chatLog("Unknown command"); } } diff --git a/src/net/ea/partyhandler.cpp b/src/net/ea/partyhandler.cpp index 863765d5..f76bd7d8 100644 --- a/src/net/ea/partyhandler.cpp +++ b/src/net/ea/partyhandler.cpp @@ -219,10 +219,10 @@ void PartyHandler::join(int partyId) { } -void PartyHandler::invite(int playerId) +void PartyHandler::invite(Player *player) { MessageOut outMsg(CMSG_PARTY_INVITE); - outMsg.writeInt32(playerId); + outMsg.writeInt32(player->getId()); } void PartyHandler::invite(const std::string &name) @@ -230,7 +230,7 @@ void PartyHandler::invite(const std::string &name) // TODO } -void PartyHandler::inviteResponse(bool accept) +void PartyHandler::inviteResponse(const std::string &inviter, bool accept) { MessageOut outMsg(CMSG_PARTY_INVITED); outMsg.writeInt32(player_node->getId()); diff --git a/src/net/ea/partyhandler.h b/src/net/ea/partyhandler.h index d156cdc1..41338c96 100644 --- a/src/net/ea/partyhandler.h +++ b/src/net/ea/partyhandler.h @@ -39,11 +39,11 @@ class PartyHandler : public MessageHandler, public Net::PartyHandler void join(int partyId); - void invite(int playerId); + void invite(Player *player); void invite(const std::string &name); - void inviteResponse(bool accept); + void inviteResponse(const std::string &inviter, bool accept); void leave(); diff --git a/src/net/partyhandler.h b/src/net/partyhandler.h index af84a746..85b7a2ba 100644 --- a/src/net/partyhandler.h +++ b/src/net/partyhandler.h @@ -24,6 +24,8 @@ #include <string> +class Player; + namespace Net { class PartyHandler @@ -33,11 +35,11 @@ class PartyHandler virtual void join(int partyId) = 0; - virtual void invite(int playerId) = 0; + virtual void invite(Player *player) = 0; virtual void invite(const std::string &name) = 0; - virtual void inviteResponse(bool accept) = 0; + virtual void inviteResponse(const std::string &inviter, bool accept) = 0; virtual void leave() = 0; diff --git a/src/net/tmwserv/generalhandler.cpp b/src/net/tmwserv/generalhandler.cpp index c5f00624..504af023 100644 --- a/src/net/tmwserv/generalhandler.cpp +++ b/src/net/tmwserv/generalhandler.cpp @@ -51,19 +51,19 @@ namespace TmwServ { GeneralHandler::GeneralHandler(): mBeingHandler(new BeingHandler), mBuySellHandler(new BuySellHandler), - mCharServerHandler(new TmwServ::CharServerHandler), - mChatHandler(new TmwServ::ChatHandler), + mCharServerHandler(new CharServerHandler), + mChatHandler(new ChatHandler), mEffectHandler(new EffectHandler), mGuildHandler(new GuildHandler), - mInventoryHandler(new TmwServ::InventoryHandler), + mInventoryHandler(new InventoryHandler), mItemHandler(new ItemHandler), - mLoginHandler(new TmwServ::LoginHandler), + mLoginHandler(new LoginHandler), mLogoutHandler(new LogoutHandler), - mMapHandler(new TmwServ::MapHandler), - mNpcHandler(new TmwServ::NpcHandler), + mMapHandler(new MapHandler), + mNpcHandler(new NpcHandler), mPartyHandler(new PartyHandler), - mPlayerHandler(new TmwServ::PlayerHandler), - mTradeHandler(new TmwServ::TradeHandler) + mPlayerHandler(new PlayerHandler), + mTradeHandler(new TradeHandler) { accountServerConnection = Net::getConnection(); gameServerConnection = Net::getConnection(); diff --git a/src/net/tmwserv/partyhandler.cpp b/src/net/tmwserv/partyhandler.cpp index 08e58667..5aecca76 100644 --- a/src/net/tmwserv/partyhandler.cpp +++ b/src/net/tmwserv/partyhandler.cpp @@ -21,9 +21,11 @@ #include "net/tmwserv/partyhandler.h" -#include "net/tmwserv/chatserver/chatserver.h" #include "net/tmwserv/protocol.h" +#include "net/tmwserv/chatserver/chatserver.h" +#include "net/tmwserv/chatserver/party.h" + #include "net/messagein.h" #include "gui/partywindow.h" @@ -35,6 +37,10 @@ #include <iostream> +Net::PartyHandler *partyHandler; + +namespace TmwServ { + PartyHandler::PartyHandler() { static const Uint16 _messages[] = { @@ -47,7 +53,7 @@ PartyHandler::PartyHandler() 0 }; handledMessages = _messages; - + partyHandler = this; } void PartyHandler::handleMessage(MessageIn &msg) @@ -104,3 +110,52 @@ void PartyHandler::handleMessage(MessageIn &msg) } break; } } + +void PartyHandler::create(const std::string &name) +{ + // TODO +} + +void PartyHandler::join(int partyId) +{ + // TODO +} + +void PartyHandler::invite(Player *player) +{ + invite(player->getName()); +} + +void PartyHandler::invite(const std::string &name) +{ + Net::ChatServer::Party::invitePlayer(name); +} + +void PartyHandler::inviteResponse(const std::string &inviter, bool accept) +{ + if (accept) + Net::ChatServer::Party::acceptInvite(inviter); + // TODO: rejection +} + +void PartyHandler::leave() +{ + // TODO +} + +void PartyHandler::kick(int playerId) +{ + // TODO +} + +void PartyHandler::chat(const std::string &text) +{ + // TODO +} + +void PartyHandler::requestPartyMembers() +{ + // TODO +} + +} // namespace TmwServ diff --git a/src/net/tmwserv/partyhandler.h b/src/net/tmwserv/partyhandler.h index 66e29b0d..9dad4bbc 100644 --- a/src/net/tmwserv/partyhandler.h +++ b/src/net/tmwserv/partyhandler.h @@ -23,16 +23,39 @@ #define NET_TMWSERV_PARTYHANDLER_H #include "net/messagehandler.h" +#include "net/partyhandler.h" #include <string> -class PartyHandler : public MessageHandler +namespace TmwServ { + +class PartyHandler : public MessageHandler, public Net::PartyHandler { public: PartyHandler(); void handleMessage(MessageIn &msg); + + void create(const std::string &name = ""); + + void join(int partyId); + + void invite(Player *player); + + void invite(const std::string &name); + + void inviteResponse(const std::string &inviter, bool accept); + + void leave(); + + void kick(int playerId); + + void chat(const std::string &text); + + void requestPartyMembers(); }; +} // namespace TmwServ + #endif |