Magic_Game/core/Action/ActionTwo.cpp

96 lines
1.8 KiB
C++
Raw Normal View History

#include "..\eaction.h"
2017-10-19 00:50:04 +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
{
ASSERT(m_pFirstAction && m_pSecondAction, "ActionTwo NULL pointer exception!");
m_pFirstAction->retain();
m_pSecondAction->retain();
2017-10-19 00:50:04 +08:00
}
e2d::ActionTwo::~ActionTwo()
2017-10-19 00:50:04 +08:00
{
}
e2d::ActionTwo * e2d::ActionTwo::clone() const
2017-10-19 00:50:04 +08:00
{
return new ActionTwo(m_pFirstAction->clone(), m_pSecondAction->clone());
2017-10-19 00:50:04 +08:00
}
e2d::ActionTwo * e2d::ActionTwo::reverse(bool actionReverse) const
2017-10-19 00:50:04 +08:00
{
if (actionReverse)
{
return new ActionTwo(m_pSecondAction->reverse(), m_pFirstAction->reverse());
2017-10-19 00:50:04 +08:00
}
else
{
return new ActionTwo(m_pSecondAction->clone(), m_pFirstAction->clone());
2017-10-19 00:50:04 +08:00
}
}
void e2d::ActionTwo::_init()
2017-10-19 00:50:04 +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
m_pFirstAction->_init();
if (m_bAtSameTime) m_pSecondAction->_init();
2017-10-19 00:50:04 +08:00
}
void e2d::ActionTwo::_update()
2017-10-19 00:50:04 +08:00
{
Action::_update();
2017-11-03 12:51:01 +08:00
if (!m_pFirstAction->_isEnding())
2017-10-19 00:50:04 +08:00
{
m_pFirstAction->_update();
if (!m_bAtSameTime && m_pFirstAction->_isEnding())
2017-10-19 00:50:04 +08:00
{
m_pSecondAction->_init();
2017-10-19 00:50:04 +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
{
m_pSecondAction->_update();
2017-10-19 00:50:04 +08:00
}
if (m_pFirstAction->_isEnding() && m_pSecondAction->_isEnding())
2017-10-19 00:50:04 +08:00
{
this->stop();
}
}
void e2d::ActionTwo::reset()
2017-10-19 00:50:04 +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
}
void e2d::ActionTwo::destroy()
{
Action::destroy();
SafeRelease(&m_pFirstAction);
SafeRelease(&m_pSecondAction);
}
void e2d::ActionTwo::_resetTime()
{
m_pFirstAction->_resetTime();
m_pSecondAction->_resetTime();
}