| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | #include "..\enodes.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | e2d::EButton::EButton() | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	: m_Callback((const BtnClkCallback &)nullptr) | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	, m_eBtnState(EButton::NORMAL) | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	, m_bEnable(true) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	, m_bIsSelected(false) | 
					
						
							|  |  |  |  | 	, m_pNormal(nullptr) | 
					
						
							|  |  |  |  | 	, m_pMouseover(nullptr) | 
					
						
							|  |  |  |  | 	, m_pSelected(nullptr) | 
					
						
							|  |  |  |  | 	, m_pDisabled(nullptr) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | e2d::EButton::EButton(ENode * normal, const BtnClkCallback & callback) | 
					
						
							|  |  |  |  | 	: m_Callback((const BtnClkCallback &)nullptr) | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	, m_eBtnState(EButton::NORMAL) | 
					
						
							| 
									
										
										
										
											2017-12-15 21:51:07 +08:00
										 |  |  |  | 	, m_bEnable(true) | 
					
						
							|  |  |  |  | 	, m_bIsSelected(false) | 
					
						
							|  |  |  |  | 	, m_pNormal(nullptr) | 
					
						
							|  |  |  |  | 	, m_pMouseover(nullptr) | 
					
						
							|  |  |  |  | 	, m_pSelected(nullptr) | 
					
						
							|  |  |  |  | 	, m_pDisabled(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	this->setNormal(normal); | 
					
						
							|  |  |  |  | 	this->setCallback(callback); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | e2d::EButton::EButton(ENode * normal, ENode * selected, const BtnClkCallback & callback) | 
					
						
							|  |  |  |  | 	: m_Callback((const BtnClkCallback &)nullptr) | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	, m_eBtnState(EButton::NORMAL) | 
					
						
							| 
									
										
										
										
											2017-12-15 21:51:07 +08:00
										 |  |  |  | 	, m_bEnable(true) | 
					
						
							|  |  |  |  | 	, m_bIsSelected(false) | 
					
						
							|  |  |  |  | 	, m_pNormal(nullptr) | 
					
						
							|  |  |  |  | 	, m_pMouseover(nullptr) | 
					
						
							|  |  |  |  | 	, m_pSelected(nullptr) | 
					
						
							|  |  |  |  | 	, m_pDisabled(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	this->setNormal(normal); | 
					
						
							|  |  |  |  | 	this->setSelected(selected); | 
					
						
							|  |  |  |  | 	this->setCallback(callback); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | e2d::EButton::EButton(ENode * normal, ENode * mouseover, ENode * selected, const BtnClkCallback & callback) | 
					
						
							|  |  |  |  | 	: m_Callback((const BtnClkCallback &)nullptr) | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	, m_eBtnState(EButton::NORMAL) | 
					
						
							| 
									
										
										
										
											2017-12-15 21:51:07 +08:00
										 |  |  |  | 	, m_bEnable(true) | 
					
						
							|  |  |  |  | 	, m_bIsSelected(false) | 
					
						
							|  |  |  |  | 	, m_pNormal(nullptr) | 
					
						
							|  |  |  |  | 	, m_pMouseover(nullptr) | 
					
						
							|  |  |  |  | 	, m_pSelected(nullptr) | 
					
						
							|  |  |  |  | 	, m_pDisabled(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	this->setNormal(normal); | 
					
						
							|  |  |  |  | 	this->setMouseOver(mouseover); | 
					
						
							|  |  |  |  | 	this->setSelected(selected); | 
					
						
							|  |  |  |  | 	this->setCallback(callback); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | e2d::EButton::EButton(ENode * normal, ENode * mouseover, ENode * selected, ENode * disabled, const BtnClkCallback & callback) | 
					
						
							|  |  |  |  | 	: m_Callback((const BtnClkCallback &)nullptr) | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	, m_eBtnState(EButton::NORMAL) | 
					
						
							| 
									
										
										
										
											2017-12-15 21:51:07 +08:00
										 |  |  |  | 	, m_bEnable(true) | 
					
						
							|  |  |  |  | 	, m_bIsSelected(false) | 
					
						
							|  |  |  |  | 	, m_pNormal(nullptr) | 
					
						
							|  |  |  |  | 	, m_pMouseover(nullptr) | 
					
						
							|  |  |  |  | 	, m_pSelected(nullptr) | 
					
						
							|  |  |  |  | 	, m_pDisabled(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	this->setNormal(normal); | 
					
						
							|  |  |  |  | 	this->setMouseOver(mouseover); | 
					
						
							|  |  |  |  | 	this->setSelected(selected); | 
					
						
							|  |  |  |  | 	this->setDisabled(disabled); | 
					
						
							|  |  |  |  | 	this->setCallback(callback); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | bool e2d::EButton::isEnable() const | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	return m_bEnable; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | void e2d::EButton::setNormal(ENode * normal) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	if (normal != m_pNormal) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		if (m_pNormal) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->removeChild(m_pNormal); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		if (normal) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->addChild(normal); | 
					
						
							| 
									
										
										
										
											2017-12-05 08:31:54 +08:00
										 |  |  |  | 			normal->setPivot(m_fPivotX, m_fPivotY); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		m_pNormal = normal; | 
					
						
							| 
									
										
										
										
											2017-11-09 18:22:41 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		_updateVisiable(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EButton::setMouseOver(ENode * mouseover) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	if (mouseover != m_pNormal) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		if (m_pMouseover) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->removeChild(m_pMouseover); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		if (mouseover) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->addChild(mouseover); | 
					
						
							| 
									
										
										
										
											2017-12-05 08:31:54 +08:00
										 |  |  |  | 			mouseover->setPivot(m_fPivotX, m_fPivotY); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		m_pMouseover = mouseover; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		_updateVisiable(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EButton::setSelected(ENode * selected) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	if (selected != m_pNormal) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		if (m_pSelected) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->removeChild(m_pSelected); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		if (selected) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->addChild(selected); | 
					
						
							| 
									
										
										
										
											2017-12-05 08:31:54 +08:00
										 |  |  |  | 			selected->setPivot(m_fPivotX, m_fPivotY); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		m_pSelected = selected; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		_updateVisiable(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EButton::setDisabled(ENode * disabled) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	if (disabled != m_pNormal) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		if (m_pDisabled) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->removeChild(m_pDisabled); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		if (disabled) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			this->addChild(disabled); | 
					
						
							| 
									
										
										
										
											2017-12-05 08:31:54 +08:00
										 |  |  |  | 			disabled->setPivot(m_fPivotX, m_fPivotY); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		m_pDisabled = disabled; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		_updateVisiable(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | void e2d::EButton::setEnable(bool bEnable) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	if (m_bEnable != bEnable) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_bEnable = bEnable; | 
					
						
							| 
									
										
										
										
											2017-11-09 18:22:41 +08:00
										 |  |  |  | 		_updateVisiable(); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | void e2d::EButton::setCallback(const BtnClkCallback & callback) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	WARN_IF(m_pNormal == nullptr, "EButton cannot work without anything to show. Please set its normal displayed."); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2017-11-04 16:20:17 +08:00
										 |  |  |  | 	m_Callback = callback; | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-05 08:31:54 +08:00
										 |  |  |  | void e2d::EButton::setPivotX(float pivotX) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	ENode::setPivotX(pivotX); | 
					
						
							|  |  |  |  | 	if (m_pNormal) m_pNormal->setPivotX(pivotX); | 
					
						
							|  |  |  |  | 	if (m_pMouseover) m_pMouseover->setPivotX(pivotX); | 
					
						
							|  |  |  |  | 	if (m_pSelected) m_pSelected->setPivotX(pivotX); | 
					
						
							|  |  |  |  | 	if (m_pDisabled) m_pDisabled->setPivotX(pivotX); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EButton::setPivotY(float pivotY) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	ENode::setPivotY(pivotY); | 
					
						
							|  |  |  |  | 	if (m_pNormal) m_pNormal->setPivotY(pivotY); | 
					
						
							|  |  |  |  | 	if (m_pMouseover) m_pMouseover->setPivotY(pivotY); | 
					
						
							|  |  |  |  | 	if (m_pSelected) m_pSelected->setPivotY(pivotY); | 
					
						
							|  |  |  |  | 	if (m_pDisabled) m_pDisabled->setPivotY(pivotY); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EButton::setPivot(float pivotX, float pivotY) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	ENode::setPivot(pivotX, pivotY); | 
					
						
							|  |  |  |  | 	if (m_pNormal) m_pNormal->setPivot(pivotX, pivotY); | 
					
						
							|  |  |  |  | 	if (m_pMouseover) m_pMouseover->setPivot(pivotX, pivotY); | 
					
						
							|  |  |  |  | 	if (m_pSelected) m_pSelected->setPivot(pivotX, pivotY); | 
					
						
							|  |  |  |  | 	if (m_pDisabled) m_pDisabled->setPivot(pivotX, pivotY); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | void e2d::EButton::onUpdate() | 
					
						
							| 
									
										
										
										
											2017-12-16 15:49:48 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	if (m_bEnable && m_pNormal) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		ENode * pMouseover = m_pMouseover ? m_pMouseover : m_pNormal; | 
					
						
							|  |  |  |  | 		ENode * pSelected = m_pSelected ? m_pSelected : m_pNormal; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		if (EInput::isMouseLButtonRelease()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧<EFBFBD><CCA7>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڰ<EFBFBD>ť<EFBFBD>ڲ<EFBFBD>
 | 
					
						
							|  |  |  |  | 			if (m_bIsSelected && | 
					
						
							|  |  |  |  | 				pSelected->isPointIn(EInput::getMousePos())) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				_runCallback(); | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 			// <20><><EFBFBD><EFBFBD> m_bIsSelected Ϊ false
 | 
					
						
							|  |  |  |  | 			m_bIsSelected = false; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		if (EInput::isMouseLButtonPress()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			if (pMouseover->isPointIn(EInput::getMousePos())) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD>λ<EFBFBD>ڰ<EFBFBD>ť<EFBFBD><C5A5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> m_bIsSelected Ϊ true
 | 
					
						
							|  |  |  |  | 				m_bIsSelected = true; | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 				_setState(EButton::SELECTED); | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 				return; | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		if (m_bIsSelected && EInput::isMouseLButtonDown()) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			if (pSelected->isPointIn(EInput::getMousePos())) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 				_setState(EButton::SELECTED); | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 				return; | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else if (m_pNormal->isPointIn(EInput::getMousePos())) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 			_setState(EButton::MOUSEOVER); | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 			return; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 		_setState(EButton::NORMAL); | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-12-16 15:49:48 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | void e2d::EButton::onPause() | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	this->onUpdate(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void e2d::EButton::_setState(BTN_STATE state) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_eBtnState != state) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 		m_eBtnState = state; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		_updateVisiable(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | void e2d::EButton::_updateVisiable() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_pNormal) m_pNormal->setVisiable(false); | 
					
						
							|  |  |  |  | 	if (m_pMouseover) m_pMouseover->setVisiable(false); | 
					
						
							|  |  |  |  | 	if (m_pSelected) m_pSelected->setVisiable(false); | 
					
						
							|  |  |  |  | 	if (m_pDisabled) m_pDisabled->setVisiable(false); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	if (m_bEnable) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 		if (m_eBtnState == EButton::SELECTED && m_pSelected) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 			m_pSelected->setVisiable(true); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 		else if (m_eBtnState == EButton::MOUSEOVER && m_pMouseover) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 			m_pMouseover->setVisiable(true); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			if (m_pNormal) m_pNormal->setVisiable(true); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (m_pDisabled) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 			m_pDisabled->setVisiable(true); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		else | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 			if (m_pNormal) m_pNormal->setVisiable(true); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | void e2d::EButton::_runCallback() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_Callback) | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 		m_Callback(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } |