summaryrefslogtreecommitdiff
path: root/src/gui/partywindow.cpp
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2008-04-28 17:21:22 +0000
committerDavid Athay <ko2fan@gmail.com>2008-04-28 17:21:22 +0000
commit5bbb89e2dbcafb80f33030ba2ffef6d2515b9209 (patch)
treebc0660c85891a0fae0acc7dea80547962f39ff1a /src/gui/partywindow.cpp
parenta6731dd30a4ab7b2b19af18295293c13895b664d (diff)
downloadmana-5bbb89e2dbcafb80f33030ba2ffef6d2515b9209.tar.gz
mana-5bbb89e2dbcafb80f33030ba2ffef6d2515b9209.tar.bz2
mana-5bbb89e2dbcafb80f33030ba2ffef6d2515b9209.tar.xz
mana-5bbb89e2dbcafb80f33030ba2ffef6d2515b9209.zip
Added party invite dialog
Diffstat (limited to 'src/gui/partywindow.cpp')
-rw-r--r--src/gui/partywindow.cpp81
1 files changed, 69 insertions, 12 deletions
diff --git a/src/gui/partywindow.cpp b/src/gui/partywindow.cpp
index db066910..5ec1e6bf 100644
--- a/src/gui/partywindow.cpp
+++ b/src/gui/partywindow.cpp
@@ -22,43 +22,71 @@
*/
#include "partywindow.h"
+#include "chat.h"
#include "../utils/gettext.h"
+#include "../net/chatserver/party.h"
PartyWindow::PartyWindow() : Window(_("Party"))
{
setVisible(false);
}
+PartyWindow::~PartyWindow()
+{
+ PartyList::iterator itr = mPartyMembers.begin(),
+ itr_end = mPartyMembers.end();
+
+ while (itr != itr_end)
+ {
+ delete (*itr);
+ }
+
+ mPartyMembers.clear();
+}
+
void PartyWindow::draw(gcn::Graphics *graphics)
{
}
-void PartyWindow::addPartyMember(Player *player)
+void PartyWindow::addPartyMember(const std::string &memberName)
{
- PartyList::iterator itr = std::find(mPartyMembers.begin(),
- mPartyMembers.end(),
- player);
- if (itr == mPartyMembers.end())
+ PartyMember *player = new PartyMember;
+ PartyList::iterator itr = mPartyMembers.begin(),
+ itr_end = mPartyMembers.end();
+
+ while (itr != itr_end)
{
- mPartyMembers.push_back(player);
+ if ((*itr)->name == memberName)
+ {
+ return;
+ }
+ ++itr;
}
+ player->name = memberName;
+ mPartyMembers.push_back(player);
+
if (mPartyMembers.size() > 1)
{
setVisible(true);
}
}
-void PartyWindow::removePartyMember(Player *player)
+void PartyWindow::removePartyMember(const std::string &memberName)
{
- PartyList::iterator itr = std::find(mPartyMembers.begin(),
- mPartyMembers.end(),
- player);
- if (itr != mPartyMembers.end())
+ PartyList::iterator itr = mPartyMembers.begin(),
+ itr_end = mPartyMembers.end();
+
+ while (itr != itr_end)
{
- mPartyMembers.erase(itr);
+ if ((*itr)->name == memberName)
+ {
+ mPartyMembers.erase(itr);
+ break;
+ }
+ ++itr;
}
if (mPartyMembers.size() < 1)
@@ -69,5 +97,34 @@ void PartyWindow::removePartyMember(Player *player)
void PartyWindow::showPartyInvite(const std::string &inviter)
{
+ if (mPartyInviter != "")
+ {
+ chatWindow->chatLog("Received party request, but one already exists",
+ BY_SERVER);
+ return;
+ }
+ std::string msg = inviter + " has invited you to join their party";
+ chatWindow->chatLog(msg, BY_SERVER);
+
+ acceptDialog = new ConfirmDialog("Accept Party Invite", msg, this);
+ acceptDialog->addActionListener(this);
+
+ mPartyInviter = inviter;
+}
+
+void PartyWindow::action(const gcn::ActionEvent &event)
+{
+ const std::string &eventId = event.getId();
+ if (eventId == "yes")
+ {
+ Net::ChatServer::Party::acceptInvite(mPartyInviter);
+ mPartyInviter = "";
+ delete acceptDialog;
+ }
+ else if (eventId == "no")
+ {
+ mPartyInviter = "";
+ delete acceptDialog;
+ }
}