diff options
author | Philipp Sehmisch <mana@crushnet.org> | 2010-01-17 18:57:49 +0100 |
---|---|---|
committer | Philipp Sehmisch <mana@crushnet.org> | 2010-01-17 18:57:49 +0100 |
commit | a9a87aeafc34141fc64fb97cda7eea36e1ff6ccf (patch) | |
tree | d1bb217b7c2f65a8180ba8fefb0f61e32c49905d /src/common/permissionmanager.cpp | |
parent | 6836044c32b90828ea90c61ca4f6ad06d12db2fb (diff) | |
download | manaserv-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.cpp | 20 |
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; +} |