summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2018-02-13 20:17:00 +0300
committerAndrei Karas <akaras@inbox.ru>2018-02-13 20:17:00 +0300
commit69238eddfc6374ad54a63f14fd29fd7b4dfbba48 (patch)
tree49929dd811a18050b4322bc32f37185e95b5666d /src
parent201b3842582979ec23f611e8cf7bc0f433ac44e5 (diff)
downloadmanaplus-69238eddfc6374ad54a63f14fd29fd7b4dfbba48.tar.gz
manaplus-69238eddfc6374ad54a63f14fd29fd7b4dfbba48.tar.bz2
manaplus-69238eddfc6374ad54a63f14fd29fd7b4dfbba48.tar.xz
manaplus-69238eddfc6374ad54a63f14fd29fd7b4dfbba48.zip
Store clan names into each player being.
Diffstat (limited to 'src')
-rw-r--r--src/net/eathena/beingrecv.cpp18
-rw-r--r--src/resources/claninfo.h2
-rw-r--r--src/resources/db/clandb.cpp4
3 files changed, 24 insertions, 0 deletions
diff --git a/src/net/eathena/beingrecv.cpp b/src/net/eathena/beingrecv.cpp
index f2b02b05c..313c2872b 100644
--- a/src/net/eathena/beingrecv.cpp
+++ b/src/net/eathena/beingrecv.cpp
@@ -56,7 +56,10 @@
#include "net/eathena/sp.h"
#include "net/eathena/sprite.h"
+#include "resources/claninfo.h"
#include "resources/iteminfo.h"
+
+#include "resources/db/clandb.h"
#include "resources/db/itemdb.h"
#include "resources/map/map.h"
@@ -1771,6 +1774,9 @@ void BeingRecv::processBeingAttrs(Net::MessageIn &msg)
int language = -1;
if (serverVersion >= 17 && len > 14)
language = msg.readInt16("language");
+ int clanId = 0;
+ if (len > 16)
+ clanId = msg.readInt32("clan id");
if (dstBeing != nullptr)
{
if (serverVersion <= 17 ||
@@ -1784,6 +1790,18 @@ void BeingRecv::processBeingAttrs(Net::MessageIn &msg)
}
dstBeing->setHorse(mount);
dstBeing->setLanguageId(language);
+ if (clanId != 0)
+ {
+ const ClanInfo *const info = ClanDb::get(clanId);
+ if (info == nullptr)
+ dstBeing->setClanName(std::string());
+ else
+ dstBeing->setClanName(info->name);
+ }
+ else
+ {
+ dstBeing->setClanName(std::string());
+ }
if (dstBeing == localPlayer)
PlayerInfo::setServerLanguage(language);
}
diff --git a/src/resources/claninfo.h b/src/resources/claninfo.h
index fd96ecf51..2e85eed15 100644
--- a/src/resources/claninfo.h
+++ b/src/resources/claninfo.h
@@ -31,12 +31,14 @@ struct ClanInfo final
{
ClanInfo() :
stats(),
+ name(),
id(0)
{ }
A_DELETE_COPY(ClanInfo)
STD_VECTOR<std::string> stats;
+ std::string name;
int id;
};
diff --git a/src/resources/db/clandb.cpp b/src/resources/db/clandb.cpp
index e4cf691dd..c613067e3 100644
--- a/src/resources/db/clandb.cpp
+++ b/src/resources/db/clandb.cpp
@@ -31,6 +31,7 @@
#include "utils/checkutils.h"
#include "utils/dtor.h"
+#include "utils/gettext.h"
#include "utils/itemxmlutils.h"
#include "debug.h"
@@ -96,6 +97,9 @@ void ClanDb::loadXmlFile(const std::string &fileName,
clanInfo = new ClanInfo;
clanInfo->id = id;
+ clanInfo->name = XML::langProperty(
+ // TRANSLATORS: unknown clan name
+ clanNode, "name", _("unnamed"));
readItemStatsVector(clanInfo->stats,
clanNode,