| 
									
										
										
										
											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(); | 
					
						
							|  |  |  | } |