vs2010 supported
This commit is contained in:
		
							parent
							
								
									32126a723a
								
							
						
					
					
						commit
						1fb8d761e6
					
				|  | @ -29,7 +29,7 @@ e2d::ActionSequence::ActionSequence(int number, Action * action1, ...) : | ||||||
| 
 | 
 | ||||||
| e2d::ActionSequence::~ActionSequence() | e2d::ActionSequence::~ActionSequence() | ||||||
| { | { | ||||||
| 	for (auto action : m_vActions) | 	FOR_LOOP(action, m_vActions) | ||||||
| 	{ | 	{ | ||||||
| 		SafeRelease(&action); | 		SafeRelease(&action); | ||||||
| 	} | 	} | ||||||
|  | @ -41,7 +41,7 @@ void e2d::ActionSequence::_init() | ||||||
| 	// ½«ËùÓж¯×÷ÓëÄ¿±ê°ó¶¨
 | 	// ½«ËùÓж¯×÷ÓëÄ¿±ê°ó¶¨
 | ||||||
| 	if (m_pTarget) | 	if (m_pTarget) | ||||||
| 	{ | 	{ | ||||||
| 		for (auto action : m_vActions) | 		FOR_LOOP(action, m_vActions) | ||||||
| 		{ | 		{ | ||||||
| 			action->m_pTarget = m_pTarget; | 			action->m_pTarget = m_pTarget; | ||||||
| 		} | 		} | ||||||
|  | @ -74,7 +74,7 @@ void e2d::ActionSequence::_update() | ||||||
| void e2d::ActionSequence::reset() | void e2d::ActionSequence::reset() | ||||||
| { | { | ||||||
| 	Action::reset(); | 	Action::reset(); | ||||||
| 	for (auto action : m_vActions) | 	FOR_LOOP(action, m_vActions) | ||||||
| 	{ | 	{ | ||||||
| 		action->reset(); | 		action->reset(); | ||||||
| 	} | 	} | ||||||
|  | @ -83,7 +83,7 @@ void e2d::ActionSequence::reset() | ||||||
| 
 | 
 | ||||||
| void e2d::ActionSequence::_resetTime() | void e2d::ActionSequence::_resetTime() | ||||||
| { | { | ||||||
| 	for (auto action : m_vActions) | 	FOR_LOOP(action, m_vActions) | ||||||
| 	{ | 	{ | ||||||
| 		action->_resetTime(); | 		action->_resetTime(); | ||||||
| 	} | 	} | ||||||
|  | @ -124,7 +124,7 @@ void e2d::ActionSequence::add(int number, Action * action, ...) | ||||||
| e2d::ActionSequence * e2d::ActionSequence::clone() const | e2d::ActionSequence * e2d::ActionSequence::clone() const | ||||||
| { | { | ||||||
| 	auto a = new ActionSequence(); | 	auto a = new ActionSequence(); | ||||||
| 	for (auto action : m_vActions) | 	FOR_LOOP(action, m_vActions) | ||||||
| 	{ | 	{ | ||||||
| 		a->add(action->clone()); | 		a->add(action->clone()); | ||||||
| 	} | 	} | ||||||
|  | @ -134,7 +134,7 @@ e2d::ActionSequence * e2d::ActionSequence::clone() const | ||||||
| e2d::ActionSequence * e2d::ActionSequence::reverse(bool actionReverse) const | e2d::ActionSequence * e2d::ActionSequence::reverse(bool actionReverse) const | ||||||
| { | { | ||||||
| 	auto a = new ActionSequence(); | 	auto a = new ActionSequence(); | ||||||
| 	for (auto action : m_vActions) | 	FOR_LOOP(action, m_vActions) | ||||||
| 	{ | 	{ | ||||||
| 		if (actionReverse) | 		if (actionReverse) | ||||||
| 		{ | 		{ | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ e2d::Animation::Animation(double interval, int number, Image * frame, ...) | ||||||
| 
 | 
 | ||||||
| e2d::Animation::~Animation() | e2d::Animation::~Animation() | ||||||
| { | { | ||||||
| 	for (auto frame : m_vFrames) | 	FOR_LOOP(frame, m_vFrames) | ||||||
| 	{ | 	{ | ||||||
| 		SafeRelease(&frame); | 		SafeRelease(&frame); | ||||||
| 	} | 	} | ||||||
|  | @ -148,7 +148,7 @@ void e2d::Animation::add(int number, Image * frame, ...) | ||||||
| e2d::Animation * e2d::Animation::clone() const | e2d::Animation * e2d::Animation::clone() const | ||||||
| { | { | ||||||
| 	auto a = new Animation(m_fInterval); | 	auto a = new Animation(m_fInterval); | ||||||
| 	for (auto frame : m_vFrames) | 	FOR_LOOP(frame, m_vFrames) | ||||||
| 	{ | 	{ | ||||||
| 		a->add(frame); | 		a->add(frame); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ | ||||||
| #include "..\emanagers.h" | #include "..\emanagers.h" | ||||||
| 
 | 
 | ||||||
| #pragma comment(lib, "dinput8.lib") | #pragma comment(lib, "dinput8.lib") | ||||||
| #pragma comment(lib, "dxguid.lib") |  | ||||||
| 
 | 
 | ||||||
| using namespace e2d; | using namespace e2d; | ||||||
| 
 | 
 | ||||||
|  | @ -142,14 +141,14 @@ void Input::__updateDeviceState() | ||||||
| 	ScreenToClient(Window::getHWnd(), &s_MousePosition); | 	ScreenToClient(Window::getHWnd(), &s_MousePosition); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool Input::isKeyDown(KeyCode nKeyCode) | bool Input::isKeyDown(int nKeyCode) | ||||||
| { | { | ||||||
| 	if (s_KeyBuffer[static_cast<int>(nKeyCode)] & 0x80) | 	if (s_KeyBuffer[static_cast<int>(nKeyCode)] & 0x80) | ||||||
| 		return true; | 		return true; | ||||||
| 	return false; | 	return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool Input::isKeyPress(KeyCode nKeyCode) | bool Input::isKeyPress(int nKeyCode) | ||||||
| { | { | ||||||
| 	if ((s_KeyBuffer[static_cast<int>(nKeyCode)] & 0x80) &&  | 	if ((s_KeyBuffer[static_cast<int>(nKeyCode)] & 0x80) &&  | ||||||
| 		!(s_KeyRecordBuffer[static_cast<int>(nKeyCode)] & 0x80)) | 		!(s_KeyRecordBuffer[static_cast<int>(nKeyCode)] & 0x80)) | ||||||
|  | @ -157,7 +156,7 @@ bool Input::isKeyPress(KeyCode nKeyCode) | ||||||
| 	return false; | 	return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool Input::isKeyRelease(KeyCode nKeyCode) | bool Input::isKeyRelease(int nKeyCode) | ||||||
| { | { | ||||||
| 	if (!(s_KeyBuffer[static_cast<int>(nKeyCode)] & 0x80) &&  | 	if (!(s_KeyBuffer[static_cast<int>(nKeyCode)] & 0x80) &&  | ||||||
| 		(s_KeyRecordBuffer[static_cast<int>(nKeyCode)] & 0x80)) | 		(s_KeyRecordBuffer[static_cast<int>(nKeyCode)] & 0x80)) | ||||||
|  |  | ||||||
|  | @ -1,4 +1,24 @@ | ||||||
| #include "..\ebase.h" | #include "..\ebase.h" | ||||||
|  | 
 | ||||||
|  | // 上一帧与当前帧的时间间隔
 | ||||||
|  | static int s_nInterval = 0; | ||||||
|  | // 游戏开始时长
 | ||||||
|  | static double s_fTotalTime = 0; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | double e2d::Time::getTotalTime() | ||||||
|  | { | ||||||
|  | 	return s_fTotalTime; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int e2d::Time::getDeltaTime() | ||||||
|  | { | ||||||
|  | 	return s_nInterval; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 
 | ||||||
| #include <thread> | #include <thread> | ||||||
| #include <chrono> | #include <chrono> | ||||||
| using namespace std::chrono; | using namespace std::chrono; | ||||||
|  | @ -12,24 +32,10 @@ static steady_clock::time_point s_tNow; | ||||||
| static steady_clock::time_point s_tFixedUpdate; | static steady_clock::time_point s_tFixedUpdate; | ||||||
| // 上一次更新时间
 | // 上一次更新时间
 | ||||||
| static steady_clock::time_point s_tLastUpdate; | static steady_clock::time_point s_tLastUpdate; | ||||||
| // 上一帧与当前帧的时间间隔
 |  | ||||||
| static int s_nInterval = 0; |  | ||||||
| // 游戏开始时长
 |  | ||||||
| static double s_fTotalTime = 0; |  | ||||||
| // 每一帧间隔
 | // 每一帧间隔
 | ||||||
| static milliseconds s_tExceptedInvertal; | static milliseconds s_tExceptedInvertal; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| double e2d::Time::getTotalTime() |  | ||||||
| { |  | ||||||
| 	return s_fTotalTime; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int e2d::Time::getDeltaTime() |  | ||||||
| { |  | ||||||
| 	return s_nInterval; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool e2d::Time::__init() | bool e2d::Time::__init() | ||||||
| { | { | ||||||
| 	s_tStart = s_tLastUpdate = s_tFixedUpdate = s_tNow = steady_clock::now(); | 	s_tStart = s_tLastUpdate = s_tFixedUpdate = s_tNow = steady_clock::now(); | ||||||
|  | @ -73,3 +79,73 @@ void e2d::Time::__sleep() | ||||||
| 		std::this_thread::sleep_for(milliseconds(nWaitMS)); | 		std::this_thread::sleep_for(milliseconds(nWaitMS)); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include <mmsystem.h> | ||||||
|  | #pragma comment(lib, "winmm.lib") | ||||||
|  | 
 | ||||||
|  | // 时钟频率
 | ||||||
|  | static LARGE_INTEGER s_tFreq; | ||||||
|  | // 游戏开始时间
 | ||||||
|  | static LARGE_INTEGER s_tStart; | ||||||
|  | // 当前时间
 | ||||||
|  | static LARGE_INTEGER s_tNow; | ||||||
|  | // 上一帧刷新时间
 | ||||||
|  | static LARGE_INTEGER s_tFixedUpdate; | ||||||
|  | // 上一次更新时间
 | ||||||
|  | static LARGE_INTEGER s_tLastUpdate; | ||||||
|  | // 每一帧间隔
 | ||||||
|  | static LONGLONG s_tExceptedInvertal; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | bool e2d::Time::__init() | ||||||
|  | { | ||||||
|  | 	::timeBeginPeriod(1);					// 修改时间精度
 | ||||||
|  | 	::QueryPerformanceFrequency(&s_tFreq);	// 获取时钟频率
 | ||||||
|  | 	::QueryPerformanceCounter(&s_tNow);		// 刷新当前时间
 | ||||||
|  | 	s_tStart = s_tLastUpdate = s_tFixedUpdate = s_tNow; | ||||||
|  | 	s_tExceptedInvertal = 17LL * s_tFreq.QuadPart / 1000LL; | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Time::__uninit() | ||||||
|  | { | ||||||
|  | 	::timeEndPeriod(1);	// 重置时间精度
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::Time::__isReady() | ||||||
|  | { | ||||||
|  | 	return s_tExceptedInvertal < (s_tNow.QuadPart - s_tFixedUpdate.QuadPart); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Time::__updateNow() | ||||||
|  | { | ||||||
|  | 	::QueryPerformanceCounter(&s_tNow); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Time::__updateLast() | ||||||
|  | { | ||||||
|  | 	s_tFixedUpdate.QuadPart += s_tExceptedInvertal; | ||||||
|  | 	s_tLastUpdate = s_tNow; | ||||||
|  | 
 | ||||||
|  | 	::QueryPerformanceCounter(&s_tNow); | ||||||
|  | 	s_nInterval = static_cast<int>((s_tNow.QuadPart - s_tLastUpdate.QuadPart) * 1000LL / s_tFreq.QuadPart); | ||||||
|  | 	s_fTotalTime = static_cast<double>(s_tNow.QuadPart - s_tStart.QuadPart) / s_tFreq.QuadPart; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Time::__sleep() | ||||||
|  | { | ||||||
|  | 	// 计算挂起时长
 | ||||||
|  | 	int nWaitMS = 16 - static_cast<int>((s_tNow.QuadPart - s_tFixedUpdate.QuadPart) * 1000LL / s_tFreq.QuadPart); | ||||||
|  | 	// 挂起线程,释放 CPU 占用
 | ||||||
|  | 	if (nWaitMS > 1) | ||||||
|  | 	{ | ||||||
|  | 		::Sleep(nWaitMS); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | @ -202,9 +202,9 @@ bool e2d::Image::preload(String fileName) | ||||||
| 
 | 
 | ||||||
| void e2d::Image::clearCache() | void e2d::Image::clearCache() | ||||||
| { | { | ||||||
| 	for (auto child : s_mBitmapsFromFile) | 	for (auto child = s_mBitmapsFromFile.begin(); child != s_mBitmapsFromFile.end(); child++) | ||||||
| 	{ | 	{ | ||||||
| 		SafeReleaseInterface(&child.second); | 		SafeReleaseInterface(&(*child).second); | ||||||
| 	} | 	} | ||||||
| 	s_mBitmapsFromFile.clear(); | 	s_mBitmapsFromFile.clear(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -46,6 +46,39 @@ e2d::String & e2d::String::operator=(const char *cstr) | ||||||
| 	return (*this); | 	return (*this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | e2d::String e2d::String::parse(int value) | ||||||
|  | { | ||||||
|  | 	String tmp; | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 	tmp.m_str = std::to_wstring(value); | ||||||
|  | #else | ||||||
|  | 	tmp.m_str = std::to_wstring(static_cast<long long>(value)); | ||||||
|  | #endif | ||||||
|  | 	return std::move(tmp); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | e2d::String e2d::String::parse(float value) | ||||||
|  | { | ||||||
|  | 	String tmp; | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 	tmp.m_str = std::to_wstring(value); | ||||||
|  | #else | ||||||
|  | 	tmp.m_str = std::to_wstring(static_cast<long double>(value)); | ||||||
|  | #endif | ||||||
|  | 	return std::move(tmp); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | e2d::String e2d::String::parse(double value) | ||||||
|  | { | ||||||
|  | 	String tmp; | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 	tmp.m_str = std::to_wstring(value); | ||||||
|  | #else | ||||||
|  | 	tmp.m_str = std::to_wstring(static_cast<long double>(value)); | ||||||
|  | #endif | ||||||
|  | 	return std::move(tmp); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| e2d::String & e2d::String::format(const char * format, ...) | e2d::String & e2d::String::format(const char * format, ...) | ||||||
| { | { | ||||||
| 	std::string tmp; | 	std::string tmp; | ||||||
|  | @ -266,25 +299,19 @@ e2d::String & e2d::String::operator<<(char * cstr) | ||||||
| 
 | 
 | ||||||
| e2d::String & e2d::String::operator<<(int value) | e2d::String & e2d::String::operator<<(int value) | ||||||
| { | { | ||||||
| 	(*this) += String::toString(value); | 	(*this) += String::parse(value); | ||||||
| 	return (*this); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| e2d::String & e2d::String::operator<<(unsigned int value) |  | ||||||
| { |  | ||||||
| 	(*this) += String::toString(value); |  | ||||||
| 	return (*this); | 	return (*this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::String & e2d::String::operator<<(float value) | e2d::String & e2d::String::operator<<(float value) | ||||||
| { | { | ||||||
| 	(*this) += String::toString(value); | 	(*this) += String::parse(value); | ||||||
| 	return (*this); | 	return (*this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::String & e2d::String::operator<<(double value) | e2d::String & e2d::String::operator<<(double value) | ||||||
| { | { | ||||||
| 	(*this) += String::toString(value); | 	(*this) += String::parse(value); | ||||||
| 	return (*this); | 	return (*this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ void e2d::ActionManager::__add(Action * pAction) | ||||||
| { | { | ||||||
| 	if (pAction) | 	if (pAction) | ||||||
| 	{ | 	{ | ||||||
| 		for (const auto action : s_vActions) | 		FOR_LOOP(action, s_vActions) | ||||||
| 		{ | 		{ | ||||||
| 			if (action == pAction) | 			if (action == pAction) | ||||||
| 			{ | 			{ | ||||||
|  | @ -76,7 +76,7 @@ void e2d::ActionManager::__resumeAllBindedWith(Node * pTargetNode) | ||||||
| { | { | ||||||
| 	if (pTargetNode) | 	if (pTargetNode) | ||||||
| 	{ | 	{ | ||||||
| 		for (auto action : s_vRunningActions) | 		FOR_LOOP(action, s_vRunningActions) | ||||||
| 		{ | 		{ | ||||||
| 			if (action->getTarget() == pTargetNode) | 			if (action->getTarget() == pTargetNode) | ||||||
| 			{ | 			{ | ||||||
|  | @ -90,7 +90,7 @@ void e2d::ActionManager::__pauseAllBindedWith(Node * pTargetNode) | ||||||
| { | { | ||||||
| 	if (pTargetNode) | 	if (pTargetNode) | ||||||
| 	{ | 	{ | ||||||
| 		for (auto action : s_vRunningActions) | 		FOR_LOOP(action, s_vRunningActions) | ||||||
| 		{ | 		{ | ||||||
| 			if (action->getTarget() == pTargetNode) | 			if (action->getTarget() == pTargetNode) | ||||||
| 			{ | 			{ | ||||||
|  | @ -104,7 +104,7 @@ void e2d::ActionManager::__stopAllBindedWith(Node * pTargetNode) | ||||||
| { | { | ||||||
| 	if (pTargetNode) | 	if (pTargetNode) | ||||||
| 	{ | 	{ | ||||||
| 		for (auto action : s_vRunningActions) | 		FOR_LOOP(action, s_vRunningActions) | ||||||
| 		{ | 		{ | ||||||
| 			if (action->getTarget() == pTargetNode) | 			if (action->getTarget() == pTargetNode) | ||||||
| 			{ | 			{ | ||||||
|  | @ -116,7 +116,7 @@ void e2d::ActionManager::__stopAllBindedWith(Node * pTargetNode) | ||||||
| 
 | 
 | ||||||
| void e2d::ActionManager::resume(String strActionName) | void e2d::ActionManager::resume(String strActionName) | ||||||
| { | { | ||||||
| 	for (auto action : s_vRunningActions) | 	FOR_LOOP(action, s_vRunningActions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getName() == strActionName) | 		if (action->getName() == strActionName) | ||||||
| 		{ | 		{ | ||||||
|  | @ -127,7 +127,7 @@ void e2d::ActionManager::resume(String strActionName) | ||||||
| 
 | 
 | ||||||
| void e2d::ActionManager::pause(String strActionName) | void e2d::ActionManager::pause(String strActionName) | ||||||
| { | { | ||||||
| 	for (auto action : s_vRunningActions) | 	FOR_LOOP(action, s_vRunningActions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getName() == strActionName) | 		if (action->getName() == strActionName) | ||||||
| 		{ | 		{ | ||||||
|  | @ -138,7 +138,7 @@ void e2d::ActionManager::pause(String strActionName) | ||||||
| 
 | 
 | ||||||
| void e2d::ActionManager::stop(String strActionName) | void e2d::ActionManager::stop(String strActionName) | ||||||
| { | { | ||||||
| 	for (auto action : s_vRunningActions) | 	FOR_LOOP(action, s_vRunningActions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getName() == strActionName) | 		if (action->getName() == strActionName) | ||||||
| 		{ | 		{ | ||||||
|  | @ -169,7 +169,7 @@ void e2d::ActionManager::__clearAllBindedWith(Node * pTargetNode) | ||||||
| 
 | 
 | ||||||
| void e2d::ActionManager::resumeAll() | void e2d::ActionManager::resumeAll() | ||||||
| { | { | ||||||
| 	for (auto child : SceneManager::getCurrentScene()->getRoot()->getChildren()) | 	FOR_LOOP(child, SceneManager::getCurrentScene()->getRoot()->getChildren()) | ||||||
| 	{ | 	{ | ||||||
| 		ActionManager::__resumeAllBindedWith(child); | 		ActionManager::__resumeAllBindedWith(child); | ||||||
| 	} | 	} | ||||||
|  | @ -177,7 +177,7 @@ void e2d::ActionManager::resumeAll() | ||||||
| 
 | 
 | ||||||
| void e2d::ActionManager::pauseAll() | void e2d::ActionManager::pauseAll() | ||||||
| { | { | ||||||
| 	for (auto child : SceneManager::getCurrentScene()->getRoot()->getChildren()) | 	FOR_LOOP(child, SceneManager::getCurrentScene()->getRoot()->getChildren()) | ||||||
| 	{ | 	{ | ||||||
| 		ActionManager::__pauseAllBindedWith(child); | 		ActionManager::__pauseAllBindedWith(child); | ||||||
| 	} | 	} | ||||||
|  | @ -185,7 +185,7 @@ void e2d::ActionManager::pauseAll() | ||||||
| 
 | 
 | ||||||
| void e2d::ActionManager::stopAll() | void e2d::ActionManager::stopAll() | ||||||
| { | { | ||||||
| 	for (auto child : SceneManager::getCurrentScene()->getRoot()->getChildren()) | 	FOR_LOOP(child, SceneManager::getCurrentScene()->getRoot()->getChildren()) | ||||||
| 	{ | 	{ | ||||||
| 		ActionManager::__stopAllBindedWith(child); | 		ActionManager::__stopAllBindedWith(child); | ||||||
| 	} | 	} | ||||||
|  | @ -194,7 +194,7 @@ void e2d::ActionManager::stopAll() | ||||||
| std::vector<e2d::Action*> e2d::ActionManager::get(String strActionName) | std::vector<e2d::Action*> e2d::ActionManager::get(String strActionName) | ||||||
| { | { | ||||||
| 	std::vector<Action*> vActions; | 	std::vector<Action*> vActions; | ||||||
| 	for (const auto action : s_vActions) | 	FOR_LOOP(action, s_vActions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getName() == strActionName) | 		if (action->getName() == strActionName) | ||||||
| 		{ | 		{ | ||||||
|  | @ -211,7 +211,7 @@ std::vector<e2d::Action*> e2d::ActionManager::getAll() | ||||||
| 
 | 
 | ||||||
| void e2d::ActionManager::__resetAllActions() | void e2d::ActionManager::__resetAllActions() | ||||||
| { | { | ||||||
| 	for (auto action : s_vRunningActions) | 	FOR_LOOP(action, s_vRunningActions) | ||||||
| 	{ | 	{ | ||||||
| 		action->_resetTime(); | 		action->_resetTime(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -67,9 +67,9 @@ void e2d::CollisionManager::__updateShape(e2d::ShapeBase * pActiveShape) | ||||||
| 				pPassiveNode->getParentScene() == pCurrentScene) | 				pPassiveNode->getParentScene() == pCurrentScene) | ||||||
| 			{ | 			{ | ||||||
| 				// 判断两物体是否是相互冲突的物体
 | 				// 判断两物体是否是相互冲突的物体
 | ||||||
| 				auto IsCollideWith = [](Node * active, unsigned int hash) | 				auto IsCollideWith = [](Node * active, unsigned int hash) -> bool | ||||||
| 				{ | 				{ | ||||||
| 					for (auto collider : active->m_vColliders) | 					FOR_LOOP(collider, active->m_vColliders) | ||||||
| 						if (collider == hash) | 						if (collider == hash) | ||||||
| 							return true; | 							return true; | ||||||
| 					return false; | 					return false; | ||||||
|  | @ -78,7 +78,7 @@ void e2d::CollisionManager::__updateShape(e2d::ShapeBase * pActiveShape) | ||||||
| 				if (IsCollideWith(pActiveNode, pPassiveNode->getHashName())) | 				if (IsCollideWith(pActiveNode, pPassiveNode->getHashName())) | ||||||
| 				{ | 				{ | ||||||
| 					// 判断两形状交集情况
 | 					// 判断两形状交集情况
 | ||||||
| 					Relation relation = pActiveShape->getRelationWith(pPassiveShape); | 					int relation = pActiveShape->getRelationWith(pPassiveShape); | ||||||
| 					// 忽略 UNKNOWN 和 DISJOINT 情况
 | 					// 忽略 UNKNOWN 和 DISJOINT 情况
 | ||||||
| 					if (relation != Relation::UNKNOWN && relation != Relation::DISJOINT) | 					if (relation != Relation::UNKNOWN && relation != Relation::DISJOINT) | ||||||
| 					{ | 					{ | ||||||
|  | @ -105,7 +105,7 @@ void e2d::CollisionManager::__add(CollisionListener * pListener) | ||||||
| 	{ | 	{ | ||||||
| 		auto findListener = [](CollisionListener * pListener) -> bool | 		auto findListener = [](CollisionListener * pListener) -> bool | ||||||
| 		{ | 		{ | ||||||
| 			for (const auto &l : s_vListeners) | 			FOR_LOOP(l, s_vListeners) | ||||||
| 			{ | 			{ | ||||||
| 				if (pListener == l) | 				if (pListener == l) | ||||||
| 				{ | 				{ | ||||||
|  | @ -133,7 +133,7 @@ void e2d::CollisionManager::add(Function func, String name) | ||||||
| 
 | 
 | ||||||
| void e2d::CollisionManager::start(String name) | void e2d::CollisionManager::start(String name) | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -144,7 +144,7 @@ void e2d::CollisionManager::start(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::CollisionManager::stop(String name) | void e2d::CollisionManager::stop(String name) | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -155,7 +155,7 @@ void e2d::CollisionManager::stop(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::CollisionManager::clear(String name) | void e2d::CollisionManager::clear(String name) | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -166,7 +166,7 @@ void e2d::CollisionManager::clear(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::CollisionManager::startAll() | void e2d::CollisionManager::startAll() | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		pListener->start(); | 		pListener->start(); | ||||||
| 	} | 	} | ||||||
|  | @ -174,7 +174,7 @@ void e2d::CollisionManager::startAll() | ||||||
| 
 | 
 | ||||||
| void e2d::CollisionManager::stopAll() | void e2d::CollisionManager::stopAll() | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		pListener->stop(); | 		pListener->stop(); | ||||||
| 	} | 	} | ||||||
|  | @ -182,7 +182,7 @@ void e2d::CollisionManager::stopAll() | ||||||
| 
 | 
 | ||||||
| void e2d::CollisionManager::clearAll() | void e2d::CollisionManager::clearAll() | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		pListener->stopAndClear(); | 		pListener->stopAndClear(); | ||||||
| 	} | 	} | ||||||
|  | @ -191,7 +191,7 @@ void e2d::CollisionManager::clearAll() | ||||||
| std::vector<e2d::CollisionListener*> e2d::CollisionManager::get(String name) | std::vector<e2d::CollisionListener*> e2d::CollisionManager::get(String name) | ||||||
| { | { | ||||||
| 	std::vector<CollisionListener*> vListeners; | 	std::vector<CollisionListener*> vListeners; | ||||||
| 	for (auto pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  |  | ||||||
|  | @ -31,7 +31,7 @@ void e2d::InputManager::__add(InputListener * pListener) | ||||||
| 	{ | 	{ | ||||||
| 		auto findListener = [](InputListener * pListener) -> bool | 		auto findListener = [](InputListener * pListener) -> bool | ||||||
| 		{ | 		{ | ||||||
| 			for (const auto &l : s_vListeners) | 			FOR_LOOP(l, s_vListeners) | ||||||
| 			{ | 			{ | ||||||
| 				if (pListener == l) | 				if (pListener == l) | ||||||
| 				{ | 				{ | ||||||
|  | @ -59,7 +59,7 @@ void e2d::InputManager::add(Function func, String name) | ||||||
| 
 | 
 | ||||||
| void e2d::InputManager::start(String name) | void e2d::InputManager::start(String name) | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -70,7 +70,7 @@ void e2d::InputManager::start(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::InputManager::stop(String name) | void e2d::InputManager::stop(String name) | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -81,7 +81,7 @@ void e2d::InputManager::stop(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::InputManager::clear(String name) | void e2d::InputManager::clear(String name) | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -92,7 +92,7 @@ void e2d::InputManager::clear(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::InputManager::startAll() | void e2d::InputManager::startAll() | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		pListener->start(); | 		pListener->start(); | ||||||
| 	} | 	} | ||||||
|  | @ -100,7 +100,7 @@ void e2d::InputManager::startAll() | ||||||
| 
 | 
 | ||||||
| void e2d::InputManager::stopAll() | void e2d::InputManager::stopAll() | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		pListener->stop(); | 		pListener->stop(); | ||||||
| 	} | 	} | ||||||
|  | @ -108,7 +108,7 @@ void e2d::InputManager::stopAll() | ||||||
| 
 | 
 | ||||||
| void e2d::InputManager::clearAll() | void e2d::InputManager::clearAll() | ||||||
| { | { | ||||||
| 	for (const auto & pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		pListener->stopAndClear(); | 		pListener->stopAndClear(); | ||||||
| 	} | 	} | ||||||
|  | @ -117,7 +117,7 @@ void e2d::InputManager::clearAll() | ||||||
| std::vector<e2d::InputListener*> e2d::InputManager::get(String name) | std::vector<e2d::InputListener*> e2d::InputManager::get(String name) | ||||||
| { | { | ||||||
| 	std::vector<InputListener*> vListeners; | 	std::vector<InputListener*> vListeners; | ||||||
| 	for (auto pListener : s_vListeners) | 	FOR_LOOP(pListener, s_vListeners) | ||||||
| 	{ | 	{ | ||||||
| 		if (pListener->getName() == name) | 		if (pListener->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  |  | ||||||
|  | @ -2,9 +2,18 @@ | ||||||
| #include "..\etools.h" | #include "..\etools.h" | ||||||
| #include <map> | #include <map> | ||||||
| 
 | 
 | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 
 | ||||||
| static IXAudio2 * s_pXAudio2 = nullptr; | static IXAudio2 * s_pXAudio2 = nullptr; | ||||||
| static IXAudio2MasteringVoice * s_pMasteringVoice = nullptr; | static IXAudio2MasteringVoice * s_pMasteringVoice = nullptr; | ||||||
| 
 | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
|  | static HINSTANCE s_hInstance = nullptr; | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| typedef std::pair<UINT, e2d::Music *> MusicPair; | typedef std::pair<UINT, e2d::Music *> MusicPair; | ||||||
| typedef std::map<UINT, e2d::Music *> MusicList; | typedef std::map<UINT, e2d::Music *> MusicList; | ||||||
| 
 | 
 | ||||||
|  | @ -98,28 +107,31 @@ e2d::Music * e2d::MusicManager::get(String strFilePath) | ||||||
| 
 | 
 | ||||||
| void e2d::MusicManager::pauseAll() | void e2d::MusicManager::pauseAll() | ||||||
| { | { | ||||||
| 	for (auto iter : getMusicList()) | 	for (auto iter = getMusicList().begin(); iter != getMusicList().end(); iter++) | ||||||
| 	{ | 	{ | ||||||
| 		iter.second->pause(); | 		(*iter).second->pause(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::MusicManager::resumeAll() | void e2d::MusicManager::resumeAll() | ||||||
| { | { | ||||||
| 	for (auto iter : getMusicList()) | 	for (auto iter = getMusicList().begin(); iter != getMusicList().end(); iter++) | ||||||
| 	{ | 	{ | ||||||
| 		iter.second->resume(); | 		(*iter).second->resume(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::MusicManager::stopAll() | void e2d::MusicManager::stopAll() | ||||||
| { | { | ||||||
| 	for (auto iter : getMusicList()) | 	for (auto iter = getMusicList().begin(); iter != getMusicList().end(); iter++) | ||||||
| 	{ | 	{ | ||||||
| 		iter.second->stop(); | 		(*iter).second->stop(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 
 | ||||||
| IXAudio2 * e2d::MusicManager::getIXAudio2() | IXAudio2 * e2d::MusicManager::getIXAudio2() | ||||||
| { | { | ||||||
| 	return s_pXAudio2; | 	return s_pXAudio2; | ||||||
|  | @ -166,3 +178,45 @@ void e2d::MusicManager::__uninit() | ||||||
| 
 | 
 | ||||||
| 	SafeReleaseInterface(&s_pXAudio2); | 	SafeReleaseInterface(&s_pXAudio2); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
|  | HINSTANCE e2d::MusicManager::getHInstance() | ||||||
|  | { | ||||||
|  | 	return s_hInstance; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::MusicManager::__init() | ||||||
|  | { | ||||||
|  | 	s_hInstance = HINST_THISCOMPONENT; | ||||||
|  | 
 | ||||||
|  | 	WNDCLASS  wc; | ||||||
|  | 	wc.style = 0; | ||||||
|  | 	wc.lpfnWndProc = Music::MusicProc; | ||||||
|  | 	wc.cbClsExtra = 0; | ||||||
|  | 	wc.cbWndExtra = 0; | ||||||
|  | 	wc.hInstance = s_hInstance; | ||||||
|  | 	wc.hIcon = 0; | ||||||
|  | 	wc.hCursor = LoadCursor(NULL, IDC_ARROW); | ||||||
|  | 	wc.hbrBackground = NULL; | ||||||
|  | 	wc.lpszMenuName = NULL; | ||||||
|  | 	wc.lpszClassName = MUSIC_CLASS_NAME; | ||||||
|  | 
 | ||||||
|  | 	if (!RegisterClass(&wc) && 1410 != GetLastError()) | ||||||
|  | 	{ | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::MusicManager::__uninit() | ||||||
|  | { | ||||||
|  | 	for (auto iter = getMusicList().begin(); iter != getMusicList().end(); iter++) | ||||||
|  | 	{ | ||||||
|  | 		(*iter).second->close(); | ||||||
|  | 		(*iter).second->release(); | ||||||
|  | 	} | ||||||
|  | 	getMusicList().clear(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | @ -41,7 +41,7 @@ void e2d::TimerManager::__add(Timer * pTimer) | ||||||
| 	{ | 	{ | ||||||
| 		auto findTimer = [](Timer * pTimer) -> bool | 		auto findTimer = [](Timer * pTimer) -> bool | ||||||
| 		{ | 		{ | ||||||
| 			for (const auto &t : s_vTimers) | 			FOR_LOOP(t, s_vTimers) | ||||||
| 			{ | 			{ | ||||||
| 				if (pTimer == t) | 				if (pTimer == t) | ||||||
| 				{ | 				{ | ||||||
|  | @ -64,7 +64,7 @@ void e2d::TimerManager::__add(Timer * pTimer) | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::start(String name) | void e2d::TimerManager::start(String name) | ||||||
| { | { | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		if (timer->getName() == name) | 		if (timer->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -75,7 +75,7 @@ void e2d::TimerManager::start(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::stop(String name) | void e2d::TimerManager::stop(String name) | ||||||
| { | { | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		if (timer->getName() == name) | 		if (timer->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -86,7 +86,7 @@ void e2d::TimerManager::stop(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::clear(String name) | void e2d::TimerManager::clear(String name) | ||||||
| { | { | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		if (timer->getName() == name) | 		if (timer->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -98,7 +98,7 @@ void e2d::TimerManager::clear(String name) | ||||||
| std::vector<e2d::Timer*> e2d::TimerManager::get(String name) | std::vector<e2d::Timer*> e2d::TimerManager::get(String name) | ||||||
| { | { | ||||||
| 	std::vector<Timer*> vTimers; | 	std::vector<Timer*> vTimers; | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		if (timer->getName() == name) | 		if (timer->getName() == name) | ||||||
| 		{ | 		{ | ||||||
|  | @ -110,7 +110,7 @@ std::vector<e2d::Timer*> e2d::TimerManager::get(String name) | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::startAll() | void e2d::TimerManager::startAll() | ||||||
| { | { | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		timer->start(); | 		timer->start(); | ||||||
| 	} | 	} | ||||||
|  | @ -118,7 +118,7 @@ void e2d::TimerManager::startAll() | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::stopAll() | void e2d::TimerManager::stopAll() | ||||||
| { | { | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		timer->stop(); | 		timer->stop(); | ||||||
| 	} | 	} | ||||||
|  | @ -126,7 +126,7 @@ void e2d::TimerManager::stopAll() | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::stopAndClearAll() | void e2d::TimerManager::stopAndClearAll() | ||||||
| { | { | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		timer->stop(); | 		timer->stop(); | ||||||
| 		timer->release(); | 		timer->release(); | ||||||
|  | @ -141,7 +141,7 @@ std::vector<e2d::Timer*> e2d::TimerManager::getAll() | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::__resetAllTimers() | void e2d::TimerManager::__resetAllTimers() | ||||||
| { | { | ||||||
| 	for (auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		timer->m_fLast = Time::getTotalTime(); | 		timer->m_fLast = Time::getTotalTime(); | ||||||
| 	} | 	} | ||||||
|  | @ -149,7 +149,7 @@ void e2d::TimerManager::__resetAllTimers() | ||||||
| 
 | 
 | ||||||
| void e2d::TimerManager::__uninit() | void e2d::TimerManager::__uninit() | ||||||
| { | { | ||||||
| 	for (const auto timer : s_vTimers) | 	FOR_LOOP(timer, s_vTimers) | ||||||
| 	{ | 	{ | ||||||
| 		timer->release(); | 		timer->release(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ void e2d::Menu::setEnable(bool enable) | ||||||
| 	{ | 	{ | ||||||
| 		m_bEnable = enable; | 		m_bEnable = enable; | ||||||
| 
 | 
 | ||||||
| 		for (auto button : m_vButtons) | 		FOR_LOOP(button, m_vButtons) | ||||||
| 		{ | 		{ | ||||||
| 			button->setEnable(enable); | 			button->setEnable(enable); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -48,7 +48,7 @@ e2d::Node::~Node() | ||||||
| { | { | ||||||
| 	ActionManager::__clearAllBindedWith(this); | 	ActionManager::__clearAllBindedWith(this); | ||||||
| 	CollisionManager::__removeShape(m_pShape); | 	CollisionManager::__removeShape(m_pShape); | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 	{ | 	{ | ||||||
| 		SafeRelease(&child); | 		SafeRelease(&child); | ||||||
| 	} | 	} | ||||||
|  | @ -174,7 +174,7 @@ void e2d::Node::_drawShape() | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// 绘制所有子节点的几何形状
 | 	// 绘制所有子节点的几何形状
 | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 	{ | 	{ | ||||||
| 		child->_drawShape(); | 		child->_drawShape(); | ||||||
| 	} | 	} | ||||||
|  | @ -187,7 +187,7 @@ void e2d::Node::_onEnter() | ||||||
| 		this->m_bDisplayedInScene = true; | 		this->m_bDisplayedInScene = true; | ||||||
| 		this->onEnter(); | 		this->onEnter(); | ||||||
| 
 | 
 | ||||||
| 		for (auto child : m_vChildren) | 		FOR_LOOP(child, m_vChildren) | ||||||
| 		{ | 		{ | ||||||
| 			child->_onEnter(); | 			child->_onEnter(); | ||||||
| 		} | 		} | ||||||
|  | @ -201,7 +201,7 @@ void e2d::Node::_onExit() | ||||||
| 		this->m_bDisplayedInScene = false; | 		this->m_bDisplayedInScene = false; | ||||||
| 		this->onExit(); | 		this->onExit(); | ||||||
| 
 | 
 | ||||||
| 		for (auto child : m_vChildren) | 		FOR_LOOP(child, m_vChildren) | ||||||
| 		{ | 		{ | ||||||
| 			child->_onExit(); | 			child->_onExit(); | ||||||
| 		} | 		} | ||||||
|  | @ -240,7 +240,7 @@ void e2d::Node::_updateTransform() | ||||||
| 
 | 
 | ||||||
| void e2d::Node::_updateChildrenTransform() | void e2d::Node::_updateChildrenTransform() | ||||||
| { | { | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 	{ | 	{ | ||||||
| 		_updateTransform(child); | 		_updateTransform(child); | ||||||
| 	} | 	} | ||||||
|  | @ -263,7 +263,7 @@ void e2d::Node::_updateTransform(Node * node) | ||||||
| 
 | 
 | ||||||
| void e2d::Node::_updateChildrenOpacity() | void e2d::Node::_updateChildrenOpacity() | ||||||
| { | { | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 	{ | 	{ | ||||||
| 		_updateOpacity(child); | 		_updateOpacity(child); | ||||||
| 	} | 	} | ||||||
|  | @ -547,7 +547,7 @@ void e2d::Node::setSize(Size size) | ||||||
| 	this->setSize(size.width, size.height); | 	this->setSize(size.width, size.height); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Node::setShape(Shape type) | void e2d::Node::setShape(int type) | ||||||
| { | { | ||||||
| 	switch (type) | 	switch (type) | ||||||
| 	{ | 	{ | ||||||
|  | @ -683,7 +683,7 @@ std::vector<e2d::Node*> e2d::Node::getChildren(String name) | ||||||
| 	std::vector<Node*> vChildren; | 	std::vector<Node*> vChildren; | ||||||
| 	unsigned int hash = name.getHashCode(); | 	unsigned int hash = name.getHashCode(); | ||||||
| 
 | 
 | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 	{ | 	{ | ||||||
| 		// 不同的名称可能会有相同的 Hash 值,但是先比较 Hash 可以提升搜索速度
 | 		// 不同的名称可能会有相同的 Hash 值,但是先比较 Hash 可以提升搜索速度
 | ||||||
| 		if (child->m_nHashName == hash && child->m_sName == name) | 		if (child->m_nHashName == hash && child->m_sName == name) | ||||||
|  | @ -784,7 +784,7 @@ void e2d::Node::removeChildren(String childName) | ||||||
| void e2d::Node::clearAllChildren() | void e2d::Node::clearAllChildren() | ||||||
| { | { | ||||||
| 	// 所有节点的引用计数减一
 | 	// 所有节点的引用计数减一
 | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 	{ | 	{ | ||||||
| 		if (child->m_bDisplayedInScene) | 		if (child->m_bDisplayedInScene) | ||||||
| 		{ | 		{ | ||||||
|  | @ -820,7 +820,7 @@ void e2d::Node::runAction(Action * action) | ||||||
| void e2d::Node::resumeAction(String strActionName) | void e2d::Node::resumeAction(String strActionName) | ||||||
| { | { | ||||||
| 	auto actions = ActionManager::get(strActionName); | 	auto actions = ActionManager::get(strActionName); | ||||||
| 	for (auto action : actions) | 	FOR_LOOP(action, actions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getTarget() == this) | 		if (action->getTarget() == this) | ||||||
| 		{ | 		{ | ||||||
|  | @ -832,7 +832,7 @@ void e2d::Node::resumeAction(String strActionName) | ||||||
| void e2d::Node::pauseAction(String strActionName) | void e2d::Node::pauseAction(String strActionName) | ||||||
| { | { | ||||||
| 	auto actions = ActionManager::get(strActionName); | 	auto actions = ActionManager::get(strActionName); | ||||||
| 	for (auto action : actions) | 	FOR_LOOP(action, actions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getTarget() == this) | 		if (action->getTarget() == this) | ||||||
| 		{ | 		{ | ||||||
|  | @ -844,7 +844,7 @@ void e2d::Node::pauseAction(String strActionName) | ||||||
| void e2d::Node::stopAction(String strActionName) | void e2d::Node::stopAction(String strActionName) | ||||||
| { | { | ||||||
| 	auto actions = ActionManager::get(strActionName); | 	auto actions = ActionManager::get(strActionName); | ||||||
| 	for (auto action : actions) | 	FOR_LOOP(action, actions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getTarget() == this) | 		if (action->getTarget() == this) | ||||||
| 		{ | 		{ | ||||||
|  | @ -856,7 +856,7 @@ void e2d::Node::stopAction(String strActionName) | ||||||
| e2d::Action * e2d::Node::getAction(String strActionName) | e2d::Action * e2d::Node::getAction(String strActionName) | ||||||
| { | { | ||||||
| 	auto actions = ActionManager::get(strActionName); | 	auto actions = ActionManager::get(strActionName); | ||||||
| 	for (auto action : actions) | 	FOR_LOOP(action, actions) | ||||||
| 	{ | 	{ | ||||||
| 		if (action->getTarget() == this) | 		if (action->getTarget() == this) | ||||||
| 		{ | 		{ | ||||||
|  | @ -924,7 +924,7 @@ bool e2d::Node::isPointIn(Point point) const | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// 判断点是否在子节点内
 | 	// 判断点是否在子节点内
 | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 		if (child->isPointIn(point)) | 		if (child->isPointIn(point)) | ||||||
| 			return true; | 			return true; | ||||||
| 
 | 
 | ||||||
|  | @ -936,7 +936,7 @@ bool e2d::Node::isIntersectWith(const Node * pNode) const | ||||||
| 	// 如果存在形状,用形状判断
 | 	// 如果存在形状,用形状判断
 | ||||||
| 	if (this->m_pShape && pNode->m_pShape) | 	if (this->m_pShape && pNode->m_pShape) | ||||||
| 	{ | 	{ | ||||||
| 		Relation relation = this->m_pShape->getRelationWith(pNode->m_pShape); | 		int relation = this->m_pShape->getRelationWith(pNode->m_pShape); | ||||||
| 		if ((relation != Relation::UNKNOWN) &&  | 		if ((relation != Relation::UNKNOWN) &&  | ||||||
| 			(relation != Relation::DISJOINT)) | 			(relation != Relation::DISJOINT)) | ||||||
| 		{ | 		{ | ||||||
|  | @ -977,20 +977,20 @@ bool e2d::Node::isIntersectWith(const Node * pNode) const | ||||||
| 		SafeReleaseInterface(&pRect1); | 		SafeReleaseInterface(&pRect1); | ||||||
| 		SafeReleaseInterface(&pRect2); | 		SafeReleaseInterface(&pRect2); | ||||||
| 		SafeReleaseInterface(&pShape); | 		SafeReleaseInterface(&pShape); | ||||||
| 		if ((relation != D2D1_GEOMETRY_RELATION::D2D1_GEOMETRY_RELATION_UNKNOWN) && | 		if ((relation != D2D1_GEOMETRY_RELATION_UNKNOWN) && | ||||||
| 			(relation != D2D1_GEOMETRY_RELATION::D2D1_GEOMETRY_RELATION_DISJOINT)) | 			(relation != D2D1_GEOMETRY_RELATION_DISJOINT)) | ||||||
| 		{ | 		{ | ||||||
| 			return true; | 			return true; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// 判断和其子节点是否相交
 | 	// 判断和其子节点是否相交
 | ||||||
| 	for (auto child : pNode->m_vChildren) | 	FOR_LOOP(pNodeChild, pNode->m_vChildren) | ||||||
| 		if (this->isIntersectWith(child)) | 		if (this->isIntersectWith(pNodeChild)) | ||||||
| 			return true; | 			return true; | ||||||
| 
 | 
 | ||||||
| 	// 判断子节点和其是否相交
 | 	// 判断子节点和其是否相交
 | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 		if (child->isIntersectWith(pNode)) | 		if (child->isIntersectWith(pNode)) | ||||||
| 			return true; | 			return true; | ||||||
| 
 | 
 | ||||||
|  | @ -1050,7 +1050,7 @@ void e2d::Node::setName(String name) | ||||||
| void e2d::Node::_setParentScene(Scene * scene) | void e2d::Node::_setParentScene(Scene * scene) | ||||||
| { | { | ||||||
| 	m_pParentScene = scene; | 	m_pParentScene = scene; | ||||||
| 	for (auto child : m_vChildren) | 	FOR_LOOP(child, m_vChildren) | ||||||
| 	{ | 	{ | ||||||
| 		child->_setParentScene(scene); | 		child->_setParentScene(scene); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -164,7 +164,7 @@ void e2d::Text::setLineSpacing(double fLineSpacing) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Text::setAlignment(TextAlign nAlign) | void e2d::Text::setAlignment(int nAlign) | ||||||
| { | { | ||||||
| 	if (m_nAlign != nAlign) | 	if (m_nAlign != nAlign) | ||||||
| 	{ | 	{ | ||||||
|  |  | ||||||
|  | @ -65,7 +65,7 @@ void e2d::ShapeBase::_render() | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Relation e2d::ShapeBase::getRelationWith(ShapeBase * pShape) const | int e2d::ShapeBase::getRelationWith(ShapeBase * pShape) const | ||||||
| { | { | ||||||
| 	if (m_pTransformedShape && pShape->m_pTransformedShape) | 	if (m_pTransformedShape && pShape->m_pTransformedShape) | ||||||
| 	{ | 	{ | ||||||
|  | @ -79,7 +79,7 @@ e2d::Relation e2d::ShapeBase::getRelationWith(ShapeBase * pShape) const | ||||||
| 				&relation | 				&relation | ||||||
| 			); | 			); | ||||||
| 
 | 
 | ||||||
| 			return Relation(relation); | 			return relation; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	return Relation::UNKNOWN; | 	return Relation::UNKNOWN; | ||||||
|  |  | ||||||
|  | @ -4,12 +4,12 @@ static e2d::String s_sDefaultFileName = L"DefaultData.ini"; | ||||||
| 
 | 
 | ||||||
| void e2d::Data::saveInt(String key, int value, String field) | void e2d::Data::saveInt(String key, int value, String field) | ||||||
| { | { | ||||||
| 	::WritePrivateProfileString(field, key, String::toString(value), Data::getDataFilePath()); | 	::WritePrivateProfileString(field, key, String::parse(value), Data::getDataFilePath()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Data::saveDouble(String key, double value, String field) | void e2d::Data::saveDouble(String key, double value, String field) | ||||||
| { | { | ||||||
| 	::WritePrivateProfileString(field, key, String::toString(value), Data::getDataFilePath()); | 	::WritePrivateProfileString(field, key, String::parse(value), Data::getDataFilePath()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Data::saveBool(String key, bool value, String field) | void e2d::Data::saveBool(String key, bool value, String field) | ||||||
|  | @ -31,7 +31,7 @@ int e2d::Data::getInt(String key, int defaultValue, String field) | ||||||
| double e2d::Data::getDouble(String key, double defaultValue, String field) | double e2d::Data::getDouble(String key, double defaultValue, String field) | ||||||
| { | { | ||||||
| 	wchar_t temp[32] = { 0 }; | 	wchar_t temp[32] = { 0 }; | ||||||
| 	::GetPrivateProfileString(field, key, String::toString(defaultValue), temp, 31, Data::getDataFilePath()); | 	::GetPrivateProfileString(field, key, String::parse(defaultValue), temp, 31, Data::getDataFilePath()); | ||||||
| 	return std::stof(temp); | 	return std::stof(temp); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,6 +3,8 @@ | ||||||
| 
 | 
 | ||||||
| using namespace e2d; | using namespace e2d; | ||||||
| 
 | 
 | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 
 | ||||||
| #ifndef SAFE_DELETE | #ifndef SAFE_DELETE | ||||||
| #define SAFE_DELETE(p)       { if (p) { delete (p);     (p)=nullptr; } } | #define SAFE_DELETE(p)       { if (p) { delete (p);     (p)=nullptr; } } | ||||||
| #endif | #endif | ||||||
|  | @ -231,7 +233,7 @@ void Music::close() | ||||||
| 	m_bPlaying = false; | 	m_bPlaying = false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool Music::isPlaying() | bool Music::isPlaying() const | ||||||
| { | { | ||||||
| 	if (m_bOpened && m_pSourceVoice) | 	if (m_bOpened && m_pSourceVoice) | ||||||
| 	{ | 	{ | ||||||
|  | @ -490,3 +492,196 @@ bool Music::_findMediaFileCch(wchar_t* strDestPath, int cchDest, const wchar_t * | ||||||
| 
 | 
 | ||||||
| 	return false; | 	return false; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | e2d::Music::Music() | ||||||
|  | 	: m_wnd(NULL) | ||||||
|  | 	, m_dev(0L) | ||||||
|  | 	, m_nMusicID(0) | ||||||
|  | 	, m_bPlaying(false) | ||||||
|  | 	, m_nRepeatTimes(0) | ||||||
|  | { | ||||||
|  | 	m_wnd = CreateWindowEx( | ||||||
|  | 		WS_EX_APPWINDOW, | ||||||
|  | 		MUSIC_CLASS_NAME, | ||||||
|  | 		NULL, | ||||||
|  | 		WS_POPUPWINDOW, | ||||||
|  | 		0, 0, 0, 0, | ||||||
|  | 		NULL, | ||||||
|  | 		NULL, | ||||||
|  | 		MusicManager::getHInstance(), | ||||||
|  | 		NULL); | ||||||
|  | 
 | ||||||
|  | 	if (m_wnd) | ||||||
|  | 	{ | ||||||
|  | 		SetWindowLongPtr(m_wnd, GWLP_USERDATA, (LONG_PTR)this); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | e2d::Music::~Music() | ||||||
|  | { | ||||||
|  | 	close(); | ||||||
|  | 	DestroyWindow(m_wnd); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::Music::open(String pFileName) | ||||||
|  | { | ||||||
|  | 	if (pFileName.isEmpty()) | ||||||
|  | 		return false; | ||||||
|  | 
 | ||||||
|  | 	close(); | ||||||
|  | 
 | ||||||
|  | 	MCI_OPEN_PARMS mciOpen = { 0 }; | ||||||
|  | 	mciOpen.lpstrDeviceType = 0; | ||||||
|  | 	mciOpen.lpstrElementName = pFileName; | ||||||
|  | 
 | ||||||
|  | 	MCIERROR mciError; | ||||||
|  | 	mciError = mciSendCommand( | ||||||
|  | 		0, | ||||||
|  | 		MCI_OPEN, | ||||||
|  | 		MCI_OPEN_ELEMENT, | ||||||
|  | 		reinterpret_cast<DWORD_PTR>(&mciOpen) | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	if (mciError == 0) | ||||||
|  | 	{ | ||||||
|  | 		m_dev = mciOpen.wDeviceID; | ||||||
|  | 		m_nMusicID = pFileName.getHashCode(); | ||||||
|  | 		m_bPlaying = false; | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::Music::play(int nLoopCount) | ||||||
|  | { | ||||||
|  | 	if (!m_dev) | ||||||
|  | 	{ | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	MCI_PLAY_PARMS mciPlay = { 0 }; | ||||||
|  | 	mciPlay.dwCallback = reinterpret_cast<DWORD_PTR>(m_wnd); | ||||||
|  | 
 | ||||||
|  | 	// 播放声音
 | ||||||
|  | 	MCIERROR mciError = mciSendCommand( | ||||||
|  | 		m_dev, | ||||||
|  | 		MCI_PLAY, | ||||||
|  | 		MCI_FROM | MCI_NOTIFY, | ||||||
|  | 		reinterpret_cast<DWORD_PTR>(&mciPlay) | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	if (!mciError) | ||||||
|  | 	{ | ||||||
|  | 		m_bPlaying = true; | ||||||
|  | 		m_nRepeatTimes = nLoopCount; | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Music::close() | ||||||
|  | { | ||||||
|  | 	if (m_bPlaying) | ||||||
|  | 	{ | ||||||
|  | 		stop(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (m_dev) | ||||||
|  | 	{ | ||||||
|  | 		_sendCommand(MCI_CLOSE); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	m_dev = 0; | ||||||
|  | 	m_bPlaying = false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Music::pause() | ||||||
|  | { | ||||||
|  | 	_sendCommand(MCI_PAUSE); | ||||||
|  | 	m_bPlaying = false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Music::resume() | ||||||
|  | { | ||||||
|  | 	_sendCommand(MCI_RESUME); | ||||||
|  | 	m_bPlaying = true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Music::stop() | ||||||
|  | { | ||||||
|  | 	_sendCommand(MCI_STOP); | ||||||
|  | 	m_bPlaying = false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool e2d::Music::isPlaying() const | ||||||
|  | { | ||||||
|  | 	return m_bPlaying; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | double Music::getVolume() const | ||||||
|  | { | ||||||
|  | 	return 1.0f; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool Music::setVolume(double fVolume) | ||||||
|  | { | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | double Music::getFrequencyRatio() const | ||||||
|  | { | ||||||
|  | 	return 1.0f; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool Music::setFrequencyRatio(double fFrequencyRatio) | ||||||
|  | { | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void e2d::Music::_sendCommand(int nCommand, DWORD_PTR param1, DWORD_PTR parma2) | ||||||
|  | { | ||||||
|  | 	// 空设备时忽略这次操作
 | ||||||
|  | 	if (!m_dev) | ||||||
|  | 	{ | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 	// 向当前设备发送操作
 | ||||||
|  | 	mciSendCommand(m_dev, nCommand, param1, parma2); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | LRESULT WINAPI e2d::Music::MusicProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) | ||||||
|  | { | ||||||
|  | 	e2d::Music * pPlayer = NULL; | ||||||
|  | 
 | ||||||
|  | 	if (Msg == MM_MCINOTIFY | ||||||
|  | 		&& wParam == MCI_NOTIFY_SUCCESSFUL | ||||||
|  | 		&& (pPlayer = (Music *)GetWindowLongPtr(hWnd, GWLP_USERDATA))) | ||||||
|  | 	{ | ||||||
|  | 		if (pPlayer->m_nRepeatTimes > 0) | ||||||
|  | 		{ | ||||||
|  | 			pPlayer->m_nRepeatTimes--; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (pPlayer->m_nRepeatTimes) | ||||||
|  | 		{ | ||||||
|  | 			mciSendCommand(static_cast<MCIDEVICEID>(lParam), MCI_SEEK, MCI_SEEK_TO_START, 0); | ||||||
|  | 
 | ||||||
|  | 			MCI_PLAY_PARMS mciPlay = { 0 }; | ||||||
|  | 			mciPlay.dwCallback = reinterpret_cast<DWORD_PTR>(hWnd); | ||||||
|  | 			mciSendCommand(static_cast<MCIDEVICEID>(lParam), MCI_PLAY, MCI_NOTIFY, reinterpret_cast<DWORD_PTR>(&mciPlay)); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			pPlayer->m_bPlaying = false; | ||||||
|  | 			return 0; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return DefWindowProc(hWnd, Msg, wParam, lParam); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | @ -12,8 +12,8 @@ | ||||||
| 	#error 仅能在 C++ 环境下使用 Easy2D | 	#error 仅能在 C++ 环境下使用 Easy2D | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if _MSC_VER < 1700 | #if _MSC_VER < 1600 | ||||||
| 	#error Easy2D 不支持 Visual Studio 2012 以下版本 | 	#error Easy2D 不支持 Visual Studio 2010 以下版本 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -152,17 +152,17 @@ class Input | ||||||
| public: | public: | ||||||
| 	// 检测键盘某按键是否正被按下
 | 	// 检测键盘某按键是否正被按下
 | ||||||
| 	static bool isKeyDown( | 	static bool isKeyDown( | ||||||
| 		KeyCode nKeyCode | 		int nKeyCode | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 检测键盘某按键是否被点击
 | 	// 检测键盘某按键是否被点击
 | ||||||
| 	static bool isKeyPress( | 	static bool isKeyPress( | ||||||
| 		KeyCode nKeyCode | 		int nKeyCode | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 检测键盘某按键是否正在松开
 | 	// 检测键盘某按键是否正在松开
 | ||||||
| 	static bool isKeyRelease( | 	static bool isKeyRelease( | ||||||
| 		KeyCode nKeyCode | 		int nKeyCode | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 检测鼠标左键是否正被按下
 | 	// 检测鼠标左键是否正被按下
 | ||||||
|  |  | ||||||
							
								
								
									
										176
									
								
								core/ecommon.h
								
								
								
								
							
							
						
						
									
										176
									
								
								core/ecommon.h
								
								
								
								
							|  | @ -135,10 +135,12 @@ public: | ||||||
| 	// 将字符串转化为 bool 型
 | 	// 将字符串转化为 bool 型
 | ||||||
| 	bool toBool() const; | 	bool toBool() const; | ||||||
| 
 | 
 | ||||||
| 	// 将数字转化为字符串
 | 	// 数字类型转字符串
 | ||||||
| 	template<typename T> | 	static String parse(int value); | ||||||
| 	static String toString(T value); | 	static String parse(float value); | ||||||
|  | 	static String parse(double value); | ||||||
| 
 | 
 | ||||||
|  | 	// 格式化字符串
 | ||||||
| 	String& format(const char * format, ...); | 	String& format(const char * format, ...); | ||||||
| 	String& format(const wchar_t * format, ...); | 	String& format(const wchar_t * format, ...); | ||||||
| 
 | 
 | ||||||
|  | @ -182,7 +184,6 @@ public: | ||||||
| 	String& operator<< (const wchar_t *); | 	String& operator<< (const wchar_t *); | ||||||
| 	String& operator<< (wchar_t *); | 	String& operator<< (wchar_t *); | ||||||
| 	String& operator<< (int value); | 	String& operator<< (int value); | ||||||
| 	String& operator<< (unsigned int value); |  | ||||||
| 	String& operator<< (float value); | 	String& operator<< (float value); | ||||||
| 	String& operator<< (double value); | 	String& operator<< (double value); | ||||||
| 
 | 
 | ||||||
|  | @ -300,93 +301,109 @@ public: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // 文本对齐方式
 | // 文本对齐方式
 | ||||||
| enum class TextAlign : int | class TextAlign | ||||||
| { | { | ||||||
| 	LEFT,		/* 左对齐 */ | public: | ||||||
| 	RIGHT,		/* 右对齐 */ | 	enum : int | ||||||
| 	CENTER		/* 居中对齐 */ | 	{ | ||||||
|  | 		LEFT,		/* 左对齐 */ | ||||||
|  | 		RIGHT,		/* 右对齐 */ | ||||||
|  | 		CENTER		/* 居中对齐 */ | ||||||
|  | 	}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // 键值集合
 | // 键值集合
 | ||||||
| enum class KeyCode : int | class KeyCode | ||||||
| { | { | ||||||
| 	UP = 0xC8, | public: | ||||||
| 	LEFT = 0xCB, | 	enum : int | ||||||
| 	RIGHT = 0xCD, | 	{ | ||||||
| 	DOWN = 0xD0, | 		UP = 0xC8, | ||||||
| 	ENTER = 0x1C, | 		LEFT = 0xCB, | ||||||
| 	SPACE = 0x39, | 		RIGHT = 0xCD, | ||||||
| 	ESC = 0x01, | 		DOWN = 0xD0, | ||||||
| 	BACK = 0x0E, | 		ENTER = 0x1C, | ||||||
| 	TAB = 0x0F, | 		SPACE = 0x39, | ||||||
| 	PAUSE = 0xC5, | 		ESC = 0x01, | ||||||
| 	Q = 0x10, | 		BACK = 0x0E, | ||||||
| 	W = 0x11, | 		TAB = 0x0F, | ||||||
| 	E = 0x12, | 		PAUSE = 0xC5, | ||||||
| 	R = 0x13, | 		Q = 0x10, | ||||||
| 	T = 0x14, | 		W = 0x11, | ||||||
| 	Y = 0x15, | 		E = 0x12, | ||||||
| 	U = 0x16, | 		R = 0x13, | ||||||
| 	I = 0x17, | 		T = 0x14, | ||||||
| 	O = 0x18, | 		Y = 0x15, | ||||||
| 	P = 0x19, | 		U = 0x16, | ||||||
| 	A = 0x1E, | 		I = 0x17, | ||||||
| 	S = 0x1F, | 		O = 0x18, | ||||||
| 	D = 0x20, | 		P = 0x19, | ||||||
| 	F = 0x21, | 		A = 0x1E, | ||||||
| 	G = 0x22, | 		S = 0x1F, | ||||||
| 	H = 0x23, | 		D = 0x20, | ||||||
| 	J = 0x24, | 		F = 0x21, | ||||||
| 	K = 0x25, | 		G = 0x22, | ||||||
| 	L = 0x26, | 		H = 0x23, | ||||||
| 	Z = 0x2C, | 		J = 0x24, | ||||||
| 	X = 0x2D, | 		K = 0x25, | ||||||
| 	C = 0x2E, | 		L = 0x26, | ||||||
| 	V = 0x2F, | 		Z = 0x2C, | ||||||
| 	B = 0x30, | 		X = 0x2D, | ||||||
| 	N = 0x31, | 		C = 0x2E, | ||||||
| 	M = 0x32, | 		V = 0x2F, | ||||||
| 	NUM1 = 0x02, | 		B = 0x30, | ||||||
| 	NUM2 = 0x03, | 		N = 0x31, | ||||||
| 	NUM3 = 0x04, | 		M = 0x32, | ||||||
| 	NUM4 = 0x05, | 		NUM1 = 0x02, | ||||||
| 	NUM5 = 0x06, | 		NUM2 = 0x03, | ||||||
| 	NUM6 = 0x07, | 		NUM3 = 0x04, | ||||||
| 	NUM7 = 0x08, | 		NUM4 = 0x05, | ||||||
| 	NUM8 = 0x09, | 		NUM5 = 0x06, | ||||||
| 	NUM9 = 0x0A, | 		NUM6 = 0x07, | ||||||
| 	NUM0 = 0x0B, | 		NUM7 = 0x08, | ||||||
| 	NUMPAD7 = 0x47, | 		NUM8 = 0x09, | ||||||
| 	NUMPAD8 = 0x48, | 		NUM9 = 0x0A, | ||||||
| 	NUMPAD9 = 0x49, | 		NUM0 = 0x0B, | ||||||
| 	NUMPAD4 = 0x4B, | 		NUMPAD7 = 0x47, | ||||||
| 	NUMPAD5 = 0x4C, | 		NUMPAD8 = 0x48, | ||||||
| 	NUMPAD6 = 0x4D, | 		NUMPAD9 = 0x49, | ||||||
| 	NUMPAD1 = 0x4F, | 		NUMPAD4 = 0x4B, | ||||||
| 	NUMPAD2 = 0x50, | 		NUMPAD5 = 0x4C, | ||||||
| 	NUMPAD3 = 0x51, | 		NUMPAD6 = 0x4D, | ||||||
| 	NUMPAD0 = 0x52 | 		NUMPAD1 = 0x4F, | ||||||
|  | 		NUMPAD2 = 0x50, | ||||||
|  | 		NUMPAD3 = 0x51, | ||||||
|  | 		NUMPAD0 = 0x52 | ||||||
|  | 	}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // 形状交集关系
 | // 形状交集关系
 | ||||||
| enum class Relation : int | class Relation | ||||||
| { | { | ||||||
| 	UNKNOWN = 0,		/* 关系不确定 */ | public: | ||||||
| 	DISJOINT = 1,		/* 没有交集 */ | 	enum : int | ||||||
| 	IS_CONTAINED = 2,	/* 完全被包含 */ | 	{ | ||||||
| 	CONTAINS = 3,		/* 完全包含 */ | 		UNKNOWN = 0,		/* 关系不确定 */ | ||||||
| 	OVERLAP = 4			/* 部分重叠 */ | 		DISJOINT = 1,		/* 没有交集 */ | ||||||
|  | 		IS_CONTAINED = 2,	/* 完全被包含 */ | ||||||
|  | 		CONTAINS = 3,		/* 完全包含 */ | ||||||
|  | 		OVERLAP = 4			/* 部分重叠 */ | ||||||
|  | 	}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // 形状类别
 | // 形状类别
 | ||||||
| enum class Shape : int | class Shape | ||||||
| { | { | ||||||
| 	RECTANGLE,	/* 矩形 */ | public: | ||||||
| 	CIRCLE,		/* 圆形 */ | 	enum : int | ||||||
| 	ELLIPSE		/* 椭圆形 */ | 	{ | ||||||
|  | 		RECTANGLE,	/* 矩形 */ | ||||||
|  | 		CIRCLE,		/* 圆形 */ | ||||||
|  | 		ELLIPSE		/* 椭圆形 */ | ||||||
|  | 	}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -604,15 +621,6 @@ protected: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // String 类模板函数定义
 |  | ||||||
| template<typename T> |  | ||||||
| inline e2d::String e2d::String::toString(T value) |  | ||||||
| { |  | ||||||
| 	String tmp; |  | ||||||
| 	tmp.m_str = std::to_wstring(value); |  | ||||||
| 	return std::move(tmp); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T> | template<typename T> | ||||||
| inline void SafeDelete(T** p) { if (*p) { delete *p; *p = nullptr; } } | inline void SafeDelete(T** p) { if (*p) { delete *p; *p = nullptr; } } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -28,6 +28,8 @@ | ||||||
| #define DIRECTINPUT_VERSION 0x0800 | #define DIRECTINPUT_VERSION 0x0800 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #define INITGUID | ||||||
|  | 
 | ||||||
| // Windows Header Files
 | // Windows Header Files
 | ||||||
| #include <windows.h> | #include <windows.h> | ||||||
| #include <wincodec.h> | #include <wincodec.h> | ||||||
|  | @ -35,7 +37,6 @@ | ||||||
| #include <d2d1.h> | #include <d2d1.h> | ||||||
| #include <dwrite.h> | #include <dwrite.h> | ||||||
| #include <dinput.h> | #include <dinput.h> | ||||||
| #include <xaudio2.h> |  | ||||||
| #include <d2d1helper.h> | #include <d2d1helper.h> | ||||||
| 
 | 
 | ||||||
| // C RunTime Header Files
 | // C RunTime Header Files
 | ||||||
|  | @ -45,16 +46,35 @@ | ||||||
| // Import Libraries
 | // Import Libraries
 | ||||||
| #pragma comment(lib, "d2d1.lib") | #pragma comment(lib, "d2d1.lib") | ||||||
| #pragma comment(lib, "dwrite.lib") | #pragma comment(lib, "dwrite.lib") | ||||||
| #pragma comment(lib, "xaudio2.lib") |  | ||||||
| #pragma comment(lib, "windowscodecs.lib") | #pragma comment(lib, "windowscodecs.lib") | ||||||
| #pragma comment(lib, "winmm.lib") | #pragma comment(lib, "winmm.lib") | ||||||
| 
 | 
 | ||||||
|  | #if _MSC_VER > 1600 | ||||||
|  | #include <xaudio2.h> | ||||||
|  | #pragma comment(lib, "xaudio2.lib") | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| #ifndef HINST_THISCOMPONENT | #ifndef HINST_THISCOMPONENT | ||||||
| EXTERN_C IMAGE_DOS_HEADER __ImageBase; | EXTERN_C IMAGE_DOS_HEADER __ImageBase; | ||||||
| #define HINST_THISCOMPONENT ((HINSTANCE)&__ImageBase) | #define HINST_THISCOMPONENT ((HINSTANCE)&__ImageBase) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #define MUSIC_CLASS_NAME L"Easy2DMusicCallbackWnd" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #if _MSC_VER > 1700 | ||||||
|  | #define HIGHER_THAN_VS2012 1 | ||||||
|  | #else | ||||||
|  | #define HIGHER_THAN_VS2012 0 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if _MSC_VER > 1600 | ||||||
|  | #define HIGHER_THAN_VS2010 1 | ||||||
|  | #else | ||||||
|  | #define HIGHER_THAN_VS2010 0 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| #ifndef ASSERT | #ifndef ASSERT | ||||||
| #if defined( DEBUG ) || defined( _DEBUG ) | #if defined( DEBUG ) || defined( _DEBUG ) | ||||||
|  | @ -73,8 +93,9 @@ EXTERN_C IMAGE_DOS_HEADER __ImageBase; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #if _MSC_VER > 1700 | #if HIGHER_THAN_VS2010 | ||||||
| #define HIGHER_THAN_VS2012 1 | #define FOR_LOOP(i, container) for (auto i : (container)) | ||||||
| #else | #else | ||||||
| #define HIGHER_THAN_VS2012 0 | #define FOR_LOOP(i, container)  auto i = (container.begin() == container.end()) ? NULL : (*(container.begin())); \ | ||||||
|  | 	for (auto __iter__=(container.begin()); (__iter__ != (container.end())) && (i = (*__iter__)); __iter__++) | ||||||
| #endif | #endif | ||||||
|  | @ -280,12 +280,21 @@ public: | ||||||
| 	// 停止所有音乐
 | 	// 停止所有音乐
 | ||||||
| 	static void stopAll(); | 	static void stopAll(); | ||||||
| 
 | 
 | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 
 | ||||||
| 	// 获取 IXAudio2 对象
 | 	// 获取 IXAudio2 对象
 | ||||||
| 	static IXAudio2 * getIXAudio2(); | 	static IXAudio2 * getIXAudio2(); | ||||||
| 
 | 
 | ||||||
| 	// 获取 IXAudio2MasteringVoice 对象
 | 	// 获取 IXAudio2MasteringVoice 对象
 | ||||||
| 	static IXAudio2MasteringVoice * getIXAudio2MasteringVoice(); | 	static IXAudio2MasteringVoice * getIXAudio2MasteringVoice(); | ||||||
| 
 | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
|  | 	// ťńČĄ HINSTANCE
 | ||||||
|  | 	static HINSTANCE getHInstance(); | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
| 	// 初始化 XAudio2
 | 	// 初始化 XAudio2
 | ||||||
| 	static bool __init(); | 	static bool __init(); | ||||||
|  |  | ||||||
|  | @ -313,7 +313,7 @@ public: | ||||||
| 
 | 
 | ||||||
| 	// 设置节点形状
 | 	// 设置节点形状
 | ||||||
| 	virtual void setShape( | 	virtual void setShape( | ||||||
| 		Shape type | 		int type | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 设置节点形状
 | 	// 设置节点形状
 | ||||||
|  | @ -627,7 +627,7 @@ public: | ||||||
| 
 | 
 | ||||||
| 	// 设置对齐方式(默认为 TextAlign::LEFT)
 | 	// 设置对齐方式(默认为 TextAlign::LEFT)
 | ||||||
| 	void setAlignment( | 	void setAlignment( | ||||||
| 		TextAlign nAlign | 		int nAlign | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 设置下划线(默认值为 false)
 | 	// 设置下划线(默认值为 false)
 | ||||||
|  | @ -659,7 +659,7 @@ protected: | ||||||
| 	float	m_fWrappingWidth; | 	float	m_fWrappingWidth; | ||||||
| 	Font	m_Font; | 	Font	m_Font; | ||||||
| 	float	m_fLineSpacing; | 	float	m_fLineSpacing; | ||||||
| 	TextAlign m_nAlign; | 	int		m_nAlign; | ||||||
| 	IDWriteTextFormat * m_pDWriteTextFormat; | 	IDWriteTextFormat * m_pDWriteTextFormat; | ||||||
| 	IDWriteTextLayout * m_pDWriteTextLayout; | 	IDWriteTextLayout * m_pDWriteTextLayout; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ public: | ||||||
| 	virtual ~ShapeBase(); | 	virtual ~ShapeBase(); | ||||||
| 
 | 
 | ||||||
| 	// 判断两形状的交集关系
 | 	// 判断两形状的交集关系
 | ||||||
| 	virtual Relation getRelationWith( | 	virtual int getRelationWith( | ||||||
| 		ShapeBase * pShape | 		ShapeBase * pShape | ||||||
| 	) const; | 	) const; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -362,7 +362,7 @@ public: | ||||||
| 	void close(); | 	void close(); | ||||||
| 
 | 
 | ||||||
| 	// 获取音乐播放状态
 | 	// 获取音乐播放状态
 | ||||||
| 	bool isPlaying(); | 	bool isPlaying() const; | ||||||
| 
 | 
 | ||||||
| 	// 获取音量
 | 	// 获取音量
 | ||||||
| 	double getVolume() const; | 	double getVolume() const; | ||||||
|  | @ -372,7 +372,7 @@ public: | ||||||
| 
 | 
 | ||||||
| 	// 设置音量
 | 	// 设置音量
 | ||||||
| 	bool setVolume( | 	bool setVolume( | ||||||
| 		double fVolume	/* 音量范围为 -224 ~ 224,其中 0 是静音,1 是正常音量 */ | 		double fVolume			/* 音量范围为 -224 ~ 224,其中 0 是静音,1 是正常音量 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 设置频率比
 | 	// 设置频率比
 | ||||||
|  | @ -380,6 +380,8 @@ public: | ||||||
| 		double fFrequencyRatio	/* 频率比范围为 1/1024.0f ~ 1024.0f,其中 1.0 为正常声调 */ | 		double fFrequencyRatio	/* 频率比范围为 1/1024.0f ~ 1024.0f,其中 1.0 为正常声调 */ | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | #if HIGHER_THAN_VS2010 | ||||||
|  | 
 | ||||||
| 	// 获取 IXAudio2SourceVoice 对象
 | 	// 获取 IXAudio2SourceVoice 对象
 | ||||||
| 	IXAudio2SourceVoice* getIXAudio2SourceVoice() const; | 	IXAudio2SourceVoice* getIXAudio2SourceVoice() const; | ||||||
| 
 | 
 | ||||||
|  | @ -401,7 +403,7 @@ protected: | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
| 	bool m_bOpened; | 	bool m_bOpened; | ||||||
| 	bool m_bPlaying; | 	mutable bool m_bPlaying; | ||||||
| 	DWORD m_dwSize; | 	DWORD m_dwSize; | ||||||
| 	CHAR* m_pResourceBuffer; | 	CHAR* m_pResourceBuffer; | ||||||
| 	BYTE* m_pbWaveData; | 	BYTE* m_pbWaveData; | ||||||
|  | @ -410,6 +412,22 @@ protected: | ||||||
| 	MMCKINFO m_ckRiff; | 	MMCKINFO m_ckRiff; | ||||||
| 	WAVEFORMATEX* m_pwfx; | 	WAVEFORMATEX* m_pwfx; | ||||||
| 	IXAudio2SourceVoice* m_pSourceVoice; | 	IXAudio2SourceVoice* m_pSourceVoice; | ||||||
|  | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	void _sendCommand(int nCommand, DWORD_PTR param1 = 0, DWORD_PTR parma2 = 0); | ||||||
|  | 
 | ||||||
|  | 	static LRESULT WINAPI MusicProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	MCIDEVICEID m_dev; | ||||||
|  | 	HWND        m_wnd; | ||||||
|  | 	UINT		m_nMusicID; | ||||||
|  | 	bool        m_bPlaying; | ||||||
|  | 	int			m_nRepeatTimes; | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | @ -0,0 +1,20 @@ | ||||||
|  |  | ||||||
|  | Microsoft Visual Studio Solution File, Format Version 11.00 | ||||||
|  | # Visual Studio 2010 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Easy2D", "Easy2D.vcxproj", "{47AF11E1-8725-4ECA-B8CF-951ABC397B31}" | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		Debug|Win32 = Debug|Win32 | ||||||
|  | 		Release|Win32 = Release|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{47AF11E1-8725-4ECA-B8CF-951ABC397B31}.Debug|Win32.ActiveCfg = Debug|Win32 | ||||||
|  | 		{47AF11E1-8725-4ECA-B8CF-951ABC397B31}.Debug|Win32.Build.0 = Debug|Win32 | ||||||
|  | 		{47AF11E1-8725-4ECA-B8CF-951ABC397B31}.Release|Win32.ActiveCfg = Release|Win32 | ||||||
|  | 		{47AF11E1-8725-4ECA-B8CF-951ABC397B31}.Release|Win32.Build.0 = Release|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
|  | @ -0,0 +1,158 @@ | ||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <ItemGroup Label="ProjectConfigurations"> | ||||||
|  |     <ProjectConfiguration Include="Debug|Win32"> | ||||||
|  |       <Configuration>Debug</Configuration> | ||||||
|  |       <Platform>Win32</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |     <ProjectConfiguration Include="Release|Win32"> | ||||||
|  |       <Configuration>Release</Configuration> | ||||||
|  |       <Platform>Win32</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClCompile Include="..\..\core\Action\Action.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionDelay.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionFunc.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionGradual.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionLoop.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionMoveBy.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionMoveTo.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionOpacityBy.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionOpacityTo.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionRotateBy.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionRotateTo.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionScaleBy.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionScaleTo.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionSequence.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionTwo.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Action\Animation.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Game.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Input.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Renderer.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Time.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Window.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Font.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Image.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Object.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Point.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Scene.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Size.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Common\String.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\ActionManager.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\CollisionManager.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\InputManager.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\MusicManager.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\ObjectManager.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\SceneManager.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\TimerManager.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Button.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Node\ButtonToggle.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Menu.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Node.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Sprite.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Text.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeBase.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeCircle.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeEllipse.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeRectangle.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\CollisionListener.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Data.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\InputListener.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Listener.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Music.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Path.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Random.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Timer.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\Transition.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\TransitionEmerge.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\TransitionFade.cpp" /> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\TransitionMove.cpp" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClInclude Include="..\..\core\eactions.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\easy2d.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\ebase.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\ecommon.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\emacros.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\emanagers.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\enodes.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\eshape.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\etools.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\etransitions.h" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <PropertyGroup Label="Globals"> | ||||||
|  |     <ProjectGuid>{47AF11E1-8725-4ECA-B8CF-951ABC397B31}</ProjectGuid> | ||||||
|  |     <Keyword>Win32Proj</Keyword> | ||||||
|  |     <RootNamespace>Easy2D</RootNamespace> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>true</UseDebugLibraries> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>false</UseDebugLibraries> | ||||||
|  |     <WholeProgramOptimization>false</WholeProgramOptimization> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||||
|  |   <ImportGroup Label="ExtensionSettings"> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <PropertyGroup Label="UserMacros" /> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <TargetName>Easy2Dw</TargetName> | ||||||
|  |     <OutDir>$(SolutionDir)$(Platform)\</OutDir> | ||||||
|  |     <IntDir>$(Configuration)\$(Platform)\</IntDir> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <TargetName>Easy2Ddw</TargetName> | ||||||
|  |     <OutDir>$(SolutionDir)$(Platform)\</OutDir> | ||||||
|  |     <IntDir>$(Configuration)\$(Platform)\</IntDir> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <PrecompiledHeader> | ||||||
|  |       </PrecompiledHeader> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <Optimization>Disabled</Optimization> | ||||||
|  |       <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <DebugInformationFormat>EditAndContinue</DebugInformationFormat> | ||||||
|  |       <MinimalRebuild>false</MinimalRebuild> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Windows</SubSystem> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <PrecompiledHeader> | ||||||
|  |       </PrecompiledHeader> | ||||||
|  |       <Optimization>MaxSpeed</Optimization> | ||||||
|  |       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||||
|  |       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||||
|  |       <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <DebugInformationFormat> | ||||||
|  |       </DebugInformationFormat> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Windows</SubSystem> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||||
|  |       <OptimizeReferences>true</OptimizeReferences> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||||
|  |   <ImportGroup Label="ExtensionTargets"> | ||||||
|  |   </ImportGroup> | ||||||
|  | </Project> | ||||||
|  | @ -0,0 +1,214 @@ | ||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Filter Include="Action"> | ||||||
|  |       <UniqueIdentifier>{5be538cb-a432-4f84-9678-bbf408eca288}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Base"> | ||||||
|  |       <UniqueIdentifier>{d4a509dd-1bc0-4456-9554-d414de91b50c}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Common"> | ||||||
|  |       <UniqueIdentifier>{c907d829-e510-472c-bd47-cf4eab6f9266}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Manager"> | ||||||
|  |       <UniqueIdentifier>{7b102f67-5905-4c0e-8400-51c128da026a}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Node"> | ||||||
|  |       <UniqueIdentifier>{c536c42c-283d-4a10-b19b-0699b4f1e051}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Tool"> | ||||||
|  |       <UniqueIdentifier>{17bdc67b-1801-4b69-b79b-ffcbbee8dae0}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Transition"> | ||||||
|  |       <UniqueIdentifier>{6c760a81-9bc8-4fb0-a145-8e119b783365}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Shape"> | ||||||
|  |       <UniqueIdentifier>{508b39c8-a430-45c3-9405-364fbc281220}</UniqueIdentifier> | ||||||
|  |     </Filter> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClCompile Include="..\..\core\Action\Action.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionDelay.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionFunc.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionGradual.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionLoop.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionMoveBy.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionMoveTo.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionOpacityBy.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionOpacityTo.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionRotateBy.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionRotateTo.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionScaleBy.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionScaleTo.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionSequence.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\ActionTwo.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Action\Animation.cpp"> | ||||||
|  |       <Filter>Action</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Game.cpp"> | ||||||
|  |       <Filter>Base</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Input.cpp"> | ||||||
|  |       <Filter>Base</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Renderer.cpp"> | ||||||
|  |       <Filter>Base</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Time.cpp"> | ||||||
|  |       <Filter>Base</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Base\Window.cpp"> | ||||||
|  |       <Filter>Base</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Font.cpp"> | ||||||
|  |       <Filter>Common</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Image.cpp"> | ||||||
|  |       <Filter>Common</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Object.cpp"> | ||||||
|  |       <Filter>Common</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Point.cpp"> | ||||||
|  |       <Filter>Common</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Scene.cpp"> | ||||||
|  |       <Filter>Common</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Common\Size.cpp"> | ||||||
|  |       <Filter>Common</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Common\String.cpp"> | ||||||
|  |       <Filter>Common</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeBase.cpp"> | ||||||
|  |       <Filter>Shape</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeCircle.cpp"> | ||||||
|  |       <Filter>Shape</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeEllipse.cpp"> | ||||||
|  |       <Filter>Shape</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeRectangle.cpp"> | ||||||
|  |       <Filter>Shape</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\ActionManager.cpp"> | ||||||
|  |       <Filter>Manager</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\CollisionManager.cpp"> | ||||||
|  |       <Filter>Manager</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\InputManager.cpp"> | ||||||
|  |       <Filter>Manager</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\MusicManager.cpp"> | ||||||
|  |       <Filter>Manager</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\ObjectManager.cpp"> | ||||||
|  |       <Filter>Manager</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\SceneManager.cpp"> | ||||||
|  |       <Filter>Manager</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Manager\TimerManager.cpp"> | ||||||
|  |       <Filter>Manager</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Button.cpp"> | ||||||
|  |       <Filter>Node</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Node\ButtonToggle.cpp"> | ||||||
|  |       <Filter>Node</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Menu.cpp"> | ||||||
|  |       <Filter>Node</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Node.cpp"> | ||||||
|  |       <Filter>Node</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Sprite.cpp"> | ||||||
|  |       <Filter>Node</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Node\Text.cpp"> | ||||||
|  |       <Filter>Node</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\CollisionListener.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Data.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\InputListener.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Listener.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Music.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Path.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Random.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Tool\Timer.cpp"> | ||||||
|  |       <Filter>Tool</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\Transition.cpp"> | ||||||
|  |       <Filter>Transition</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\TransitionEmerge.cpp"> | ||||||
|  |       <Filter>Transition</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\TransitionFade.cpp"> | ||||||
|  |       <Filter>Transition</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Transition\TransitionMove.cpp"> | ||||||
|  |       <Filter>Transition</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClInclude Include="..\..\core\eactions.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\easy2d.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\ebase.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\ecommon.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\emacros.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\emanagers.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\enodes.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\eshape.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\etools.h" /> | ||||||
|  |     <ClInclude Include="..\..\core\etransitions.h" /> | ||||||
|  |   </ItemGroup> | ||||||
|  | </Project> | ||||||
		Loading…
	
		Reference in New Issue