summaryrefslogtreecommitdiff
path: root/src/common/permissionmanager.cpp
diff options
context:
space:
mode:
authorPhilipp Sehmisch <mana@crushnet.org>2010-01-17 18:57:49 +0100
committerPhilipp Sehmisch <mana@crushnet.org>2010-01-17 18:57:49 +0100
commita9a87aeafc34141fc64fb97cda7eea36e1ff6ccf (patch)
treed1bb217b7c2f65a8180ba8fefb0f61e32c49905d /src/common/permissionmanager.cpp
parent6836044c32b90828ea90c61ca4f6ad06d12db2fb (diff)
downloadmanaserv-a9a87aeafc34141fc64fb97cda7eea36e1ff6ccf.tar.gz
manaserv-a9a87aeafc34141fc64fb97cda7eea36e1ff6ccf.tar.bz2
manaserv-a9a87aeafc34141fc64fb97cda7eea36e1ff6ccf.tar.xz
manaserv-a9a87aeafc34141fc64fb97cda7eea36e1ff6ccf.zip
Some refractoring at the command handler for easier maintainability
Diffstat (limited to 'src/common/permissionmanager.cpp')
-rw-r--r--src/common/permissionmanager.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/common/permissionmanager.cpp b/src/common/permissionmanager.cpp
index 8966f11f..d7c1a7a2 100644
--- a/src/common/permissionmanager.cpp
+++ b/src/common/permissionmanager.cpp
@@ -18,6 +18,8 @@
* along with The Mana Server. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <cstring>
+
#include "common/permissionmanager.hpp"
#include "game-server/character.hpp"
@@ -160,3 +162,21 @@ unsigned char PermissionManager::getMaskFromAlias(const std::string &alias)
return i->second;
}
}
+
+std::list<std::string> PermissionManager::getPermissionList(const Character* character)
+{
+ std::list<std::string> result;
+ std::map<std::string, unsigned char>::iterator i;
+
+ unsigned char mask = character->getAccountLevel();
+
+ for (i = permissions.begin(); i != permissions.end(); i++)
+ {
+ if (i->second & mask)
+ {
+ result.push_back(i->first);
+ }
+ }
+
+ return result;
+}