Magic_Game/Easy2D/Node/MouseNode.cpp

110 lines
1.5 KiB
C++
Raw Normal View History

2017-09-10 23:56:52 +08:00
#include "..\easy2d.h"
MouseNode::MouseNode() :
m_bBlock(true),
m_bTarget(false),
m_callback([]() {})
{
}
MouseNode::~MouseNode()
{
}
bool MouseNode::_exec(bool active)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD><E3A3AC> display <20><><EFBFBD><EFBFBD>Ϊ false<73><65><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
if (!active || !m_bDisplay)
{
return false;
}
// <20>жϽڵ<CFBD>״̬
_judge();
// <20><><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϣ<EFBFBD><CFA3><EFBFBD>ѡ<EFBFBD><D1A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҳ<EFBFBD>ڽڵ<DABD><DAB5>ϣ<EFBFBD>
if (m_eStatus == MOUSEIN || m_eStatus == SELECTED)
{
// <20>ڵ㱻<DAB5><E3B1BB><EFBFBD><EFBFBD>ѡ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧<EFBFBD><CCA7>
if (m_bTarget && MouseMsg::getLButtonUpMsg())
{
onClicked(); // ִ<>лص<D0BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
}
// <20><><EFBFBD>ڵ㲻<DAB5><E3B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><E6BDB9>
if (!m_bBlock) return true;
}
return false;
}
void MouseNode::_onDraw()
{
// <20>ڵ<EFBFBD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
if (!m_bDisplay)
{
return;
}
// <20>ڵ<EFBFBD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ѡ<EFBFBD><D1A1>
if (m_eStatus == SELECTED)
{
_onSelected();
}
else
{
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڽڵ<DABD><DAB5><EFBFBD>
if (m_eStatus == MOUSEIN)
{
_onMouseIn();
}
else
{
_onNormal();
}
}
}
void MouseNode::_setNormal()
{
m_bTarget = false; // ʧȥ<CAA7><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_eStatus = NORMAL;
}
void MouseNode::_setMouseIn()
{
m_eStatus = MOUSEIN;
}
void MouseNode::_setSelected()
{
m_bTarget = true; // ȡ<>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_eStatus = SELECTED;
}
void MouseNode::onClicked()
{
m_callback();
}
bool MouseNode::isMouseIn()
{
return m_eStatus == MOUSEIN || m_eStatus == SELECTED;
}
bool MouseNode::isSelected()
{
return m_eStatus == SELECTED;
}
void MouseNode::setOnMouseClicked(const CLICK_CALLBACK & callback)
{
m_callback = callback;
}
void MouseNode::reset()
{
m_eStatus = NORMAL;
}
void MouseNode::setBlock(bool block)
{
m_bBlock = block;
}