summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/minimap.cpp48
1 files changed, 44 insertions, 4 deletions
diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp
index dedf8077d..c3a4417f6 100644
--- a/src/gui/minimap.cpp
+++ b/src/gui/minimap.cpp
@@ -29,6 +29,7 @@
#include "localplayer.h"
#include "logger.h"
#include "map.h"
+#include "party.h"
#include "gui/userpalette.h"
#include "gui/setup.h"
@@ -275,10 +276,6 @@ void Minimap::draw(gcn::Graphics *graphics)
{
type = UserPalette::GM;
}
- else if (being->isInParty())
- {
- type = UserPalette::PARTY;
- }
else if (being->getGuild() == player_node->getGuild()
|| being->getGuildName() == player_node->getGuildName())
{
@@ -322,6 +319,49 @@ void Minimap::draw(gcn::Graphics *graphics)
dotSize, dotSize));
}
+ if (player_node->isInParty())
+ {
+ Party *party = player_node->getParty();
+ if (party)
+ {
+ PartyMember *m = party->getMember(player_node->getName());
+ Party::MemberList *members = party->getMembers();
+ if (m && members)
+ {
+ const std::string curMap = m->getMap();
+ Party::MemberList::const_iterator it = members->begin();
+ const Party::MemberList::const_iterator
+ it_end = members->end();
+ while (it != it_end)
+ {
+ PartyMember *member = *it;
+ if (member && member->getMap() == curMap
+ && member->getOnline() && member != m)
+ {
+ if (userPalette)
+ {
+ graphics->setColor(userPalette->getColor(
+ UserPalette::PARTY));
+ }
+
+ const int offsetHeight = static_cast<int>(
+ mHeightProportion);
+ const int offsetWidth = static_cast<int>(
+ mWidthProportion);
+
+ graphics->fillRectangle(gcn::Rectangle(
+ static_cast<int>(member->getX()
+ * mWidthProportion) + mapOriginX - offsetWidth,
+ static_cast<int>(member->getY()
+ * mHeightProportion) + mapOriginY - offsetHeight,
+ 2, 2));
+ }
+ ++ it;
+ }
+ }
+ }
+ }
+
const Vector &pos = player_node->getPosition();
// logger->log("width:" + toString(graph->getWidth()));