319 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			319 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C++
		
	
	
	
| #include "..\enode.h"
 | ||
| 
 | ||
| e2d::ButtonToggle::ButtonToggle()
 | ||
| 	: Button()
 | ||
| 	, m_bState(true)
 | ||
| 	, m_pNormalOn(nullptr)
 | ||
| 	, m_pMouseoverOn(nullptr)
 | ||
| 	, m_pSelectedOn(nullptr)
 | ||
| 	, m_pDisabledOn(nullptr)
 | ||
| 	, m_pNormalOff(nullptr)
 | ||
| 	, m_pMouseoverOff(nullptr)
 | ||
| 	, m_pSelectedOff(nullptr)
 | ||
| 	, m_pDisabledOff(nullptr)
 | ||
| {
 | ||
| }
 | ||
| 
 | ||
| e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Function func)
 | ||
| 	: Button()
 | ||
| 	, m_bState(true)
 | ||
| 	, m_pNormalOn(nullptr)
 | ||
| 	, m_pMouseoverOn(nullptr)
 | ||
| 	, m_pSelectedOn(nullptr)
 | ||
| 	, m_pDisabledOn(nullptr)
 | ||
| 	, m_pNormalOff(nullptr)
 | ||
| 	, m_pMouseoverOff(nullptr)
 | ||
| 	, m_pSelectedOff(nullptr)
 | ||
| 	, m_pDisabledOff(nullptr)
 | ||
| {
 | ||
| 	this->setNormal(toggleOnNormal);
 | ||
| 	this->setNormalOff(toggleOffNormal);
 | ||
| 	this->setClickFunc(func);
 | ||
| }
 | ||
| 
 | ||
| e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnSelected, Node * toggleOffSelected, Function func)
 | ||
| 	: Button()
 | ||
| 	, m_bState(true)
 | ||
| 	, m_pNormalOn(nullptr)
 | ||
| 	, m_pMouseoverOn(nullptr)
 | ||
| 	, m_pSelectedOn(nullptr)
 | ||
| 	, m_pDisabledOn(nullptr)
 | ||
| 	, m_pNormalOff(nullptr)
 | ||
| 	, m_pMouseoverOff(nullptr)
 | ||
| 	, m_pSelectedOff(nullptr)
 | ||
| 	, m_pDisabledOff(nullptr)
 | ||
| {
 | ||
| 	this->setNormal(toggleOnNormal);
 | ||
| 	this->setNormalOff(toggleOffNormal);
 | ||
| 	this->setSelected(toggleOnSelected);
 | ||
| 	this->setSelectedOff(toggleOffSelected);
 | ||
| 	this->setClickFunc(func);
 | ||
| }
 | ||
| 
 | ||
| e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnMouseOver, Node * toggleOffMouseOver, Node * toggleOnSelected, Node * toggleOffSelected, Function func)
 | ||
| 	: Button()
 | ||
| 	, m_bState(true)
 | ||
| 	, m_pNormalOn(nullptr)
 | ||
| 	, m_pMouseoverOn(nullptr)
 | ||
| 	, m_pSelectedOn(nullptr)
 | ||
| 	, m_pDisabledOn(nullptr)
 | ||
| 	, m_pNormalOff(nullptr)
 | ||
| 	, m_pMouseoverOff(nullptr)
 | ||
| 	, m_pSelectedOff(nullptr)
 | ||
| 	, m_pDisabledOff(nullptr)
 | ||
| {
 | ||
| 	this->setNormal(toggleOnNormal);
 | ||
| 	this->setNormalOff(toggleOffNormal);
 | ||
| 	this->setMouseOver(toggleOnMouseOver);
 | ||
| 	this->setMouseOverOff(toggleOffMouseOver);
 | ||
| 	this->setSelected(toggleOnSelected);
 | ||
| 	this->setSelectedOff(toggleOffSelected);
 | ||
| 	this->setClickFunc(func);
 | ||
| }
 | ||
| 
 | ||
| e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnMouseOver, Node * toggleOffMouseOver, Node * toggleOnSelected, Node * toggleOffSelected, Node * toggleOnDisabled, Node * toggleOffDisabled, Function func)
 | ||
| 	: Button()
 | ||
| 	, m_bState(true)
 | ||
| 	, m_pNormalOn(nullptr)
 | ||
| 	, m_pMouseoverOn(nullptr)
 | ||
| 	, m_pSelectedOn(nullptr)
 | ||
| 	, m_pDisabledOn(nullptr)
 | ||
| 	, m_pNormalOff(nullptr)
 | ||
| 	, m_pMouseoverOff(nullptr)
 | ||
| 	, m_pSelectedOff(nullptr)
 | ||
| 	, m_pDisabledOff(nullptr)
 | ||
| {
 | ||
| 	this->setNormal(toggleOnNormal);
 | ||
| 	this->setNormalOff(toggleOffNormal);
 | ||
| 	this->setMouseOver(toggleOnMouseOver);
 | ||
| 	this->setMouseOverOff(toggleOffMouseOver);
 | ||
| 	this->setSelected(toggleOnSelected);
 | ||
| 	this->setSelectedOff(toggleOffSelected);
 | ||
| 	this->setDisabled(toggleOnDisabled);
 | ||
| 	this->setDisabledOff(toggleOffDisabled);
 | ||
| 	this->setClickFunc(func);
 | ||
| }
 | ||
| 
 | ||
| bool e2d::ButtonToggle::getState() const
 | ||
| {
 | ||
| 	return m_bState;
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setState(bool bState)
 | ||
| {
 | ||
| 	if (m_bState != bState)
 | ||
| 	{
 | ||
| 		m_bState = bState;
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setNormal(Node * normal)
 | ||
| {
 | ||
| 	if (normal != m_pNormalOn)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pNormalOn)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pNormalOn);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (normal)
 | ||
| 		{
 | ||
| 			this->addChild(normal);
 | ||
| 			this->setSize(normal->getWidth(), normal->getHeight());
 | ||
| 		}
 | ||
| 		m_pNormalOn = normal;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setMouseOver(Node * mouseover)
 | ||
| {
 | ||
| 	if (mouseover != m_pMouseoverOn)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pMouseoverOn)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pMouseoverOn);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (mouseover)
 | ||
| 		{
 | ||
| 			this->addChild(mouseover);
 | ||
| 		}
 | ||
| 		m_pMouseoverOn = mouseover;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setSelected(Node * selected)
 | ||
| {
 | ||
| 	if (selected != m_pSelectedOn)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pSelectedOn)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pSelectedOn);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (selected)
 | ||
| 		{
 | ||
| 			this->addChild(selected);
 | ||
| 		}
 | ||
| 		m_pSelectedOn = selected;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setDisabled(Node * disabled)
 | ||
| {
 | ||
| 	if (disabled != m_pDisabledOn)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pDisabledOn)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pDisabledOn);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (disabled)
 | ||
| 		{
 | ||
| 			this->addChild(disabled);
 | ||
| 		}
 | ||
| 		m_pDisabledOn = disabled;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setNormalOff(Node * normal)
 | ||
| {
 | ||
| 	if (normal != m_pNormalOff)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pNormalOff)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pNormalOff);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (normal)
 | ||
| 		{
 | ||
| 			this->addChild(normal);
 | ||
| 		}
 | ||
| 		m_pNormalOff = normal;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setMouseOverOff(Node * mouseover)
 | ||
| {
 | ||
| 	if (mouseover != m_pMouseoverOff)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pMouseoverOff)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pMouseoverOff);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (mouseover)
 | ||
| 		{
 | ||
| 			this->addChild(mouseover);
 | ||
| 		}
 | ||
| 		m_pMouseoverOff = mouseover;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setSelectedOff(Node * selected)
 | ||
| {
 | ||
| 	if (selected != m_pSelectedOff)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pSelectedOff)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pSelectedOff);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (selected)
 | ||
| 		{
 | ||
| 			this->addChild(selected);
 | ||
| 		}
 | ||
| 		m_pSelectedOff = selected;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::setDisabledOff(Node * disabled)
 | ||
| {
 | ||
| 	if (disabled != m_pDisabledOff)
 | ||
| 	{
 | ||
| 		// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
 | ||
| 		if (m_pDisabledOff)
 | ||
| 		{
 | ||
| 			this->removeChild(m_pDisabledOff);
 | ||
| 		}
 | ||
| 		// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
 | ||
| 		if (disabled)
 | ||
| 		{
 | ||
| 			this->addChild(disabled);
 | ||
| 		}
 | ||
| 		m_pDisabledOff = disabled;
 | ||
| 
 | ||
| 		_updateState();
 | ||
| 		_updateVisiable();
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::_updateState()
 | ||
| {
 | ||
| 	if (m_bState)
 | ||
| 	{
 | ||
| 		m_pNormal = m_pNormalOn;
 | ||
| 		m_pMouseover = m_pMouseoverOn;
 | ||
| 		m_pSelected = m_pSelectedOn;
 | ||
| 		m_pDisabled = m_pDisabledOn;
 | ||
| 
 | ||
| 		if (m_pNormalOff) m_pNormalOff->setVisiable(false);
 | ||
| 		if (m_pMouseoverOff) m_pMouseoverOff->setVisiable(false);
 | ||
| 		if (m_pSelectedOff) m_pSelectedOff->setVisiable(false);
 | ||
| 		if (m_pDisabledOff) m_pDisabledOff->setVisiable(false);
 | ||
| 	}
 | ||
| 	else
 | ||
| 	{
 | ||
| 		m_pNormal = m_pNormalOff;
 | ||
| 		m_pMouseover = m_pMouseoverOff;
 | ||
| 		m_pSelected = m_pSelectedOff;
 | ||
| 		m_pDisabled = m_pDisabledOff;
 | ||
| 
 | ||
| 		if (m_pNormalOn) m_pNormalOn->setVisiable(false);
 | ||
| 		if (m_pMouseoverOn) m_pMouseoverOn->setVisiable(false);
 | ||
| 		if (m_pSelectedOn) m_pSelectedOn->setVisiable(false);
 | ||
| 		if (m_pDisabledOn) m_pDisabledOn->setVisiable(false);
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| void e2d::ButtonToggle::_runCallback()
 | ||
| {
 | ||
| 	m_bState = !m_bState;
 | ||
| 	_updateState();
 | ||
| 
 | ||
| 	if (m_Callback)
 | ||
| 	{
 | ||
| 		m_Callback();
 | ||
| 	}
 | ||
| }
 |