summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/onlineplayer.h6
-rw-r--r--src/gui/windows/whoisonline.cpp16
-rw-r--r--src/net/eathena/playerrecv.cpp2
-rw-r--r--src/net/tmwa/playerrecv.cpp5
4 files changed, 22 insertions, 7 deletions
diff --git a/src/gui/onlineplayer.h b/src/gui/onlineplayer.h
index 0b41cebec..219a473da 100644
--- a/src/gui/onlineplayer.h
+++ b/src/gui/onlineplayer.h
@@ -35,11 +35,13 @@ class OnlinePlayer final
const unsigned char status,
const signed char level,
const GenderT gender,
- const signed char version) :
+ const signed char version,
+ const unsigned char group) :
mNick(nick),
mText(),
mStatus(status),
mLevel(level),
+ mGroup(group),
mVersion(version),
mGender(gender),
mIsGM(false)
@@ -80,6 +82,8 @@ class OnlinePlayer final
signed char mLevel;
+ unsigned char mGroup;
+
signed char mVersion;
GenderT mGender;
diff --git a/src/gui/windows/whoisonline.cpp b/src/gui/windows/whoisonline.cpp
index 37dbf2a89..bc16397ed 100644
--- a/src/gui/windows/whoisonline.cpp
+++ b/src/gui/windows/whoisonline.cpp
@@ -55,6 +55,8 @@
#include "net/playerhandler.h"
#include "net/serverfeatures.h"
+#include "resources/db/groupdb.h"
+
#include "utils/foreach.h"
#include "utils/gettext.h"
#include "utils/sdlhelper.h"
@@ -471,7 +473,7 @@ void WhoIsOnline::loadWebList()
OnlinePlayer *const player = new OnlinePlayer(nick,
CAST_U8(255), level,
- Gender::UNSPECIFIED, -1);
+ Gender::UNSPECIFIED, -1, 0);
mOnlinePlayers.insert(player);
mOnlineNicks.insert(nick);
@@ -870,8 +872,15 @@ void OnlinePlayer::setText(std::string color)
}
}
- if ((mStatus != 255 && ((mStatus & BeingFlag::GM) != 0)) || mIsGM)
+ if (GroupDb::getShowBadge(mGroup))
+ {
+ const std::string name = GroupDb::getName(mGroup);
+ mText.append(strprintf("(%s) ", name.c_str()));
+ }
+ else if ((mStatus != 255 && ((mStatus & BeingFlag::GM) != 0)) || mIsGM)
+ {
mText.append("(GM) ");
+ }
if (mLevel > 0)
mText.append(strprintf("%d", mLevel));
@@ -881,6 +890,9 @@ void OnlinePlayer::setText(std::string color)
else if (mGender == Gender::MALE)
mText.append("\u2642");
+ if (GroupDb::getHighlightName(mGroup) && color == "0")
+ color = "2";
+
if (mStatus > 0 && mStatus != 255)
{
if ((mStatus & BeingFlag::SHOP) != 0)
diff --git a/src/net/eathena/playerrecv.cpp b/src/net/eathena/playerrecv.cpp
index da3e35a0d..51abbfdc3 100644
--- a/src/net/eathena/playerrecv.cpp
+++ b/src/net/eathena/playerrecv.cpp
@@ -481,7 +481,7 @@ void PlayerRecv::processOnlineList(Net::MessageIn &msg)
gender = Gender::FEMALE;
}
arr.push_back(new OnlinePlayer(static_cast<const char*>(buf),
- status, level, gender, ver));
+ status, level, gender, ver, 0));
buf += strlen(buf) + 1;
}
diff --git a/src/net/tmwa/playerrecv.cpp b/src/net/tmwa/playerrecv.cpp
index 530621637..d088c3c54 100644
--- a/src/net/tmwa/playerrecv.cpp
+++ b/src/net/tmwa/playerrecv.cpp
@@ -232,12 +232,11 @@ void PlayerRecv::processOnlineList(Net::MessageIn &msg)
default:
break;
}
- if (GroupDb::getShowBadge(group))
- status |= BeingFlag::GM;
+
if (!config.getBoolValue("showgender"))
gender = Gender::UNSPECIFIED;
arr.push_back(new OnlinePlayer(name,
- status, level, gender, 0));
+ status, level, gender, 0, group));
if (actorManager)
actorManager->updateNameId(name, beingId);
}