From 869cb1c660310140f02a0b3804e02a2f3c4a0326 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 13 Feb 2018 05:24:46 +0300 Subject: Add support for show clan badge. But for now clan unset for players. --- src/being/being.cpp | 28 ++++++++++++++++++++++++++++ src/being/being.h | 9 +++++++++ src/enums/being/badgeindex.h | 1 + src/resources/db/badgesdb.cpp | 11 +++++++++++ src/resources/db/badgesdb.h | 2 ++ 5 files changed, 51 insertions(+) (limited to 'src') diff --git a/src/being/being.cpp b/src/being/being.cpp index da67becda..bb921f92f 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -173,6 +173,7 @@ Being::Being(const BeingId id, mRaceName(), mPartyName(), mGuildName(), + mClanName(), mSpeech(), mDispName(nullptr), mNameColor(nullptr), @@ -1201,6 +1202,33 @@ void Being::setGuildName(const std::string &restrict name) restrict2 } } +void Being::showClanBadge(const bool show) restrict2 +{ + delete2(mBadges[BadgeIndex::Clan]); + if (show && + !mClanName.empty() && + mShowBadges != BadgeDrawType::Hide) + { + const std::string badge = BadgesDB::getClanBadge(mClanName); + if (!badge.empty()) + { + mBadges[BadgeIndex::Clan] = AnimatedSprite::load( + paths.getStringValue("badges") + badge, + 0); + } + } +} + +void Being::setClanName(const std::string &restrict name) restrict2 +{ + if (mClanName != name) + { + mClanName = name; + showClanBadge(!mClanName.empty()); + updateBadgesCount(); + } +} + void Being::setGuildPos(const std::string &restrict pos A_UNUSED) restrict2 { } diff --git a/src/being/being.h b/src/being/being.h index 4e672ef52..fe8bb4c6a 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -259,6 +259,10 @@ class Being notfinal : public ActorSprite, A_WARN_UNUSED { return mGuildName; } + const std::string &getClanName() const restrict2 noexcept2 + A_WARN_UNUSED + { return mClanName; } + /** * Sets the name of the primary guild the being is in. Shown in * BeingPopup (eventually). @@ -267,6 +271,8 @@ class Being notfinal : public ActorSprite, void setGuildPos(const std::string &restrict pos) restrict2; + void setClanName(const std::string &restrict name) restrict2; + /** * Adds a guild to the being. */ @@ -1055,6 +1061,8 @@ class Being notfinal : public ActorSprite, void showGuildBadge(const bool show) restrict2; + void showClanBadge(const bool show) restrict2; + void showGmBadge(const bool show) restrict2; void showPartyBadge(const bool show) restrict2; @@ -1178,6 +1186,7 @@ class Being notfinal : public ActorSprite, std::string mRaceName; std::string mPartyName; std::string mGuildName; + std::string mClanName; std::string mSpeech; /** diff --git a/src/enums/being/badgeindex.h b/src/enums/being/badgeindex.h index dd50625fd..1455120b1 100644 --- a/src/enums/being/badgeindex.h +++ b/src/enums/being/badgeindex.h @@ -34,6 +34,7 @@ enum2Start(BadgeIndex) Guild = 6, Party = 7, Name = 8, + Clan = 9, BadgeIndexSize } diff --git a/src/resources/db/badgesdb.cpp b/src/resources/db/badgesdb.cpp index aff03fc4f..4a9ded0d8 100644 --- a/src/resources/db/badgesdb.cpp +++ b/src/resources/db/badgesdb.cpp @@ -35,6 +35,7 @@ namespace BadgesInfos mGuilds; BadgesInfos mNames; BadgesInfos mParties; + BadgesInfos mClans; bool mLoaded = false; } // namespace @@ -78,12 +79,14 @@ void BadgesDB::load() loadDB("guild", mGuilds); loadDB("name", mNames); loadDB("party", mParties); + loadDB("clan", mClans); } void BadgesDB::unload() { logger->log1("Unloading Badges database..."); mParties.clear(); + mClans.clear(); mGuilds.clear(); mNames.clear(); mLoaded = false; @@ -112,3 +115,11 @@ const std::string BadgesDB::getGuildBadge(const std::string &name) return std::string(); return (*it).second; } + +const std::string BadgesDB::getClanBadge(const std::string &name) +{ + const BadgesInfosIter it = mClans.find(name); + if (it == mClans.end()) + return std::string(); + return (*it).second; +} diff --git a/src/resources/db/badgesdb.h b/src/resources/db/badgesdb.h index 6c5a94fab..78db3c113 100644 --- a/src/resources/db/badgesdb.h +++ b/src/resources/db/badgesdb.h @@ -40,6 +40,8 @@ namespace BadgesDB const std::string getNameBadge(const std::string &name); const std::string getPartyBadge(const std::string &name); + + const std::string getClanBadge(const std::string &name); } // namespace BadgesDB #endif // RESOURCES_DB_BADGESDB_H -- cgit v1.2.3-60-g2f50