2017-11-07 22:20:46 +08:00
|
|
|
|
#include "..\enodes.h"
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
e2d::ButtonToggle::ButtonToggle()
|
|
|
|
|
|
: Button()
|
2018-02-04 21:24:27 +08:00
|
|
|
|
, m_bState(true)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
, m_pNormalOn(nullptr)
|
|
|
|
|
|
, m_pMouseoverOn(nullptr)
|
|
|
|
|
|
, m_pSelectedOn(nullptr)
|
|
|
|
|
|
, m_pDisabledOn(nullptr)
|
|
|
|
|
|
, m_pNormalOff(nullptr)
|
|
|
|
|
|
, m_pMouseoverOff(nullptr)
|
|
|
|
|
|
, m_pSelectedOff(nullptr)
|
|
|
|
|
|
, m_pDisabledOff(nullptr)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-03-28 17:56:04 +08:00
|
|
|
|
e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Function func)
|
2018-02-07 16:37:12 +08:00
|
|
|
|
: Button()
|
2018-02-04 21:24:27 +08:00
|
|
|
|
, m_bState(true)
|
2017-12-15 21:51:07 +08:00
|
|
|
|
, m_pNormalOn(nullptr)
|
|
|
|
|
|
, m_pMouseoverOn(nullptr)
|
|
|
|
|
|
, m_pSelectedOn(nullptr)
|
|
|
|
|
|
, m_pDisabledOn(nullptr)
|
|
|
|
|
|
, m_pNormalOff(nullptr)
|
|
|
|
|
|
, m_pMouseoverOff(nullptr)
|
|
|
|
|
|
, m_pSelectedOff(nullptr)
|
|
|
|
|
|
, m_pDisabledOff(nullptr)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->setNormal(toggleOnNormal);
|
|
|
|
|
|
this->setNormalOff(toggleOffNormal);
|
2018-03-31 18:12:01 +08:00
|
|
|
|
this->setClickFunc(func);
|
2017-11-07 22:20:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-03-28 17:56:04 +08:00
|
|
|
|
e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnSelected, Node * toggleOffSelected, Function func)
|
2018-02-07 16:37:12 +08:00
|
|
|
|
: Button()
|
2018-02-04 21:24:27 +08:00
|
|
|
|
, m_bState(true)
|
2017-12-15 21:51:07 +08:00
|
|
|
|
, m_pNormalOn(nullptr)
|
|
|
|
|
|
, m_pMouseoverOn(nullptr)
|
|
|
|
|
|
, m_pSelectedOn(nullptr)
|
|
|
|
|
|
, m_pDisabledOn(nullptr)
|
|
|
|
|
|
, m_pNormalOff(nullptr)
|
|
|
|
|
|
, m_pMouseoverOff(nullptr)
|
|
|
|
|
|
, m_pSelectedOff(nullptr)
|
|
|
|
|
|
, m_pDisabledOff(nullptr)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->setNormal(toggleOnNormal);
|
|
|
|
|
|
this->setNormalOff(toggleOffNormal);
|
|
|
|
|
|
this->setSelected(toggleOnSelected);
|
|
|
|
|
|
this->setSelectedOff(toggleOffSelected);
|
2018-03-31 18:12:01 +08:00
|
|
|
|
this->setClickFunc(func);
|
2017-11-07 22:20:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-03-28 17:56:04 +08:00
|
|
|
|
e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnMouseOver, Node * toggleOffMouseOver, Node * toggleOnSelected, Node * toggleOffSelected, Function func)
|
2018-02-07 16:37:12 +08:00
|
|
|
|
: Button()
|
2018-02-04 21:24:27 +08:00
|
|
|
|
, m_bState(true)
|
2017-12-15 21:51:07 +08:00
|
|
|
|
, m_pNormalOn(nullptr)
|
|
|
|
|
|
, m_pMouseoverOn(nullptr)
|
|
|
|
|
|
, m_pSelectedOn(nullptr)
|
|
|
|
|
|
, m_pDisabledOn(nullptr)
|
|
|
|
|
|
, m_pNormalOff(nullptr)
|
|
|
|
|
|
, m_pMouseoverOff(nullptr)
|
|
|
|
|
|
, m_pSelectedOff(nullptr)
|
|
|
|
|
|
, m_pDisabledOff(nullptr)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->setNormal(toggleOnNormal);
|
|
|
|
|
|
this->setNormalOff(toggleOffNormal);
|
|
|
|
|
|
this->setMouseOver(toggleOnMouseOver);
|
|
|
|
|
|
this->setMouseOverOff(toggleOffMouseOver);
|
|
|
|
|
|
this->setSelected(toggleOnSelected);
|
|
|
|
|
|
this->setSelectedOff(toggleOffSelected);
|
2018-03-31 18:12:01 +08:00
|
|
|
|
this->setClickFunc(func);
|
2017-11-07 22:20:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-03-28 17:56:04 +08:00
|
|
|
|
e2d::ButtonToggle::ButtonToggle(Node * toggleOnNormal, Node * toggleOffNormal, Node * toggleOnMouseOver, Node * toggleOffMouseOver, Node * toggleOnSelected, Node * toggleOffSelected, Node * toggleOnDisabled, Node * toggleOffDisabled, Function func)
|
2018-02-07 16:37:12 +08:00
|
|
|
|
: Button()
|
2018-02-04 21:24:27 +08:00
|
|
|
|
, m_bState(true)
|
2017-12-15 21:51:07 +08:00
|
|
|
|
, m_pNormalOn(nullptr)
|
|
|
|
|
|
, m_pMouseoverOn(nullptr)
|
|
|
|
|
|
, m_pSelectedOn(nullptr)
|
|
|
|
|
|
, m_pDisabledOn(nullptr)
|
|
|
|
|
|
, m_pNormalOff(nullptr)
|
|
|
|
|
|
, m_pMouseoverOff(nullptr)
|
|
|
|
|
|
, m_pSelectedOff(nullptr)
|
|
|
|
|
|
, m_pDisabledOff(nullptr)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->setNormal(toggleOnNormal);
|
|
|
|
|
|
this->setNormalOff(toggleOffNormal);
|
|
|
|
|
|
this->setMouseOver(toggleOnMouseOver);
|
|
|
|
|
|
this->setMouseOverOff(toggleOffMouseOver);
|
|
|
|
|
|
this->setSelected(toggleOnSelected);
|
|
|
|
|
|
this->setSelectedOff(toggleOffSelected);
|
|
|
|
|
|
this->setDisabled(toggleOnDisabled);
|
|
|
|
|
|
this->setDisabledOff(toggleOffDisabled);
|
2018-03-31 18:12:01 +08:00
|
|
|
|
this->setClickFunc(func);
|
2017-11-07 22:20:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
bool e2d::ButtonToggle::getState() const
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
2018-02-04 21:24:27 +08:00
|
|
|
|
return m_bState;
|
2017-11-07 22:20:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setState(bool bState)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
2018-02-04 21:24:27 +08:00
|
|
|
|
if (m_bState != bState)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
2018-02-04 21:24:27 +08:00
|
|
|
|
m_bState = bState;
|
|
|
|
|
|
_updateState();
|
2017-11-09 18:22:41 +08:00
|
|
|
|
_updateVisiable();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setNormal(Node * normal)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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);
|
2018-03-01 19:28:22 +08:00
|
|
|
|
this->setSize(normal->getWidth(), normal->getHeight());
|
2017-11-07 22:20:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
m_pNormalOn = normal;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setMouseOver(Node * mouseover)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setSelected(Node * selected)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setDisabled(Node * disabled)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setNormalOff(Node * normal)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setMouseOverOff(Node * mouseover)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setSelectedOff(Node * selected)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::setDisabledOff(Node * disabled)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
2018-02-04 21:24:27 +08:00
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
_updateVisiable();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::_updateState()
|
2018-02-04 21:24:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (m_bState)
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
|
void e2d::ButtonToggle::_runCallback()
|
2017-11-07 22:20:46 +08:00
|
|
|
|
{
|
2018-02-04 21:24:27 +08:00
|
|
|
|
m_bState = !m_bState;
|
|
|
|
|
|
_updateState();
|
2017-11-07 22:20:46 +08:00
|
|
|
|
|
|
|
|
|
|
if (m_Callback)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Callback();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|