2018-04-02 23:01:38 +08:00
|
|
|
#include "..\eaction.h"
|
2017-10-19 00:50:04 +08:00
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
e2d::ActionTwo::ActionTwo(Action * pActionFirst, Action * pActionSecond, bool bAtSameTime/* = false*/)
|
|
|
|
|
: m_pFirstAction(pActionFirst)
|
|
|
|
|
, m_pSecondAction(pActionSecond)
|
|
|
|
|
, m_bAtSameTime(bAtSameTime)
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2018-02-07 16:37:12 +08:00
|
|
|
ASSERT(m_pFirstAction && m_pSecondAction, "ActionTwo NULL pointer exception!");
|
2017-10-19 12:48:58 +08:00
|
|
|
m_pFirstAction->retain();
|
|
|
|
|
m_pSecondAction->retain();
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
e2d::ActionTwo::~ActionTwo()
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2017-10-31 17:19:13 +08:00
|
|
|
SafeRelease(&m_pFirstAction);
|
|
|
|
|
SafeRelease(&m_pSecondAction);
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
e2d::ActionTwo * e2d::ActionTwo::clone() const
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2018-02-07 16:37:12 +08:00
|
|
|
return new ActionTwo(m_pFirstAction->clone(), m_pSecondAction->clone());
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
e2d::ActionTwo * e2d::ActionTwo::reverse(bool actionReverse) const
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
|
|
|
|
if (actionReverse)
|
|
|
|
|
{
|
2018-02-07 16:37:12 +08:00
|
|
|
return new ActionTwo(m_pSecondAction->reverse(), m_pFirstAction->reverse());
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2018-02-07 16:37:12 +08:00
|
|
|
return new ActionTwo(m_pSecondAction->clone(), m_pFirstAction->clone());
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::ActionTwo::_init()
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2018-02-07 16:37:12 +08:00
|
|
|
Action::_init();
|
2018-02-06 15:34:47 +08:00
|
|
|
m_pFirstAction->m_pTarget = m_pTarget;
|
|
|
|
|
m_pSecondAction->m_pTarget = m_pTarget;
|
2017-10-19 00:50:04 +08:00
|
|
|
|
2017-10-19 12:48:58 +08:00
|
|
|
m_pFirstAction->_init();
|
2018-02-07 16:37:12 +08:00
|
|
|
if (m_bAtSameTime) m_pSecondAction->_init();
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::ActionTwo::_update()
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2018-02-07 16:37:12 +08:00
|
|
|
Action::_update();
|
2017-11-03 12:51:01 +08:00
|
|
|
|
2017-10-19 12:48:58 +08:00
|
|
|
if (!m_pFirstAction->_isEnding())
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2017-12-08 15:37:52 +08:00
|
|
|
m_pFirstAction->_update();
|
2018-02-07 16:37:12 +08:00
|
|
|
|
|
|
|
|
if (!m_bAtSameTime && m_pFirstAction->_isEnding())
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2017-10-19 12:48:58 +08:00
|
|
|
m_pSecondAction->_init();
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
|
|
|
|
}
|
2018-02-07 16:37:12 +08:00
|
|
|
|
|
|
|
|
if (m_bAtSameTime)
|
|
|
|
|
{
|
|
|
|
|
if (!m_pSecondAction->_isEnding())
|
|
|
|
|
{
|
|
|
|
|
m_pSecondAction->_update();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (m_pFirstAction->_isEnding())
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2017-12-08 15:37:52 +08:00
|
|
|
m_pSecondAction->_update();
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
2018-02-07 16:37:12 +08:00
|
|
|
|
|
|
|
|
if (m_pFirstAction->_isEnding() && m_pSecondAction->_isEnding())
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
|
|
|
|
this->stop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::ActionTwo::reset()
|
2017-10-19 00:50:04 +08:00
|
|
|
{
|
2018-02-07 16:37:12 +08:00
|
|
|
Action::reset();
|
2017-10-19 00:50:04 +08:00
|
|
|
|
2018-02-06 15:34:47 +08:00
|
|
|
m_pFirstAction->reset();
|
|
|
|
|
m_pSecondAction->reset();
|
2017-10-19 00:50:04 +08:00
|
|
|
}
|
2017-12-04 10:03:14 +08:00
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::ActionTwo::_resetTime()
|
2017-12-04 10:03:14 +08:00
|
|
|
{
|
|
|
|
|
m_pFirstAction->_resetTime();
|
|
|
|
|
m_pSecondAction->_resetTime();
|
|
|
|
|
}
|