| 
									
										
										
										
											2018-04-21 21:24:46 +08:00
										 |  |  | #include "..\e2daction.h"
 | 
					
						
							|  |  |  | #include "..\e2dmanager.h"
 | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-30 16:49:44 +08:00
										 |  |  | e2d::ActionLoop::ActionLoop(ActionBase * action, int times /* = -1 */) | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	: _pAction(action) | 
					
						
							|  |  |  | 	, _nTimes(0) | 
					
						
							|  |  |  | 	, _nTotalTimes(times) | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	ASSERT(_pAction, "ActionLoop NULL pointer exception!"); | 
					
						
							|  |  |  | 	_pAction->retain(); | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  | e2d::ActionLoop::~ActionLoop() | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  | e2d::ActionLoop * e2d::ActionLoop::clone() const | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	return new ActionLoop(_pAction->clone()); | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  | void e2d::ActionLoop::_init() | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-30 16:49:44 +08:00
										 |  |  | 	ActionBase::_init(); | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	_pAction->_pTarget = _pTarget; | 
					
						
							|  |  |  | 	_pAction->_init(); | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  | void e2d::ActionLoop::_update() | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-30 16:49:44 +08:00
										 |  |  | 	ActionBase::_update(); | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	if (_nTimes == _nTotalTimes) | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-11-03 12:51:01 +08:00
										 |  |  | 		this->stop(); | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	_pAction->_update(); | 
					
						
							| 
									
										
										
										
											2017-11-03 12:51:01 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	if (_pAction->_isDone()) | 
					
						
							| 
									
										
										
										
											2017-11-03 12:51:01 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 		_nTimes++; | 
					
						
							| 
									
										
										
										
											2017-11-03 12:51:01 +08:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2018-04-30 16:49:44 +08:00
										 |  |  | 		ActionBase::reset(); | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 		_pAction->reset(); | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  | void e2d::ActionLoop::reset() | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-30 16:49:44 +08:00
										 |  |  | 	ActionBase::reset(); | 
					
						
							| 
									
										
										
										
											2017-11-03 12:51:01 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	_pAction->reset(); | 
					
						
							|  |  |  | 	_nTimes = 0; | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-12-04 10:03:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-21 18:22:01 +08:00
										 |  |  | void e2d::ActionLoop::destroy() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-30 16:49:44 +08:00
										 |  |  | 	ActionBase::destroy(); | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	SafeRelease(&_pAction); | 
					
						
							| 
									
										
										
										
											2018-04-21 18:22:01 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  | void e2d::ActionLoop::_resetTime() | 
					
						
							| 
									
										
										
										
											2017-12-04 10:03:14 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  | 	_pAction->_resetTime(); | 
					
						
							| 
									
										
										
										
											2017-12-04 10:03:14 +08:00
										 |  |  | } |