增加Path类初始化
This commit is contained in:
		
							parent
							
								
									245a6c6e71
								
							
						
					
					
						commit
						fca3ba9f25
					
				|  | @ -56,17 +56,22 @@ bool e2d::Game::init(String sGameName) | ||||||
| 	if (!Music::__init()) | 	if (!Music::__init()) | ||||||
| 	{ | 	{ | ||||||
| 		WARN_IF(true, "Music::__init Failed!"); | 		WARN_IF(true, "Music::__init Failed!"); | ||||||
| 		goto music_fail; | 		Music::__uninit(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// ±£´æÓÎÏ·Ãû³Æ
 | ||||||
|  | 	s_sGameName = sGameName; | ||||||
|  | 
 | ||||||
|  | 	// ³õʼ»¯Â·¾¶
 | ||||||
|  | 	if (!Path::__init()) | ||||||
|  | 	{ | ||||||
|  | 		WARN_IF(true, "Path::__init Failed!"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// 初始化成功
 | 	// 初始化成功
 | ||||||
| 	s_sGameName = sGameName; |  | ||||||
| 	s_bInitialized = true; | 	s_bInitialized = true; | ||||||
| 	goto succeeded; | 	goto succeeded; | ||||||
| 
 | 
 | ||||||
| music_fail: |  | ||||||
| 	Music::__uninit(); |  | ||||||
| 
 |  | ||||||
| input_fail: | input_fail: | ||||||
| 	Input::__uninit(); | 	Input::__uninit(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -9,11 +9,15 @@ | ||||||
| DEFINE_KNOWN_FOLDER(FOLDERID_LocalAppData, 0xF1B32785, 0x6FBA, 0x4FCF, 0x9D, 0x55, 0x7B, 0x8E, 0x7F, 0x15, 0x70, 0x91); | DEFINE_KNOWN_FOLDER(FOLDERID_LocalAppData, 0xF1B32785, 0x6FBA, 0x4FCF, 0x9D, 0x55, 0x7B, 0x8E, 0x7F, 0x15, 0x70, 0x91); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| e2d::String e2d::Path::getLocalAppDataPath() | static e2d::String s_sLocalAppDataPath; | ||||||
|  | static e2d::String s_sTempPath; | ||||||
|  | static e2d::String s_sDefaultSavePath; | ||||||
|  | 
 | ||||||
|  | bool e2d::Path::__init() | ||||||
| { | { | ||||||
|  | 	// 获取 AppData\Local 文件夹的路径
 | ||||||
| 	typedef HRESULT(WINAPI* pFunSHGetKnownFolderPath)(const GUID& rfid, DWORD dwFlags, HANDLE hToken, PWSTR *ppszPath); | 	typedef HRESULT(WINAPI* pFunSHGetKnownFolderPath)(const GUID& rfid, DWORD dwFlags, HANDLE hToken, PWSTR *ppszPath); | ||||||
| 
 | 
 | ||||||
| 	// 获取 AppData\Local 文件夹的路径
 |  | ||||||
| 	PWSTR pszPath = NULL; | 	PWSTR pszPath = NULL; | ||||||
| 	HMODULE hModule = LoadLibrary(L"shell32.dll"); | 	HMODULE hModule = LoadLibrary(L"shell32.dll"); | ||||||
| 	pFunSHGetKnownFolderPath SHGetKnownFolderPath = (pFunSHGetKnownFolderPath)GetProcAddress(hModule, "SHGetKnownFolderPath"); | 	pFunSHGetKnownFolderPath SHGetKnownFolderPath = (pFunSHGetKnownFolderPath)GetProcAddress(hModule, "SHGetKnownFolderPath"); | ||||||
|  | @ -21,77 +25,108 @@ e2d::String e2d::Path::getLocalAppDataPath() | ||||||
| 
 | 
 | ||||||
| 	if (SUCCEEDED(hr)) | 	if (SUCCEEDED(hr)) | ||||||
| 	{ | 	{ | ||||||
| 		String path = pszPath; | 		s_sLocalAppDataPath = pszPath; | ||||||
| 		CoTaskMemFree(pszPath); | 		CoTaskMemFree(pszPath); | ||||||
| 		return path; |  | ||||||
| 	} | 	} | ||||||
| 	return L""; | 	else | ||||||
|  | 	{ | ||||||
|  | 		WARN_IF(true, "Cannot get local AppData path!"); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// 获取游戏名称
 | ||||||
|  | 	String sGameName = Game::getName(); | ||||||
|  | 	 | ||||||
|  | 	// 获取默认保存路径
 | ||||||
|  | 	bool bInitSavePath = false; | ||||||
|  | 	do | ||||||
|  | 	{ | ||||||
|  | 		String localAppPath = s_sLocalAppDataPath; | ||||||
|  | 		if (localAppPath.isEmpty()) | ||||||
|  | 		{ | ||||||
|  | 
 | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			s_sDefaultSavePath = localAppPath; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		localAppPath << L"\\Easy2DGameData"; | ||||||
|  | 		if (Path::createFolder(localAppPath)) | ||||||
|  | 		{ | ||||||
|  | 			s_sDefaultSavePath = localAppPath; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (!sGameName.isEmpty()) | ||||||
|  | 		{ | ||||||
|  | 			localAppPath << L"\\" << sGameName; | ||||||
|  | 			// 创建文件夹
 | ||||||
|  | 			if (Path::createFolder(localAppPath)) | ||||||
|  | 			{ | ||||||
|  | 				s_sDefaultSavePath = localAppPath; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		s_sDefaultSavePath << L"\\"; | ||||||
|  | 		bInitSavePath = true; | ||||||
|  | 	} while (0); | ||||||
|  | 
 | ||||||
|  | 	// 获取临时文件目录
 | ||||||
|  | 	bool bInitTempPath = false; | ||||||
|  | 	do | ||||||
|  | 	{ | ||||||
|  | 		wchar_t path[_MAX_PATH]; | ||||||
|  | 		if (0 == ::GetTempPath(_MAX_PATH, path)) | ||||||
|  | 		{ | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			s_sTempPath = path; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// 创建临时文件目录
 | ||||||
|  | 		String tempPath; | ||||||
|  | 		tempPath << s_sTempPath << L"\\Easy2DGameTemp"; | ||||||
|  | 		// 创建文件夹
 | ||||||
|  | 		if (Path::createFolder(tempPath)) | ||||||
|  | 		{ | ||||||
|  | 			s_sTempPath = path; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (!sGameName.isEmpty()) | ||||||
|  | 		{ | ||||||
|  | 			tempPath << L"\\" << sGameName; | ||||||
|  | 			// 创建文件夹
 | ||||||
|  | 			if (Path::createFolder(tempPath)) | ||||||
|  | 			{ | ||||||
|  | 				s_sTempPath = tempPath; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		s_sTempPath << L"\\"; | ||||||
|  | 		bInitTempPath = true; | ||||||
|  | 	} while (0); | ||||||
|  | 
 | ||||||
|  | 	return SUCCEEDED(hr) && bInitSavePath && bInitTempPath; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::String e2d::Path::getTempPath() | e2d::String e2d::Path::getTempPath() | ||||||
| { | { | ||||||
| 	// 获取临时文件目录
 | 	return s_sTempPath; | ||||||
| 	wchar_t path[_MAX_PATH]; |  | ||||||
| 	if (0 == ::GetTempPath(_MAX_PATH, path)) |  | ||||||
| 	{ |  | ||||||
| 		return L""; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	// 创建临时文件目录
 |  | ||||||
| 	e2d::String tempFilePath; |  | ||||||
| 	tempFilePath << path << L"Easy2DGameTemp\\"; |  | ||||||
| 	// 创建文件夹
 |  | ||||||
| 	if (!Path::createFolder(tempFilePath)) |  | ||||||
| 	{ |  | ||||||
| 		return path; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	// 获取游戏名称
 |  | ||||||
| 	String sGameName = Game::getName(); |  | ||||||
| 	if (!sGameName.isEmpty()) |  | ||||||
| 	{ |  | ||||||
| 		// 创建文件夹
 |  | ||||||
| 		if (!Path::createFolder(tempFilePath + sGameName + L"\\")) |  | ||||||
| 		{ |  | ||||||
| 			return std::move(tempFilePath); |  | ||||||
| 		} |  | ||||||
| 		tempFilePath << sGameName << L"\\"; |  | ||||||
| 	} |  | ||||||
| 	return std::move(tempFilePath); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::String e2d::Path::getDefaultSavePath() | e2d::String e2d::Path::getDefaultSavePath() | ||||||
| { | { | ||||||
| 	// 获取 AppData 路径
 | 	return s_sDefaultSavePath; | ||||||
| 	String path = Path::getLocalAppDataPath(); |  | ||||||
| 
 |  | ||||||
| 	if (path.isEmpty()) |  | ||||||
| 	{ |  | ||||||
| 		WARN_IF(true, "Cannot get local AppData path!"); |  | ||||||
| 		return std::move(path); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	// 创建文件夹
 |  | ||||||
| 	if (!Path::createFolder(path + L"\\Easy2DGameData")) |  | ||||||
| 	{ |  | ||||||
| 		return std::move(path); |  | ||||||
| 	} |  | ||||||
| 	path << L"\\Easy2DGameData"; |  | ||||||
| 
 |  | ||||||
| 	// 获取游戏名称
 |  | ||||||
| 	String sGameName = Game::getName(); |  | ||||||
| 	if (!sGameName.isEmpty()) |  | ||||||
| 	{ |  | ||||||
| 		// 创建文件夹
 |  | ||||||
| 		if (!Path::createFolder(path + L"\\" + sGameName)) |  | ||||||
| 		{ |  | ||||||
| 			return std::move(path); |  | ||||||
| 		} |  | ||||||
| 		path << L"\\" << sGameName; |  | ||||||
| 	} |  | ||||||
| 	path << L"\\"; |  | ||||||
| 	 |  | ||||||
| 	return std::move(path); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::String e2d::Path::getFileExtension(String filePath) | e2d::String e2d::Path::getFileExtension(String filePath) | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ class Game | ||||||
| public: | public: | ||||||
| 	// 初始化游戏
 | 	// 初始化游戏
 | ||||||
| 	static bool init( | 	static bool init( | ||||||
| 		String sGameName = L"E2DGame" /* 游戏英文名称 */ | 		String sGameName = L"" /* 游戏英文名称 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 启动游戏
 | 	// 启动游戏
 | ||||||
|  |  | ||||||
|  | @ -292,16 +292,15 @@ public: | ||||||
| // 路径工具
 | // 路径工具
 | ||||||
| class Path | class Path | ||||||
| { | { | ||||||
|  | 	friend Game; | ||||||
|  | 
 | ||||||
| public: | public: | ||||||
| 	// 获取系统的 AppData Local 路径
 | 	// 获取数据的默认保存路径
 | ||||||
| 	static String getLocalAppDataPath(); | 	static String getDefaultSavePath(); | ||||||
| 
 | 
 | ||||||
| 	// 获取临时文件目录
 | 	// 获取临时文件目录
 | ||||||
| 	static String getTempPath(); | 	static String getTempPath(); | ||||||
| 
 | 
 | ||||||
| 	// 获取数据的默认保存路径
 |  | ||||||
| 	static String getDefaultSavePath(); |  | ||||||
| 
 |  | ||||||
| 	// 获取文件扩展名
 | 	// 获取文件扩展名
 | ||||||
| 	static String getFileExtension( | 	static String getFileExtension( | ||||||
| 		String filePath | 		String filePath | ||||||
|  | @ -317,6 +316,10 @@ public: | ||||||
| 	static bool createFolder( | 	static bool createFolder( | ||||||
| 		String strDirPath	/* 文件夹路径 */ | 		String strDirPath	/* 文件夹路径 */ | ||||||
| 	); | 	); | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  | 	// 初始化
 | ||||||
|  | 	static bool __init(); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue