diff options
author | David Athay <ko2fan@gmail.com> | 2008-04-17 13:01:05 +0000 |
---|---|---|
committer | David Athay <ko2fan@gmail.com> | 2008-04-17 13:01:05 +0000 |
commit | 1f639454d986ea0d44b563eaa71019d9f1c01c24 (patch) | |
tree | 7a067b4522c154ddcab65e2ab6dbe3ea498b0f6e /src | |
parent | 6afe553c237bf0a9ffde8fc7eae469431718268e (diff) | |
download | mana-1f639454d986ea0d44b563eaa71019d9f1c01c24.tar.gz mana-1f639454d986ea0d44b563eaa71019d9f1c01c24.tar.bz2 mana-1f639454d986ea0d44b563eaa71019d9f1c01c24.tar.xz mana-1f639454d986ea0d44b563eaa71019d9f1c01c24.zip |
Added basic party support (no interface to create or quit yet)
Diffstat (limited to 'src')
-rw-r--r-- | src/localplayer.h | 2 | ||||
-rw-r--r-- | src/net/chatserver/party.cpp | 80 | ||||
-rw-r--r-- | src/net/chatserver/party.h | 64 | ||||
-rw-r--r-- | src/net/guildhandler.cpp | 2 | ||||
-rw-r--r-- | src/net/guildhandler.h | 2 | ||||
-rw-r--r-- | src/net/partyhandler.cpp | 71 | ||||
-rw-r--r-- | src/net/partyhandler.h | 47 | ||||
-rw-r--r-- | src/player.cpp | 5 | ||||
-rw-r--r-- | src/player.h | 11 |
9 files changed, 279 insertions, 5 deletions
diff --git a/src/localplayer.h b/src/localplayer.h index 8ae8aa19..b5e7c3eb 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -154,7 +154,7 @@ class LocalPlayer : public Player drawName(Graphics *, int, int) {}; /** - * Check the player has permission to invite users + * Check the player has permission to invite users to specific guild */ bool checkInviteRights(const std::string &guildName); diff --git a/src/net/chatserver/party.cpp b/src/net/chatserver/party.cpp new file mode 100644 index 00000000..8d6fd7c2 --- /dev/null +++ b/src/net/chatserver/party.cpp @@ -0,0 +1,80 @@ +/* + * The Mana World + * Copyright 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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. + * + * The Mana World 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 The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id: $ + */ + + +#include "party.h" + +#include "internal.h" + +#include "../connection.h" +#include "../messageout.h" +#include "../protocol.h" + +#include "../../log.h" + +void Net::ChatServer::Party::createParty() +{ + logger->log("Sending PCMSG_PARTY_CREATE"); + MessageOut msg(PCMSG_PARTY_CREATE); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Party::invitePlayer(const std::string &name) +{ + logger->log("Sending PCMSG_PARTY_INVITE"); +// MessageOut msg(PCMSG_GUILD_INVITE); + +// msg.writeString(name); + +// Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Party::acceptInvite(const std::string &name) +{ + logger->log("Sending PCMSG_PARTY_ACCEPT"); +// MessageOut msg(PCMSG_GUILD_ACCEPT); + +// msg.writeString(name); + +// Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Party::getPartyMembers() +{ + logger->log("Sending PCMSG_PARTY_GET_MEMBERS"); +// MessageOut msg(PCMSG_GUILD_GET_MEMBERS); + +// msg.writeInt16(guildId); + +// Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Party::quitParty() +{ + logger->log("Sending PCMSG_PARTY_QUIT"); + MessageOut msg(PCMSG_PARTY_QUIT); + + Net::ChatServer::connection->send(msg); +} + diff --git a/src/net/chatserver/party.h b/src/net/chatserver/party.h new file mode 100644 index 00000000..6f404583 --- /dev/null +++ b/src/net/chatserver/party.h @@ -0,0 +1,64 @@ +/* + * The Mana World + * Copyright 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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. + * + * The Mana World 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 The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id: $ + */ + + +#ifndef _TMW_NET_CHATSERVER_PARTY_H +#define _TMW_NET_CHATSERVER_PARTY_H + +#include <iosfwd> + +namespace Net +{ + namespace ChatServer + { + namespace Party + { + /** + * Create party + */ + void createParty(); + + /** + * Invite a player to the party. + */ + void invitePlayer(const std::string &name); + + /** + * Accept an invite another player has sent to join their party + */ + void acceptInvite(const std::string &name); + + /** + * Get a list of party members + */ + void getPartyMembers(); + + /** + * Leave party + */ + void quitParty(); + } + } +} + +#endif diff --git a/src/net/guildhandler.cpp b/src/net/guildhandler.cpp index 3fecf9b2..c178df18 100644 --- a/src/net/guildhandler.cpp +++ b/src/net/guildhandler.cpp @@ -2,8 +2,6 @@ * guildhandler.cpp * A file part of The Mana World * - * Created by David Athay on 01/03/2007. - * * Copyright (c) 2007, The Mana World Development Team * All rights reserved. * diff --git a/src/net/guildhandler.h b/src/net/guildhandler.h index ec5780fc..dda92763 100644 --- a/src/net/guildhandler.h +++ b/src/net/guildhandler.h @@ -2,8 +2,6 @@ * guildhandler.h * A file part of The Mana World * - * Created by David Athay on 01/03/2007. - * * Copyright (c) 2007, The Mana World Development Team * All rights reserved. * diff --git a/src/net/partyhandler.cpp b/src/net/partyhandler.cpp new file mode 100644 index 00000000..91f0014e --- /dev/null +++ b/src/net/partyhandler.cpp @@ -0,0 +1,71 @@ +/* + * This file is part of The Mana World + * + * Copyright (c) 2008, The Mana World Development Team + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * My name may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * $Id: $ + */ + +#include <iostream> +#include "partyhandler.h" + +#include "protocol.h" +#include "messagein.h" + +#include "chatserver/chatserver.h" + +#include "../gui/chat.h" +#include "../log.h" +#include "../localplayer.h" + +PartyHandler::PartyHandler() +{ + static const Uint16 _messages[] = { + CPMSG_PARTY_CREATE_RESPONSE, + CPMSG_PARTY_QUIT_RESPONSE, + 0 + }; + handledMessages = _messages; + +} + +void PartyHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case CPMSG_PARTY_CREATE_RESPONSE: + { + if (msg.readInt8() == ERRMSG_OK) + { + player_node->setInParty(true); + } + } break; + + case CPMSG_PARTY_QUIT_RESPONSE: + { + if (msg.readInt8() == ERRMSG_OK) + { + player_node->setInParty(false); + } + } break; + } +} diff --git a/src/net/partyhandler.h b/src/net/partyhandler.h new file mode 100644 index 00000000..dfdd308b --- /dev/null +++ b/src/net/partyhandler.h @@ -0,0 +1,47 @@ +/* + * This file is part of The Mana World + * + * Copyright (c) 2008, The Mana World Development Team + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * My name may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + * + * $Id: $ + */ + +#ifndef _TMW_NET_PARTYHANDLER_H +#define _TMW_NET_PARTYHANDLER_H + +#include "messagehandler.h" + +#include <string> + +class PartyHandler : public MessageHandler +{ +public: + PartyHandler(); + + void handleMessage(MessageIn &msg); + +protected: + +}; + +#endif + diff --git a/src/player.cpp b/src/player.cpp index c218ad01..61730724 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -196,3 +196,8 @@ short Player::getNumberOfGuilds() { return mGuilds.size(); } + +void Player::setInParty(bool value) +{ + mInParty = value; +} diff --git a/src/player.h b/src/player.h index 4949783e..89cc1207 100644 --- a/src/player.h +++ b/src/player.h @@ -116,6 +116,16 @@ class Player : public Being short getNumberOfGuilds(); /** + * Set the player in party + */ + void setInParty(bool value); + + /** + * Returns whether player is in the party + */ + bool getInParty() const { return mInParty; } + + /** * Gets the way the character is blocked by other objects. */ virtual unsigned char getWalkMask() const @@ -135,6 +145,7 @@ class Player : public Being Gender mGender; Uint8 mHairStyle; Uint8 mHairColor; + bool mInParty; }; #endif |