Magic_Game/core/Action/ActionLoop.cpp

62 lines
935 B
C++
Raw Normal View History

#include "..\eactions.h"
2017-11-03 12:51:01 +08:00
e2d::EActionLoop::EActionLoop(EAction * action, int times /* = -1 */)
: m_pAction(action)
, m_nTimes(0)
, m_nTotalTimes(times)
{
2017-12-16 15:49:48 +08:00
ASSERT(m_pAction != nullptr, "EActionLoop NULL pointer exception!");
2017-11-03 12:51:01 +08:00
m_pAction->retain();
}
e2d::EActionLoop::~EActionLoop()
{
2017-11-03 12:51:01 +08:00
SafeRelease(&m_pAction);
}
e2d::EActionLoop * e2d::EActionLoop::clone() const
{
2017-11-03 12:51:01 +08:00
return new EActionLoop(m_pAction->clone());
}
void e2d::EActionLoop::_init()
{
EAction::_init();
2018-02-04 21:24:27 +08:00
m_pAction->_setTarget(m_pTarget);
2017-11-03 12:51:01 +08:00
m_pAction->_init();
}
void e2d::EActionLoop::_update()
{
EAction::_update();
2017-11-03 12:51:01 +08:00
if (m_nTimes == m_nTotalTimes)
{
2017-11-03 12:51:01 +08:00
this->stop();
return;
}
m_pAction->_update();
2017-11-03 12:51:01 +08:00
if (m_pAction->_isEnding())
{
m_nTimes++;
EAction::_reset();
m_pAction->_reset();
}
}
void e2d::EActionLoop::_reset()
{
EAction::_reset();
2017-11-03 12:51:01 +08:00
m_pAction->_reset();
m_nTimes = 0;
}
void e2d::EActionLoop::_resetTime()
{
m_pAction->_resetTime();
}