libfalltergeist::MapFileType* ResourceManager::mapFileType(std::string filename) { auto item = dynamic_cast<libfalltergeist::MapFileType*>(datFileItem(filename)); if (item) { item->setCallback(&ResourceManager::proFileType); } return item; }
Game::GameLocation* ResourceManager::gameLocation(unsigned int number) { if (_gameLocations.find(number) != _gameLocations.end()) { return _gameLocations.at(number); } std::istream stream(datFileItem("data/maps.txt")); Ini::Parser iniParser(stream); auto ini = iniParser.parse(); std::stringstream ss; ss << "map " << std::setw(3) << std::setfill('0') << number; auto section = ini->section(ss.str()); if (!section) return 0; Game::GameLocation* location = new Game::GameLocation(); for (auto property : *section.get()) { std::string name = property.first; Logger::critical() << name << std::endl; if (name == "lookup_name") { location->setName(property.second.value()); } else if (name == "map_name") { location->setFilename("maps/" + property.second.value()+ ".map"); } else if (name == "music") { location->setMusic(property.second.value()); } else if (name == "pipboy_active") { location->setPipboy(property.second.boolValue()); } else if (name == "saved") { location->setSaveable(property.second.boolValue()); } } _gameLocations.insert(std::make_pair(number, location)); return _gameLocations.at(number); }
libfalltergeist::RixFileType* ResourceManager::rixFileType(std::string filename) { return dynamic_cast<libfalltergeist::RixFileType*>(datFileItem(filename)); }
libfalltergeist::Sve::File* ResourceManager::sveFileType(const std::string& filename) { return dynamic_cast<libfalltergeist::Sve::File*>(datFileItem(filename)); }