diff options
author | Mattes D <github@xoft.cz> | 2014-07-29 17:48:56 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-07-29 17:48:56 +0200 |
commit | 30e64ed4d82c9ef9ac0797a443d07c3f62649b54 (patch) | |
tree | 32ff101a034c0af7d8b4067744b367fcc08e5751 /src/Root.cpp | |
parent | Merge pull request #1254 from mc-server/SingleTopBlockFinisher (diff) | |
parent | Detrailed whitespace (diff) | |
download | cuberite-30e64ed4d82c9ef9ac0797a443d07c3f62649b54.tar cuberite-30e64ed4d82c9ef9ac0797a443d07c3f62649b54.tar.gz cuberite-30e64ed4d82c9ef9ac0797a443d07c3f62649b54.tar.bz2 cuberite-30e64ed4d82c9ef9ac0797a443d07c3f62649b54.tar.lz cuberite-30e64ed4d82c9ef9ac0797a443d07c3f62649b54.tar.xz cuberite-30e64ed4d82c9ef9ac0797a443d07c3f62649b54.tar.zst cuberite-30e64ed4d82c9ef9ac0797a443d07c3f62649b54.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Root.cpp | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/Root.cpp b/src/Root.cpp index b03a13382..b65e9b067 100644 --- a/src/Root.cpp +++ b/src/Root.cpp @@ -312,13 +312,15 @@ void cRoot::LoadWorlds(cIniFile & IniFile) -cWorld * cRoot::CreateAndInitializeWorld(const AString & a_WorldName) +cWorld * cRoot::CreateAndInitializeWorld(const AString & a_WorldName, eDimension a_Dimension, const AString & a_OverworldName) { - if (m_WorldsByName[a_WorldName] != NULL) + cWorld * World = m_WorldsByName[a_WorldName]; + if (World != NULL) { - return NULL; + return World; } - cWorld* NewWorld = new cWorld(a_WorldName.c_str()); + + cWorld * NewWorld = new cWorld(a_WorldName.c_str(), a_Dimension, a_OverworldName); m_WorldsByName[a_WorldName] = NewWorld; NewWorld->Start(); NewWorld->InitializeSpawn(); @@ -370,7 +372,7 @@ void cRoot::UnloadWorlds(void) -cWorld* cRoot::GetDefaultWorld() +cWorld * cRoot::GetDefaultWorld() { return m_pDefaultWorld; } @@ -379,12 +381,19 @@ cWorld* cRoot::GetDefaultWorld() -cWorld* cRoot::GetWorld( const AString & a_WorldName) +cWorld * cRoot::GetWorld(const AString & a_WorldName, bool a_SearchForFolder) { - WorldMap::iterator itr = m_WorldsByName.find( a_WorldName); + WorldMap::iterator itr = m_WorldsByName.find(a_WorldName); if (itr != m_WorldsByName.end()) + { return itr->second; - return 0; + } + + if (a_SearchForFolder && cFile::IsFolder(FILE_IO_PREFIX + a_WorldName)) + { + return CreateAndInitializeWorld(a_WorldName); + } + return NULL; } @@ -396,9 +405,12 @@ bool cRoot::ForEachWorld(cWorldListCallback & a_Callback) for (WorldMap::iterator itr = m_WorldsByName.begin(), itr2 = itr; itr != m_WorldsByName.end(); itr = itr2) { ++itr2; - if (a_Callback.Item(itr->second)) + if (itr->second != NULL) { - return false; + if (a_Callback.Item(itr->second)) + { + return false; + } } } return true; |