| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  | #include "..\e2daction.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  | e2d::Delay::Delay(float duration) | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 	: _delta(0) | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  | 	, _delay(std::max(duration, 0.f)) | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e2d::Delay * e2d::Delay::clone() const | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-07-06 12:59:32 +08:00
										 |  |  | 	return new (e2d::autorelease) Delay(_delay); | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-14 00:36:01 +08:00
										 |  |  | e2d::Delay * e2d::Delay::reverse() const | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-07-06 12:59:32 +08:00
										 |  |  | 	return new (e2d::autorelease) Delay(_delay); | 
					
						
							| 
									
										
										
										
											2018-05-14 00:36:01 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | void e2d::Delay::reset() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	Action::reset(); | 
					
						
							|  |  |  | 	_delta = 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  | void e2d::Delay::_init() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	Action::_init(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void e2d::Delay::_update() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	Action::_update(); | 
					
						
							| 
									
										
										
										
											2018-05-10 14:03:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-22 00:41:24 +08:00
										 |  |  | 	_delta = Game::getInstance()->getTotalDuration().seconds() - _last; | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if (_delta >= _delay) | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  | 	{ | 
					
						
							|  |  |  | 		this->stop(); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | void e2d::Delay::_resetTime() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	Action::_resetTime(); | 
					
						
							| 
									
										
										
										
											2018-07-22 00:41:24 +08:00
										 |  |  | 	_last = Game::getInstance()->getTotalDuration().seconds() - _delta; | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | } |