// BeamMP, the BeamNG.drive multiplayer mod. // Copyright (C) 2024 BeamMP Ltd., BeamMP team and contributors. // // BeamMP Ltd. can be contacted by electronic mail via contact@beammp.com. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published // by the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #include "TResourceManager.h" #include #include namespace fs = std::filesystem; TResourceManager::TResourceManager() { Application::SetSubsystemStatus("ResourceManager", Application::Status::Starting); std::string Path = Application::Settings.Resource + "/Client"; if (!fs::exists(Path)) fs::create_directories(Path); for (const auto& entry : fs::directory_iterator(Path)) { std::string File(entry.path().string()); if (auto pos = File.find(".zip"); pos != std::string::npos) { if (File.length() - pos == 4) { std::replace(File.begin(), File.end(), '\\', '/'); mFileList += File + ';'; if (auto i = File.find_last_of('/'); i != std::string::npos) { ++i; File = File.substr(i, pos - i); } mTrimmedList += "/" + fs::path(File).filename().string() + ';'; mFileSizes += std::to_string(size_t(fs::file_size(entry.path()))) + ';'; mMaxModSize += size_t(fs::file_size(entry.path())); mModsLoaded++; } } } if (mModsLoaded) { beammp_info("Loaded " + std::to_string(mModsLoaded) + " Mods"); } Application::SetSubsystemStatus("ResourceManager", Application::Status::Good); }