diff options
author | Tycho <work.tycho+git@gmail.com> | 2014-03-01 18:48:44 +0100 |
---|---|---|
committer | Tycho <work.tycho+git@gmail.com> | 2014-03-01 18:48:44 +0100 |
commit | 0d26e81ab56f7a945af23034878e0487aa65800f (patch) | |
tree | 2acb54403850d8225d9d445e97ede81fe12c5934 /src/GroupManager.cpp | |
parent | Final implementation of MetaRotater (diff) | |
parent | Merge pull request #735 from xdot/master (diff) | |
download | cuberite-0d26e81ab56f7a945af23034878e0487aa65800f.tar cuberite-0d26e81ab56f7a945af23034878e0487aa65800f.tar.gz cuberite-0d26e81ab56f7a945af23034878e0487aa65800f.tar.bz2 cuberite-0d26e81ab56f7a945af23034878e0487aa65800f.tar.lz cuberite-0d26e81ab56f7a945af23034878e0487aa65800f.tar.xz cuberite-0d26e81ab56f7a945af23034878e0487aa65800f.tar.zst cuberite-0d26e81ab56f7a945af23034878e0487aa65800f.zip |
Diffstat (limited to 'src/GroupManager.cpp')
-rw-r--r-- | src/GroupManager.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/GroupManager.cpp b/src/GroupManager.cpp index 723b86f94..33b601e82 100644 --- a/src/GroupManager.cpp +++ b/src/GroupManager.cpp @@ -46,6 +46,7 @@ cGroupManager::cGroupManager() LOGD("-- Loading Groups --"); LoadGroups(); + CheckUsers(); LOGD("-- Groups Successfully Loaded --"); } @@ -54,6 +55,53 @@ cGroupManager::cGroupManager() +void cGroupManager::GenerateDefaultUsersIni(cIniFile & a_IniFile) +{ + LOGWARN("Regenerating users.ini, all users will be reset"); + a_IniFile.AddHeaderComment(" This file stores the players' groups."); + a_IniFile.AddHeaderComment(" The format is:"); + a_IniFile.AddHeaderComment(" [PlayerName]"); + a_IniFile.AddHeaderComment(" Groups = GroupName1, GroupName2, ..."); + + a_IniFile.WriteFile("users.ini"); +} + + + + + +void cGroupManager::CheckUsers(void) +{ + cIniFile IniFile; + if (!IniFile.ReadFile("users.ini")) + { + GenerateDefaultUsersIni(IniFile); + return; + } + + unsigned int NumKeys = IniFile.GetNumKeys(); + for (size_t i = 0; i < NumKeys; i++) + { + AString Player = IniFile.GetKeyName( i ); + AString Groups = IniFile.GetValue(Player, "Groups", ""); + if (!Groups.empty()) + { + AStringVector Split = StringSplit( Groups, "," ); + for( unsigned int i = 0; i < Split.size(); i++ ) + { + if (!ExistsGroup(Split[i])) + { + LOGWARNING("The group %s for player %s was not found!", Split[i].c_str(), Player.c_str()); + } + } + } + } +} + + + + + void cGroupManager::LoadGroups() { cIniFile IniFile; @@ -137,6 +185,16 @@ void cGroupManager::LoadGroups() +bool cGroupManager::ExistsGroup( const AString & a_Name ) +{ + GroupMap::iterator itr = m_pState->Groups.find( a_Name ); + return ( itr != m_pState->Groups.end() ); +} + + + + + cGroup* cGroupManager::GetGroup( const AString & a_Name ) { GroupMap::iterator itr = m_pState->Groups.find( a_Name ); |