From 5525260f78c1fcab1887cdc95ebcc6790fb34b5b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 13 Jul 2017 20:50:34 +0300 Subject: Allow use different badges for each group in groups.xml --- src/being/being.cpp | 2 +- src/resources/db/groupdb.cpp | 14 ++++++++++++++ src/resources/db/groupdb.h | 7 ++++--- src/resources/groupinfo.h | 2 ++ 4 files changed, 21 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/being/being.cpp b/src/being/being.cpp index 147be14a4..56f22a1d5 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -3504,7 +3504,7 @@ void Being::showGmBadge(const bool show) restrict2 mShowBadges != 0u && GroupDb::getShowBadge(mGroupId)) { - const std::string gmBadge = paths.getStringValue("gmbadge"); + const std::string gmBadge = GroupDb::getBadge(mGroupId); if (!gmBadge.empty()) { mBadges[BadgeIndex::Gm] = AnimatedSprite::load( diff --git a/src/resources/db/groupdb.cpp b/src/resources/db/groupdb.cpp index c65406841..bd78e117c 100644 --- a/src/resources/db/groupdb.cpp +++ b/src/resources/db/groupdb.cpp @@ -96,6 +96,9 @@ void GroupDb::loadXmlFile(const std::string &fileName, mGroups[id].longName = XML::langProperty(node, "longName", ""); + mGroups[id].badge = XML::langProperty(node, + "badge", + paths.getStringValue("gmbadge")); mGroups[id].showBadge = XML::getBoolProperty(node, "showBadge", false); @@ -142,6 +145,17 @@ bool GroupDb::getShowBadge(const int id) return (*it).second.showBadge; } +const std::string &GroupDb::getBadge(const int id) +{ + GroupInfos::const_iterator it = mGroups.find(id); + if (it == mGroups.end()) + { + reportAlways("Unknown group id requested: %d", id); + return mEmptyGroup.badge; + } + return (*it).second.badge; +} + #ifdef UNITTESTS GroupDb::GroupInfos &GroupDb::getGroups() { diff --git a/src/resources/db/groupdb.h b/src/resources/db/groupdb.h index 4e687dea9..3db3b1921 100644 --- a/src/resources/db/groupdb.h +++ b/src/resources/db/groupdb.h @@ -38,9 +38,10 @@ namespace GroupDb void loadXmlFile(const std::string &fileName, const SkipError skipError); - const std::string &getName(const int id); - const std::string &getLongName(const int id); - bool getShowBadge(const int id); + const std::string &getName(const int id) A_WARN_UNUSED; + const std::string &getLongName(const int id) A_WARN_UNUSED; + bool getShowBadge(const int id) A_WARN_UNUSED; + const std::string &getBadge(const int id) A_WARN_UNUSED; typedef std::map GroupInfos; diff --git a/src/resources/groupinfo.h b/src/resources/groupinfo.h index 59a79a9bd..973249d19 100644 --- a/src/resources/groupinfo.h +++ b/src/resources/groupinfo.h @@ -30,6 +30,7 @@ struct GroupInfo final GroupInfo() : name(), longName(), + badge(), showBadge(false) { } @@ -37,6 +38,7 @@ struct GroupInfo final std::string name; std::string longName; + std::string badge; bool showBadge; }; -- cgit v1.2.3-60-g2f50