From f4c04299961a96e153bf50e2e1fb92c8f9db77f5 Mon Sep 17 00:00:00 2001 From: Simon Pribylski <66266021+Persson-dev@users.noreply.github.com> Date: Mon, 24 Jan 2022 21:24:55 +0100 Subject: Add player permission level (#5358) --- src/Entities/Player.cpp | 81 ++++++++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 34 deletions(-) (limited to 'src/Entities/Player.cpp') diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index de4acc806..30650a6d0 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -1567,7 +1567,7 @@ void cPlayer::PermuteEnchantmentSeed() -bool cPlayer::HasPermission(const AString & a_Permission) +bool cPlayer::HasPermission(const AString & a_Permission) const { if (a_Permission.empty()) { @@ -1786,7 +1786,7 @@ void cPlayer::TossPickup(const cItem & a_Item) void cPlayer::LoadFromDisk() { - LoadRank(); + RefreshRank(); Json::Value Root; const auto & UUID = GetUUID(); @@ -2295,39 +2295,11 @@ void cPlayer::UpdateMovementStats(const Vector3d & a_DeltaPos, bool a_PreviousIs void cPlayer::LoadRank(void) { - const auto & UUID = GetUUID(); - cRankManager * RankMgr = cRoot::Get()->GetRankManager(); - - // Load the values from cRankManager: - m_Rank = RankMgr->GetPlayerRankName(UUID); - if (m_Rank.empty()) - { - m_Rank = RankMgr->GetDefaultRank(); - } - else - { - // Update the name: - RankMgr->UpdatePlayerName(UUID, GetName()); - } - m_Permissions = RankMgr->GetPlayerPermissions(UUID); - m_Restrictions = RankMgr->GetPlayerRestrictions(UUID); - RankMgr->GetRankVisuals(m_Rank, m_MsgPrefix, m_MsgSuffix, m_MsgNameColorCode); + // Update our permissions: + RefreshRank(); - // Break up the individual permissions on each dot, into m_SplitPermissions: - m_SplitPermissions.clear(); - m_SplitPermissions.reserve(m_Permissions.size()); - for (auto & Permission: m_Permissions) - { - m_SplitPermissions.push_back(StringSplit(Permission, ".")); - } // for Permission - m_Permissions[] - - // Break up the individual restrictions on each dot, into m_SplitRestrictions: - m_SplitRestrictions.clear(); - m_SplitRestrictions.reserve(m_Restrictions.size()); - for (auto & Restriction: m_Restrictions) - { - m_SplitRestrictions.push_back(StringSplit(Restriction, ".")); - } // for itr - m_Restrictions[] + // Send a permission level update: + m_ClientHandle->SendPlayerPermissionLevel(); } @@ -2808,6 +2780,47 @@ void cPlayer::TickFreezeCode() +void cPlayer::RefreshRank() +{ + const auto & UUID = GetUUID(); + cRankManager * RankMgr = cRoot::Get()->GetRankManager(); + + // Load the values from cRankManager: + m_Rank = RankMgr->GetPlayerRankName(UUID); + if (m_Rank.empty()) + { + m_Rank = RankMgr->GetDefaultRank(); + } + else + { + // Update the name: + RankMgr->UpdatePlayerName(UUID, GetName()); + } + m_Permissions = RankMgr->GetPlayerPermissions(UUID); + m_Restrictions = RankMgr->GetPlayerRestrictions(UUID); + RankMgr->GetRankVisuals(m_Rank, m_MsgPrefix, m_MsgSuffix, m_MsgNameColorCode); + + // Break up the individual permissions on each dot, into m_SplitPermissions: + m_SplitPermissions.clear(); + m_SplitPermissions.reserve(m_Permissions.size()); + for (auto & Permission : m_Permissions) + { + m_SplitPermissions.push_back(StringSplit(Permission, ".")); + } + + // Break up the individual restrictions on each dot, into m_SplitRestrictions: + m_SplitRestrictions.clear(); + m_SplitRestrictions.reserve(m_Restrictions.size()); + for (auto & Restriction : m_Restrictions) + { + m_SplitRestrictions.push_back(StringSplit(Restriction, ".")); + } +} + + + + + void cPlayer::ApplyArmorDamage(int a_DamageBlocked) { short ArmorDamage = static_cast(std::max(a_DamageBlocked / 4, 1)); -- cgit v1.2.3