96 lines
1.8 KiB
C++
96 lines
1.8 KiB
C++
#include "..\e2daction.h"
|
|
|
|
e2d::ActionTwo::ActionTwo(ActionBase * pActionFirst, ActionBase * pActionSecond, bool bAtSameTime/* = false*/)
|
|
: m_pFirstAction(pActionFirst)
|
|
, m_pSecondAction(pActionSecond)
|
|
, m_bAtSameTime(bAtSameTime)
|
|
{
|
|
ASSERT(m_pFirstAction && m_pSecondAction, "ActionTwo NULL pointer exception!");
|
|
m_pFirstAction->retain();
|
|
m_pSecondAction->retain();
|
|
}
|
|
|
|
e2d::ActionTwo::~ActionTwo()
|
|
{
|
|
}
|
|
|
|
e2d::ActionTwo * e2d::ActionTwo::clone() const
|
|
{
|
|
return new ActionTwo(m_pFirstAction->clone(), m_pSecondAction->clone());
|
|
}
|
|
|
|
e2d::ActionTwo * e2d::ActionTwo::reverse(bool actionReverse) const
|
|
{
|
|
if (actionReverse)
|
|
{
|
|
return new ActionTwo(m_pSecondAction->reverse(), m_pFirstAction->reverse());
|
|
}
|
|
else
|
|
{
|
|
return new ActionTwo(m_pSecondAction->clone(), m_pFirstAction->clone());
|
|
}
|
|
}
|
|
|
|
void e2d::ActionTwo::_init()
|
|
{
|
|
ActionBase::_init();
|
|
m_pFirstAction->m_pTarget = m_pTarget;
|
|
m_pSecondAction->m_pTarget = m_pTarget;
|
|
|
|
m_pFirstAction->_init();
|
|
if (m_bAtSameTime) m_pSecondAction->_init();
|
|
}
|
|
|
|
void e2d::ActionTwo::_update()
|
|
{
|
|
ActionBase::_update();
|
|
|
|
if (!m_pFirstAction->_isDone())
|
|
{
|
|
m_pFirstAction->_update();
|
|
|
|
if (!m_bAtSameTime && m_pFirstAction->_isDone())
|
|
{
|
|
m_pSecondAction->_init();
|
|
}
|
|
}
|
|
|
|
if (m_bAtSameTime)
|
|
{
|
|
if (!m_pSecondAction->_isDone())
|
|
{
|
|
m_pSecondAction->_update();
|
|
}
|
|
}
|
|
else if (m_pFirstAction->_isDone())
|
|
{
|
|
m_pSecondAction->_update();
|
|
}
|
|
|
|
if (m_pFirstAction->_isDone() && m_pSecondAction->_isDone())
|
|
{
|
|
this->stop();
|
|
}
|
|
}
|
|
|
|
void e2d::ActionTwo::reset()
|
|
{
|
|
ActionBase::reset();
|
|
|
|
m_pFirstAction->reset();
|
|
m_pSecondAction->reset();
|
|
}
|
|
|
|
void e2d::ActionTwo::destroy()
|
|
{
|
|
ActionBase::destroy();
|
|
SafeRelease(&m_pFirstAction);
|
|
SafeRelease(&m_pSecondAction);
|
|
}
|
|
|
|
void e2d::ActionTwo::_resetTime()
|
|
{
|
|
m_pFirstAction->_resetTime();
|
|
m_pSecondAction->_resetTime();
|
|
}
|