增加Data::Exists方法,判断数据是否存在
This commit is contained in:
		
							parent
							
								
									a67eefc0b4
								
							
						
					
					
						commit
						997aca7e6e
					
				|  | @ -106,7 +106,7 @@ void e2d::Renderer::EndDraw() | ||||||
| 
 | 
 | ||||||
| 			ThrowIfFailed( | 			ThrowIfFailed( | ||||||
| 				GetWriteFactory()->CreateTextLayout( | 				GetWriteFactory()->CreateTextLayout( | ||||||
| 				(const WCHAR *)fpsText, | 				(const wchar_t *)fpsText, | ||||||
| 					(UINT32)fpsText.GetLength(), | 					(UINT32)fpsText.GetLength(), | ||||||
| 					fps_text_format_, | 					fps_text_format_, | ||||||
| 					0, | 					0, | ||||||
|  |  | ||||||
|  | @ -323,7 +323,7 @@ void e2d::Text::CreateFormat() | ||||||
| 
 | 
 | ||||||
| 	ThrowIfFailed( | 	ThrowIfFailed( | ||||||
| 		Renderer::GetWriteFactory()->CreateTextFormat( | 		Renderer::GetWriteFactory()->CreateTextFormat( | ||||||
| 			(const WCHAR *)font_.family, | 			(const wchar_t *)font_.family, | ||||||
| 			nullptr, | 			nullptr, | ||||||
| 			DWRITE_FONT_WEIGHT(font_.weight), | 			DWRITE_FONT_WEIGHT(font_.weight), | ||||||
| 			font_.italic ? DWRITE_FONT_STYLE_ITALIC : DWRITE_FONT_STYLE_NORMAL, | 			font_.italic ? DWRITE_FONT_STYLE_ITALIC : DWRITE_FONT_STYLE_NORMAL, | ||||||
|  | @ -387,7 +387,7 @@ void e2d::Text::CreateLayout() | ||||||
| 	{ | 	{ | ||||||
| 		ThrowIfFailed( | 		ThrowIfFailed( | ||||||
| 			writeFactory->CreateTextLayout( | 			writeFactory->CreateTextLayout( | ||||||
| 				(const WCHAR *)text_, | 				(const wchar_t *)text_, | ||||||
| 				length, | 				length, | ||||||
| 				text_format_, | 				text_format_, | ||||||
| 				style_.wrap_width, | 				style_.wrap_width, | ||||||
|  | @ -406,7 +406,7 @@ void e2d::Text::CreateLayout() | ||||||
| 		// 为防止文本对齐问题,根据先创建 layout 以获取宽度
 | 		// 为防止文本对齐问题,根据先创建 layout 以获取宽度
 | ||||||
| 		ThrowIfFailed( | 		ThrowIfFailed( | ||||||
| 			writeFactory->CreateTextLayout( | 			writeFactory->CreateTextLayout( | ||||||
| 				(const WCHAR *)text_, | 				(const wchar_t *)text_, | ||||||
| 				length, | 				length, | ||||||
| 				text_format_, | 				text_format_, | ||||||
| 				0, | 				0, | ||||||
|  | @ -425,7 +425,7 @@ void e2d::Text::CreateLayout() | ||||||
| 		SafeRelease(text_layout_); | 		SafeRelease(text_layout_); | ||||||
| 		ThrowIfFailed( | 		ThrowIfFailed( | ||||||
| 			writeFactory->CreateTextLayout( | 			writeFactory->CreateTextLayout( | ||||||
| 				(const WCHAR *)text_, | 				(const wchar_t *)text_, | ||||||
| 				length, | 				length, | ||||||
| 				text_format_, | 				text_format_, | ||||||
| 				size_.width, | 				size_.width, | ||||||
|  |  | ||||||
|  | @ -8,80 +8,116 @@ e2d::Data::Data(const String & key, const String & field) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Data::SaveInt(int value) | bool e2d::Data::Exists() const | ||||||
| { | { | ||||||
| 	::WritePrivateProfileString( | 	wchar_t temp[256] = { 0 }; | ||||||
|  | 	::GetPrivateProfileStringW( | ||||||
|  | 		(LPCWSTR)field_, | ||||||
|  | 		(LPCWSTR)key_, | ||||||
|  | 		L"", | ||||||
|  | 		temp, | ||||||
|  | 		255, | ||||||
|  | 		(LPCWSTR)data_path_ | ||||||
|  | 	); | ||||||
|  | 	return temp[0] == L'\0'; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::Data::SaveInt(int value) | ||||||
|  | { | ||||||
|  | 	BOOL ret = ::WritePrivateProfileStringW( | ||||||
| 		(LPCWSTR)field_, | 		(LPCWSTR)field_, | ||||||
| 		(LPCWSTR)key_, | 		(LPCWSTR)key_, | ||||||
| 		(LPCWSTR)String::Parse(value), | 		(LPCWSTR)String::Parse(value), | ||||||
| 		(LPCWSTR)data_path_ | 		(LPCWSTR)data_path_ | ||||||
| 	); | 	); | ||||||
|  | 	return ret != 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Data::SaveDouble(float value) | bool e2d::Data::SaveFloat(float value) | ||||||
| { | { | ||||||
| 	::WritePrivateProfileString( | 	BOOL ret = ::WritePrivateProfileStringW( | ||||||
| 		(LPCWSTR)field_, | 		(LPCWSTR)field_, | ||||||
| 		(LPCWSTR)key_, | 		(LPCWSTR)key_, | ||||||
| 		(LPCWSTR)String::Parse(value), | 		(LPCWSTR)String::Parse(value), | ||||||
| 		(LPCWSTR)data_path_ | 		(LPCWSTR)data_path_ | ||||||
| 	); | 	); | ||||||
|  | 	return ret != 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Data::SaveBool(bool value) | bool e2d::Data::SaveDouble(double value) | ||||||
| { | { | ||||||
| 	::WritePrivateProfileString( | 	BOOL ret = ::WritePrivateProfileStringW( | ||||||
|  | 		(LPCWSTR)field_, | ||||||
|  | 		(LPCWSTR)key_, | ||||||
|  | 		(LPCWSTR)String::Parse(value), | ||||||
|  | 		(LPCWSTR)data_path_ | ||||||
|  | 	); | ||||||
|  | 	return ret != 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::Data::SaveBool(bool value) | ||||||
|  | { | ||||||
|  | 	BOOL ret = ::WritePrivateProfileStringW( | ||||||
| 		(LPCWSTR)field_, | 		(LPCWSTR)field_, | ||||||
| 		(LPCWSTR)key_, | 		(LPCWSTR)key_, | ||||||
| 		(value ? L"1" : L"0"), | 		(value ? L"1" : L"0"), | ||||||
| 		(LPCWSTR)data_path_ | 		(LPCWSTR)data_path_ | ||||||
| 	); | 	); | ||||||
|  | 	return ret != 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Data::SaveString(const String& value) | bool e2d::Data::SaveString(const String& value) | ||||||
| { | { | ||||||
| 	::WritePrivateProfileString( | 	BOOL ret = ::WritePrivateProfileStringW( | ||||||
| 		(LPCWSTR)field_, | 		(LPCWSTR)field_, | ||||||
| 		(LPCWSTR)key_, | 		(LPCWSTR)key_, | ||||||
| 		(LPCWSTR)value, | 		(LPCWSTR)value, | ||||||
| 		(LPCWSTR)data_path_ | 		(LPCWSTR)data_path_ | ||||||
| 	); | 	); | ||||||
|  | 	return ret != 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int e2d::Data::GetInt(int default_value) | int e2d::Data::GetInt() const | ||||||
| { | { | ||||||
| 	return ::GetPrivateProfileInt( | 	return ::GetPrivateProfileIntW( | ||||||
| 		(LPCWSTR)field_, | 		(LPCWSTR)field_, | ||||||
| 		(LPCWSTR)key_, | 		(LPCWSTR)key_, | ||||||
| 		default_value, | 		0, | ||||||
| 		(LPCWSTR)data_path_ | 		(LPCWSTR)data_path_ | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| float e2d::Data::GetDouble(float default_value) | float e2d::Data::GetFloat() const | ||||||
| { | { | ||||||
| 	wchar_t temp[32] = { 0 }; | 	wchar_t temp[32] = { 0 }; | ||||||
| 	::GetPrivateProfileString((LPCWSTR)field_, (LPCWSTR)key_, (LPCWSTR)String::Parse(default_value), temp, 31, (LPCWSTR)data_path_); | 	::GetPrivateProfileStringW((LPCWSTR)field_, (LPCWSTR)key_, L"0.0", temp, 31, (LPCWSTR)data_path_); | ||||||
| 	return std::stof(temp); | 	return std::stof(temp); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool e2d::Data::GetBool(bool default_value) | double e2d::Data::GetDouble() const | ||||||
| { | { | ||||||
| 	int nValue = ::GetPrivateProfileInt( | 	wchar_t temp[32] = { 0 }; | ||||||
|  | 	::GetPrivateProfileStringW((LPCWSTR)field_, (LPCWSTR)key_, L"0.0", temp, 31, (LPCWSTR)data_path_); | ||||||
|  | 	return std::stod(temp); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::Data::GetBool() const | ||||||
|  | { | ||||||
|  | 	int nValue = ::GetPrivateProfileIntW( | ||||||
| 		(LPCWSTR)field_, | 		(LPCWSTR)field_, | ||||||
| 		(LPCWSTR)key_, | 		(LPCWSTR)key_, | ||||||
| 		default_value ? 1 : 0, | 		0, | ||||||
| 		(LPCWSTR)data_path_); | 		(LPCWSTR)data_path_); | ||||||
| 	return nValue != 0; | 	return nValue != 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::String e2d::Data::GetString(const String& default_value) | e2d::String e2d::Data::GetString() | ||||||
| { | { | ||||||
| 	wchar_t temp[256] = { 0 }; | 	wchar_t temp[256] = { 0 }; | ||||||
| 	::GetPrivateProfileString( | 	::GetPrivateProfileStringW( | ||||||
| 		(LPCWSTR)field_, | 		(LPCWSTR)field_, | ||||||
| 		(LPCWSTR)key_, | 		(LPCWSTR)key_, | ||||||
| 		(LPCWSTR)default_value, | 		L"", | ||||||
| 		temp, | 		temp, | ||||||
| 		255, | 		255, | ||||||
| 		(LPCWSTR)data_path_ | 		(LPCWSTR)data_path_ | ||||||
|  |  | ||||||
|  | @ -56,7 +56,7 @@ const e2d::String& e2d::Path::GetLocalAppDataPath() | ||||||
| 	if (local_app_data_path.IsEmpty()) | 	if (local_app_data_path.IsEmpty()) | ||||||
| 	{ | 	{ | ||||||
| 		// 获取 AppData/Local 文件夹的路径
 | 		// 获取 AppData/Local 文件夹的路径
 | ||||||
| 		WCHAR path[MAX_PATH] = { 0 }; | 		wchar_t path[MAX_PATH] = { 0 }; | ||||||
| 		::SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path); | 		::SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path); | ||||||
| 		local_app_data_path = path; | 		local_app_data_path = path; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -370,49 +370,48 @@ public: | ||||||
| 		const String& field = L"Defalut"	/* 字段名称 */ | 		const String& field = L"Defalut"	/* 字段名称 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | 	// 该数据是否存在
 | ||||||
|  | 	bool Exists() const; | ||||||
|  | 
 | ||||||
| 	// 保存 int 类型的值
 | 	// 保存 int 类型的值
 | ||||||
| 	void SaveInt( | 	bool SaveInt( | ||||||
| 		int value							/* 数据 */ | 		int value | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 保存 float 类型的值
 | 	// 保存 float 类型的值
 | ||||||
| 	void SaveDouble( | 	bool SaveFloat( | ||||||
| 		float value						/* 数据 */ | 		float value | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 保存 double 类型的值
 | ||||||
|  | 	bool SaveDouble( | ||||||
|  | 		double value | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 保存 bool 类型的值
 | 	// 保存 bool 类型的值
 | ||||||
| 	void SaveBool( | 	bool SaveBool( | ||||||
| 		bool value							/* 数据 */ | 		bool value | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 保存 字符串 类型的值
 | 	// 保存 String 类型的值
 | ||||||
| 	void SaveString( | 	bool SaveString( | ||||||
| 		const String& value				/* 数据 */ | 		const String& value | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 获取 int 类型的值
 | 	// 获取 int 类型的值
 | ||||||
| 	// (若不存在则返回 default_value 参数的值)
 | 	int GetInt() const; | ||||||
| 	int GetInt( |  | ||||||
| 		int default_value					/* 默认值 */ |  | ||||||
| 	); |  | ||||||
| 
 | 
 | ||||||
| 	// 获取 float 类型的值
 | 	// 获取 float 类型的值
 | ||||||
| 	// (若不存在则返回 default_value 参数的值)
 | 	float GetFloat() const; | ||||||
| 	float GetDouble( | 
 | ||||||
| 		float default_value				/* 默认值 */ | 	// 获取 double 类型的值
 | ||||||
| 	); | 	double GetDouble() const; | ||||||
| 
 | 
 | ||||||
| 	// 获取 bool 类型的值
 | 	// 获取 bool 类型的值
 | ||||||
| 	// (若不存在则返回 default_value 参数的值)
 | 	bool GetBool() const; | ||||||
| 	bool GetBool( |  | ||||||
| 		bool default_value					/* 默认值 */ |  | ||||||
| 	); |  | ||||||
| 
 | 
 | ||||||
| 	// 获取 字符串 类型的值
 | 	// 获取 字符串 类型的值
 | ||||||
| 	// (若不存在则返回 default_value 参数的值)
 | 	String GetString(); | ||||||
| 	String GetString( |  | ||||||
| 		const String& default_value			/* 默认值 */ |  | ||||||
| 	); |  | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
| 	String key_; | 	String key_; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue