| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- #include "StdInc.h"
- #include "VCMIDirs.h"
- /*
- * VCMIDirs.cpp, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- static VCMIDirs VCMIDirsGlobal;
- VCMIDirs::VCMIDirs()
- {
- // initialize local directory and create folders to which VCMI needs write access
- boost::filesystem::create_directory(userDataPath());
- boost::filesystem::create_directory(userCachePath());
- boost::filesystem::create_directory(userConfigPath());
- boost::filesystem::create_directory(userSavePath());
- }
- VCMIDirs & VCMIDirs::get()
- {
- return VCMIDirsGlobal;
- }
- std::string VCMIDirs::userCachePath() const
- {
- return userDataPath();
- }
- std::string VCMIDirs::userConfigPath() const
- {
- return userDataPath() + "/config";
- }
- std::string VCMIDirs::userSavePath() const
- {
- return userDataPath() + "/Games";
- }
- std::vector<std::string> VCMIDirs::configPaths() const
- {
- return std::vector<std::string>(1, dataPaths()[0] + "/config");
- }
- //FIXME: find way to at least decrease size of this ifdef (along with cleanup in CMake)
- #if defined(_WIN32)
- std::string VCMIDirs::userDataPath() const
- {
- return dataPaths()[0];
- }
- std::string VCMIDirs::libraryPath() const
- {
- return userDataPath();
- }
- std::string VCMIDirs::clientPath() const
- {
- return userDataPath() + "\\" + "VCMI_client.exe";
- }
- std::string VCMIDirs::serverPath() const
- {
- return userDataPath() + "\\" + "VCMI_server.exe";
- }
- std::vector<std::string> VCMIDirs::dataPaths() const
- {
- return std::vector<std::string>(1, ".");
- }
- std::string VCMIDirs::libraryName(std::string basename) const
- {
- return basename + ".dll";
- }
- #elif defined(__APPLE__)
- std::string VCMIDirs::userDataPath() const
- {
- // This is Cocoa code that should be normally used to get path to Application Support folder but can't use it here for now...
- // NSArray* urls = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask];
- // UserPath = path([urls[0] path] + "/vcmi").string();
- // ...so here goes a bit of hardcode instead
- std::string home_dir = ".";
- if (getenv("HOME") != nullptr )
- home_dir = getenv("HOME");
- return boost::filesystem::path(home_dir + "/Library/Application Support/vcmi").string();
- }
- std::string VCMIDirs::libraryPath() const
- {
- return ".";
- }
- std::string VCMIDirs::clientPath() const
- {
- return "./vcmiclient";
- }
- std::string VCMIDirs::serverPath() const
- {
- return "./vcmiserver";
- }
- std::vector<std::string> VCMIDirs::dataPaths() const
- {
- return std::vector<std::string>(1, "../Data");
- }
- std::string VCMIDirs::libraryName(std::string basename) const
- {
- return "lib" + basename + ".dylib";
- }
- #else
- std::string VCMIDirs::userDataPath() const
- {
- if (getenv("HOME") != nullptr )
- return std::string(getenv("HOME")) + "/.vcmi";
- return ".";
- }
- std::string VCMIDirs::libraryPath() const
- {
- return M_LIB_DIR;
- }
- std::string VCMIDirs::clientPath() const
- {
- return std::string(M_BIN_DIR) + "/" + "vcmiclient";
- }
- std::string VCMIDirs::serverPath() const
- {
- return std::string(M_BIN_DIR) + "/" + "vcmiserver";
- }
- std::vector<std::string> VCMIDirs::dataPaths() const
- {
- return std::vector<std::string>(1, M_DATA_DIR);
- }
- std::string VCMIDirs::libraryName(std::string basename) const
- {
- return "lib" + basename + ".so";
- }
- #endif
|