2018-04-21 21:24:46 +08:00
|
|
|
|
#include "..\e2dtool.h"
|
2018-03-28 17:56:04 +08:00
|
|
|
|
#include <algorithm>
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
|
2018-07-04 12:49:05 +08:00
|
|
|
|
extern "C" const GUID DECLSPEC_SELECTANY FOLDERID_LocalAppData = {
|
|
|
|
|
|
0xF1B32785, 0x6FBA, 0x4FCF, { 0x9D, 0x55, 0x7B, 0x8E, 0x7F, 0x15, 0x70, 0x91 }
|
|
|
|
|
|
};
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
|
2018-07-04 17:00:21 +08:00
|
|
|
|
e2d::String e2d::Path::getDataPath()
|
|
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
static String dataPath;
|
|
|
|
|
|
if (dataPath.isEmpty())
|
2018-07-04 17:00:21 +08:00
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵı<DDB5><C4B1><EFBFBD>·<EFBFBD><C2B7>
|
|
|
|
|
|
String localAppDataPath = Path::getLocalAppDataPath();
|
2018-07-07 11:00:41 +08:00
|
|
|
|
String gameName = Game::getInstance()->getConfig()->getGameName();
|
2018-07-04 17:00:21 +08:00
|
|
|
|
if (!localAppDataPath.isEmpty() && !gameName.isEmpty())
|
|
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
dataPath = localAppDataPath + L"\\Easy2DGameData\\" << gameName << L"\\";
|
2018-07-04 17:00:21 +08:00
|
|
|
|
|
2018-07-08 02:41:44 +08:00
|
|
|
|
File file(dataPath);
|
|
|
|
|
|
if (!file.exists() && !File::createFolder(dataPath))
|
2018-07-04 17:00:21 +08:00
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
dataPath = L"";
|
2018-07-04 17:00:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-07-08 02:41:44 +08:00
|
|
|
|
dataPath << L"Data.ini";
|
2018-07-04 17:00:21 +08:00
|
|
|
|
}
|
2018-07-08 02:41:44 +08:00
|
|
|
|
return dataPath;
|
2018-07-04 17:00:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-04-26 21:47:56 +08:00
|
|
|
|
e2d::String e2d::Path::getTempPath()
|
|
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
static String tempPath;
|
|
|
|
|
|
if (tempPath.isEmpty())
|
2018-07-04 17:00:21 +08:00
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
|
|
|
|
|
wchar_t path[_MAX_PATH];
|
2018-07-07 11:00:41 +08:00
|
|
|
|
String gameName = Game::getInstance()->getConfig()->getGameName();
|
2018-07-04 17:00:21 +08:00
|
|
|
|
|
|
|
|
|
|
if (0 != ::GetTempPath(_MAX_PATH, path) && !gameName.isEmpty())
|
|
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
tempPath << path << L"\\Easy2DGameTemp\\" << gameName << L"\\";
|
2018-07-04 17:00:21 +08:00
|
|
|
|
|
2018-07-08 02:41:44 +08:00
|
|
|
|
File file(tempPath);
|
|
|
|
|
|
if (!file.exists() && !File::createFolder(tempPath))
|
2018-07-04 17:00:21 +08:00
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
tempPath = L"";
|
2018-07-04 17:00:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-07-08 02:41:44 +08:00
|
|
|
|
return tempPath;
|
2018-07-04 12:49:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
e2d::String e2d::Path::getLocalAppDataPath()
|
|
|
|
|
|
{
|
|
|
|
|
|
static String localAppDataPath;
|
|
|
|
|
|
if (localAppDataPath.isEmpty())
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><>ȡ AppData/Local <20>ļ<EFBFBD><C4BC>е<EFBFBD>·<EFBFBD><C2B7>
|
|
|
|
|
|
typedef HRESULT(WINAPI* pFunSHGetKnownFolderPath)(const GUID& rfid, DWORD dwFlags, HANDLE hToken, PWSTR *ppszPath);
|
|
|
|
|
|
|
|
|
|
|
|
PWSTR pszPath = nullptr;
|
|
|
|
|
|
HMODULE hModule = LoadLibrary(L"shell32.dll");
|
|
|
|
|
|
pFunSHGetKnownFolderPath SHGetKnownFolderPath = (pFunSHGetKnownFolderPath)GetProcAddress(hModule, "SHGetKnownFolderPath");
|
|
|
|
|
|
HRESULT hr = SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, nullptr, &pszPath);
|
|
|
|
|
|
|
|
|
|
|
|
if (SUCCEEDED(hr))
|
|
|
|
|
|
{
|
|
|
|
|
|
localAppDataPath = pszPath;
|
|
|
|
|
|
CoTaskMemFree(pszPath);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return localAppDataPath;
|
2018-04-26 21:47:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-07-04 12:49:05 +08:00
|
|
|
|
e2d::String e2d::Path::getCurrentFilePath()
|
2018-05-24 15:47:38 +08:00
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
static String currFilePath;
|
|
|
|
|
|
if (currFilePath.isEmpty())
|
2018-05-24 15:47:38 +08:00
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
TCHAR szPath[_MAX_PATH] = { 0 };
|
|
|
|
|
|
if (::GetModuleFileName(nullptr, szPath, _MAX_PATH) != 0)
|
2018-05-24 15:47:38 +08:00
|
|
|
|
{
|
2018-07-08 02:41:44 +08:00
|
|
|
|
currFilePath = szPath;
|
2018-05-24 15:47:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-07-08 02:41:44 +08:00
|
|
|
|
return currFilePath;
|
2018-05-24 14:33:16 +08:00
|
|
|
|
}
|