diff options
author | Didier 'OdyX' Raboud <didier@raboud.com> | 2013-10-30 17:27:05 +0100 |
---|---|---|
committer | Didier 'OdyX' Raboud <didier@raboud.com> | 2013-11-13 09:35:31 +0100 |
commit | 8f7f56f1eae2998b9431e07a3ed0ea7765eb19ba (patch) | |
tree | e52f756a4d4212cce2d9d8691b75ea43928348d5 /src/app | |
parent | 68d9a72357016206db6578e0137b3e8227865fbd (diff) | |
download | colobot-8f7f56f1eae2998b9431e07a3ed0ea7765eb19ba.tar.gz colobot-8f7f56f1eae2998b9431e07a3ed0ea7765eb19ba.tar.bz2 colobot-8f7f56f1eae2998b9431e07a3ed0ea7765eb19ba.zip |
On Mac OS X, write colobot.ini and savegames to Application Support directories
Diffstat (limited to 'src/app')
-rw-r--r-- | src/app/system.cpp | 4 | ||||
-rw-r--r-- | src/app/system_macosx.cpp | 60 | ||||
-rw-r--r-- | src/app/system_macosx.h | 36 |
3 files changed, 100 insertions, 0 deletions
diff --git a/src/app/system.cpp b/src/app/system.cpp index 2eb68ba..ce69469 100644 --- a/src/app/system.cpp +++ b/src/app/system.cpp @@ -25,6 +25,8 @@ #include "app/system_windows.h" #elif defined(PLATFORM_LINUX) #include "app/system_linux.h" +#elif defined(PLATFORM_MACOSX) + #include "app/system_macosx.h" #else #include "app/system_other.h" #endif @@ -48,6 +50,8 @@ CSystemUtils* CSystemUtils::Create() m_instance = new CSystemUtilsWindows(); #elif defined(PLATFORM_LINUX) m_instance = new CSystemUtilsLinux(); +#elif defined(PLATFORM_MACOSX) + m_instance = new CSystemUtilsMacOSX(); #else m_instance = new CSystemUtilsOther(); #endif diff --git a/src/app/system_macosx.cpp b/src/app/system_macosx.cpp new file mode 100644 index 0000000..8e9608c --- /dev/null +++ b/src/app/system_macosx.cpp @@ -0,0 +1,60 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2013, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU 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 General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +#include "app/system_macosx.h" + +#include "common/logger.h" + +#include <stdlib.h> + +#include <CoreServices/CoreServices.h> + +#include <boost/filesystem.hpp> + +void CSystemUtilsMacOSX::Init() +{ + // These functions are a deprecated way to get the 'Application Support' folder, but they do work, in plain C++ + FSRef ref; + OSType folderType = kApplicationSupportFolderType; + char path[PATH_MAX]; + FSFindFolder( kUserDomain, folderType, kCreateFolder, &ref ); + FSRefMakePath( &ref, reinterpret_cast<UInt8*>(&path), PATH_MAX ); + + m_ASPath = path; + m_ASPath.append("/colobot/"); + + // Make sure the directory exists + boost::filesystem::create_directories(m_ASPath.c_str()); +} + +std::string CSystemUtilsMacOSX::GetProfileFileLocation() +{ + std::string profileFile = m_ASPath + "/colobot.ini"; + + GetLogger()->Trace("Profile file is %s\n", profileFile.c_str()); + return profileFile; +} + +std::string CSystemUtilsMacOSX::GetSavegameDirectoryLocation() +{ + std::string savegameDir = m_ASPath + "/savegame"; + boost::filesystem::create_directories(savegameDir.c_str()); + GetLogger()->Trace("Saved game files are going to %s\n", savegameDir.c_str()); + + return savegameDir; +} + diff --git a/src/app/system_macosx.h b/src/app/system_macosx.h new file mode 100644 index 0000000..a5c1150 --- /dev/null +++ b/src/app/system_macosx.h @@ -0,0 +1,36 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU 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 General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +/** + * \file app/system_macosx.h + * \brief MacOSX-specific implementation of system functions + */ + +#include "app/system.h" +#include "app/system_other.h" + +class CSystemUtilsMacOSX : public CSystemUtilsOther +{ +public: + virtual void Init() override; + + virtual std::string GetProfileFileLocation() override; + virtual std::string GetSavegameDirectoryLocation() override; +private: + std::string m_ASPath; +}; + |