summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2008-04-17 13:01:05 +0000
committerDavid Athay <ko2fan@gmail.com>2008-04-17 13:01:05 +0000
commit1f639454d986ea0d44b563eaa71019d9f1c01c24 (patch)
tree7a067b4522c154ddcab65e2ab6dbe3ea498b0f6e
parent6afe553c237bf0a9ffde8fc7eae469431718268e (diff)
downloadmana-client-1f639454d986ea0d44b563eaa71019d9f1c01c24.tar.gz
mana-client-1f639454d986ea0d44b563eaa71019d9f1c01c24.tar.bz2
mana-client-1f639454d986ea0d44b563eaa71019d9f1c01c24.tar.xz
mana-client-1f639454d986ea0d44b563eaa71019d9f1c01c24.zip
Added basic party support (no interface to create or quit yet)
-rw-r--r--ChangeLog9
-rw-r--r--src/localplayer.h2
-rw-r--r--src/net/chatserver/party.cpp80
-rw-r--r--src/net/chatserver/party.h64
-rw-r--r--src/net/guildhandler.cpp2
-rw-r--r--src/net/guildhandler.h2
-rw-r--r--src/net/partyhandler.cpp71
-rw-r--r--src/net/partyhandler.h47
-rw-r--r--src/player.cpp5
-rw-r--r--src/player.h11
10 files changed, 288 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index cdb676fa..7777e3fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-04-17 David Athay <ko2fan@gmail.com>
+
+ * src/player.cpp, src/player.h, src/net/partyhandler.h,
+ src/net/guildhandler.h, src/net/partyhandler.cpp,
+ src/net/guildhandler.cpp, src/net/chatserver/party.cpp,
+ src/net/chatserver/party.h, src/localplayer.h: Added basic party
+ support.
+
+
2008-04-17 Yohann Ferreira <bertram@cegetel.net>
* src/gui/progressbar.h, src/gui/progressbar.cpp: Added smooth
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