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