Changeset 7625 for code/branches/releasetodo/src/orxonox/LevelManager.cc
- Timestamp:
- Nov 6, 2010, 8:17:20 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/releasetodo/src/orxonox/LevelManager.cc
r7614 r7625 59 59 ModifyConfigValue(defaultLevelName_, tset, CommandLineParser::getValue("level").getString()); 60 60 } 61 62 this->compileAvailableLevelList(); 61 63 } 62 64 … … 128 130 } 129 131 132 unsigned int LevelManager::getNumberOfLevels() 133 { 134 this->updateAvailableLevelList(); 135 136 COUT(0) << "Number of Levels: " << this->infos_.size() << std::endl; 137 138 return this->availableLevels_.size(); 139 } 140 130 141 const std::string& LevelManager::getAvailableLevelListItem(unsigned int index) const 131 142 { 132 if (index >= availableLevels_.size())143 if (index >= this->availableLevels_.size()) 133 144 return BLANKSTRING; 134 145 else 135 return availableLevels_[index]; 146 { 147 std::map<std::string, LevelInfoItem*>::const_iterator it = this->infos_.find(this->availableLevels_[index]); 148 assert(it->second); 149 return it->second->getName(); 150 } 136 151 } 137 152 138 153 void LevelManager::compileAvailableLevelList() 139 154 { 140 this->availableLevels_.clear();141 155 Ogre::StringVectorPtr levels = Resource::findResourceNames("*.oxw"); 156 // Iterate over all *.oxw level files. 142 157 for (Ogre::StringVector::const_iterator it = levels->begin(); it != levels->end(); ++it) 143 158 { 159 //TODO: Replace with tag, 144 160 if (it->find("old/") != 0) 145 161 { 146 162 size_t pos = it->find(".oxw"); 147 COUT(0) << *it << std::endl; 163 164 bool infoExists = false; 165 // Load the LevelInfo object from the level file. 148 166 XMLFile file = XMLFile(*it); 149 167 ClassTreeMask mask = ClassTreeMask(); … … 151 169 mask.include(ClassIdentifier<LevelInfo>::getIdentifier()); 152 170 Loader::load(&file, mask); 153 171 for(ObjectList<LevelInfo>::iterator item = ObjectList<LevelInfo>::begin(); item != ObjectList<LevelInfo>::end(); ++item) 172 { 173 LevelInfoItem* info = item->copy(); 174 COUT(0) << "BUUUUUUUUUH: " << info->getName() << " | " << info->getXMLFilename() << " | " << it->substr(0, pos) << std::endl; 175 if(info->getXMLFilename() == *it) 176 { 177 this->infos_.insert(std::pair<std::string, LevelInfoItem*>(it->substr(0, pos),info)); 178 infoExists = true; 179 } 180 } 181 Loader::unload(&file, mask); 182 if(!infoExists) 183 { 184 this->infos_.insert(std::pair<std::string, LevelInfoItem*>(it->substr(0, pos), new LevelInfoItem(it->substr(0, pos), *it))); 185 } 186 154 187 this->availableLevels_.push_back(it->substr(0, pos)); 155 188 } 156 189 } 190 } 157 191 192 void LevelManager::updateAvailableLevelList(void) 193 { 194 //TODO: Implement some kind of update? 158 195 } 159 196 }
Note: See TracChangeset
for help on using the changeset viewer.