| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | #include "..\emsg.h"
 | 
					
						
							|  |  |  |  | #include "..\Win\winbase.h"
 | 
					
						
							|  |  |  |  | #include <vector>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | e2d::EMouseMsg mouseMsg; | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | e2d::EKeyMsg keyMsg; | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | std::vector<e2d::EMouseListener*> s_vMouseListeners; | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | std::vector<e2d::EKeyboardListener*> s_vKeyboardListeners; | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | DWORD e2d::EMouseMsg::getX() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return LOWORD(mouseMsg.m_lParam); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | DWORD e2d::EMouseMsg::getY() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return HIWORD(mouseMsg.m_lParam); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | e2d::EPoint e2d::EMouseMsg::getPos() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return EPoint(LOWORD(mouseMsg.m_lParam), HIWORD(mouseMsg.m_lParam)); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EMouseMsg::isLButtonDown() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_LBUTTON; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EMouseMsg::isMButtonDown() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_MBUTTON; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EMouseMsg::isRButtonDown() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_RBUTTON; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EMouseMsg::isShiftDown() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_SHIFT; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EMouseMsg::isCtrlDown() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_CONTROL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | DWORD e2d::EMouseMsg::getWheelDelta() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return GET_WHEEL_DELTA_WPARAM(mouseMsg.m_wParam); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | e2d::EMouseMsg::MOUSE_MSG e2d::EMouseMsg::getMsg() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return MOUSE_MSG(mouseMsg.m_nMsg); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | e2d::EKeyMsg::KEYBOARD_MSG e2d::EKeyMsg::getMsg() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return KEYBOARD_MSG(keyMsg.m_nMsg); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | e2d::EKeyMsg::KEY e2d::EKeyMsg::getVal() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return KEY(keyMsg.m_wParam); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | DWORD e2d::EKeyMsg::getCount() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return (((DWORD)keyMsg.m_lParam) & 0x0000FFFF); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EKeyMsg::isKeyDown(KEY key) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (::GetAsyncKeyState((int)key) & 0x8000) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return true; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return false; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EKeyMsg::isCapitalLockOn() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (::GetKeyState(VK_CAPITAL) & 0x0001) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return true; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return false; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EKeyMsg::isNumpadLockOn() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (::GetKeyState(VK_NUMLOCK) & 0x0001) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return true; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return false; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | bool e2d::EKeyMsg::isScrollLockOn() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (::GetKeyState(VK_SCROLL) & 0x0001) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return true; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return false; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::MouseProc(UINT message, WPARAM wParam, LPARAM lParam) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | 	mouseMsg.m_nMsg = message; | 
					
						
							|  |  |  |  | 	mouseMsg.m_wParam = wParam; | 
					
						
							|  |  |  |  | 	mouseMsg.m_lParam = lParam; | 
					
						
							|  |  |  |  | 	// ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	for (auto mlistener : s_vMouseListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (mlistener->isRunning()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			mlistener->runCallback(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::KeyboardProc(UINT message, WPARAM wParam, LPARAM lParam) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>水<EFBFBD><E6B0B4><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | 	keyMsg.m_nMsg = message; | 
					
						
							|  |  |  |  | 	keyMsg.m_wParam = wParam; | 
					
						
							|  |  |  |  | 	keyMsg.m_lParam = lParam; | 
					
						
							|  |  |  |  | 	// ִ<>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto klistener : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (klistener->isRunning()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			klistener->runCallback(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | void e2d::EMsgManager::bindListenerWith(e2d::EMouseListener * listener, EScene * pParentScene) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	WARN_IF(listener == nullptr, "EMouseListener NULL pointer exception!"); | 
					
						
							|  |  |  |  | 	WARN_IF(pParentScene == nullptr, "Bind EMouseListener with a NULL EScene pointer!"); | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (listener && pParentScene) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		listener->start(); | 
					
						
							|  |  |  |  | 		listener->retain(); | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 		listener->m_pParentScene = pParentScene; | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 		s_vMouseListeners.push_back(listener); | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | void e2d::EMsgManager::bindListenerWith(EKeyboardListener * listener, EScene * pParentScene) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	WARN_IF(listener == nullptr, "EKeyboardListener NULL pointer exception!"); | 
					
						
							|  |  |  |  | 	WARN_IF(pParentScene == nullptr, "Bind EKeyboardListener with a NULL EScene pointer!"); | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (listener && pParentScene) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		listener->start(); | 
					
						
							|  |  |  |  | 		listener->retain(); | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 		listener->m_pParentScene = pParentScene; | 
					
						
							|  |  |  |  | 		s_vKeyboardListeners.push_back(listener); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::bindListenerWith(EMouseListener * listener, ENode * pParentNode) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	WARN_IF(listener == nullptr, "EMouseListener NULL pointer exception!"); | 
					
						
							|  |  |  |  | 	WARN_IF(pParentNode == nullptr, "Bind EMouseListener with a NULL ENode pointer!"); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (listener && pParentNode) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		listener->start(); | 
					
						
							|  |  |  |  | 		listener->retain(); | 
					
						
							|  |  |  |  | 		listener->m_pParentNode = pParentNode; | 
					
						
							|  |  |  |  | 		s_vMouseListeners.push_back(listener); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::bindListenerWith(EKeyboardListener * listener, ENode * pParentNode) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	WARN_IF(listener == nullptr, "EKeyboardListener NULL pointer exception!"); | 
					
						
							|  |  |  |  | 	WARN_IF(pParentNode == nullptr, "Bind EKeyboardListener with a NULL ENode pointer!"); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if (listener && pParentNode) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		listener->start(); | 
					
						
							|  |  |  |  | 		listener->retain(); | 
					
						
							|  |  |  |  | 		listener->m_pParentNode = pParentNode; | 
					
						
							|  |  |  |  | 		s_vKeyboardListeners.push_back(listener); | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::startListener(EString name) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getName() == name) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->start(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getName() == name) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->start(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::stopListener(EString name) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getName() == name) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->stop(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getName() == name) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->stop(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::delListener(EString name) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	std::vector<EMouseListener*>::iterator mIter; | 
					
						
							|  |  |  |  | 	for (mIter = s_vMouseListeners.begin(); mIter != s_vMouseListeners.end();) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 		if ((*mIter)->getName() == name) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 			(*mIter)->autoRelease(); | 
					
						
							|  |  |  |  | 			(*mIter)->release(); | 
					
						
							|  |  |  |  | 			mIter = s_vMouseListeners.erase(mIter); | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 			mIter++; | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	std::vector<EKeyboardListener*>::iterator kIter; | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (kIter = s_vKeyboardListeners.begin(); kIter != s_vKeyboardListeners.end();) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 		if ((*kIter)->getName() == name) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 			(*kIter)->autoRelease(); | 
					
						
							|  |  |  |  | 			(*kIter)->release(); | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 			kIter = s_vKeyboardListeners.erase(kIter); | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 			kIter++; | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | void e2d::EMsgManager::startAllMouseListener() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (!l->isWaiting()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->start(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::stopAllMouseListener() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (!l->isWaiting()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->stop(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::clearAllMouseListeners() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		l->autoRelease(); | 
					
						
							|  |  |  |  | 		l->release(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	s_vMouseListeners.clear(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::startAllKeyboardListener() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (!l->isWaiting()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->start(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::stopAllKeyboardListener() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (!l->isWaiting()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->stop(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::clearAllKeyboardListeners() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		l->autoRelease(); | 
					
						
							|  |  |  |  | 		l->release(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	s_vKeyboardListeners.clear(); | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::startAllMouseListenersBindWithScene(EScene * pParentScene) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == pParentScene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->start(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::stopAllMouseListenersBindWithScene(EScene * pParentScene) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == pParentScene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->stop(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::startAllKeyboardListenersBindWithScene(EScene * pParentScene) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == pParentScene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->start(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::stopAllKeyboardListenersBindWithScene(EScene * pParentScene) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == pParentScene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->stop(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::waitAllListenersBindWithScene(EScene * scene) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == scene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->wait(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>𰴼<EFBFBD><F0B0B4BC><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == scene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->wait(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | void e2d::EMsgManager::notifyAllListenersBindWithScene(EScene * scene) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == scene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->notify(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-13 20:17:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentScene() == scene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->notify(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | void e2d::EMsgManager::clearAllListenersBindWithScene(EScene * scene) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	std::vector<EMouseListener*>::iterator mIter; | 
					
						
							|  |  |  |  | 	for (mIter = s_vMouseListeners.begin(); mIter != s_vMouseListeners.end();) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if ((*mIter)->getParentScene() == scene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			(*mIter)->autoRelease(); | 
					
						
							|  |  |  |  | 			(*mIter)->release(); | 
					
						
							|  |  |  |  | 			mIter = s_vMouseListeners.erase(mIter); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			mIter++; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	std::vector<EKeyboardListener*>::iterator kIter; | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (kIter = s_vKeyboardListeners.begin(); kIter != s_vKeyboardListeners.end();) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if ((*kIter)->getParentScene() == scene) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			(*kIter)->autoRelease(); | 
					
						
							|  |  |  |  | 			(*kIter)->release(); | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 			kIter = s_vKeyboardListeners.erase(kIter); | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			kIter++; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::waitAllListenersBindWithNode(ENode * pParentNode) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentNode() == pParentNode) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->wait(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>𰴼<EFBFBD><F0B0B4BC><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentNode() == pParentNode) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->wait(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::notifyAllListenersBindWithNode(ENode * pParentNode) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	for (auto l : s_vMouseListeners) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentNode() == pParentNode) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->notify(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (auto l : s_vKeyboardListeners) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (l->getParentNode() == pParentNode) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			l->notify(); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EMsgManager::clearAllListenersBindWithNode(ENode * pParentNode) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	std::vector<EMouseListener*>::iterator mIter; | 
					
						
							|  |  |  |  | 	for (mIter = s_vMouseListeners.begin(); mIter != s_vMouseListeners.end();) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if ((*mIter)->getParentNode() == pParentNode) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			(*mIter)->autoRelease(); | 
					
						
							|  |  |  |  | 			(*mIter)->release(); | 
					
						
							|  |  |  |  | 			mIter = s_vMouseListeners.erase(mIter); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			mIter++; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	std::vector<EKeyboardListener*>::iterator kIter; | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 	for (kIter = s_vKeyboardListeners.begin(); kIter != s_vKeyboardListeners.end();) | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if ((*kIter)->getParentNode() == pParentNode) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			(*kIter)->autoRelease(); | 
					
						
							|  |  |  |  | 			(*kIter)->release(); | 
					
						
							| 
									
										
										
										
											2017-10-14 10:02:15 +08:00
										 |  |  |  | 			kIter = s_vKeyboardListeners.erase(kIter); | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			kIter++; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 |