84 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
|  | #include "..\e2dtool.h"
 | ||
|  | 
 | ||
|  | 
 | ||
|  | e2d::Task::Task(const Function & func, const String & name) | ||
|  | 	: _running(true) | ||
|  | 	, _stopped(false) | ||
|  | 	, _runTimes(0) | ||
|  | 	, _totalTimes(-1) | ||
|  | 	, _delay(0.0) | ||
|  | 	, _lastTime(0.0) | ||
|  | 	, _callback(func) | ||
|  | 	, _name(name) | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | e2d::Task::Task(const Function & func, double delay, int times, const String & name) | ||
|  | 	: _running(true) | ||
|  | 	, _stopped(false) | ||
|  | 	, _runTimes(0) | ||
|  | 	, _totalTimes(times) | ||
|  | 	, _delay(std::max(delay, 0.0)) | ||
|  | 	, _lastTime(0.0) | ||
|  | 	, _callback(func) | ||
|  | 	, _name(name) | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | void e2d::Task::pause() | ||
|  | { | ||
|  | 	_running = false; | ||
|  | } | ||
|  | 
 | ||
|  | void e2d::Task::resume() | ||
|  | { | ||
|  | 	_running = true; | ||
|  | 	updateTime(); | ||
|  | } | ||
|  | 
 | ||
|  | void e2d::Task::update() | ||
|  | { | ||
|  | 	if (_callback) | ||
|  | 	{ | ||
|  | 		_callback(); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	++_runTimes; | ||
|  | 	_lastTime += _delay; | ||
|  | 
 | ||
|  | 	if (_runTimes == _totalTimes) | ||
|  | 	{ | ||
|  | 		_stopped = true; | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | bool e2d::Task::isReady() const | ||
|  | { | ||
|  | 	if (_running) | ||
|  | 	{ | ||
|  | 		if (_delay == 0) | ||
|  | 		{ | ||
|  | 			return true; | ||
|  | 		} | ||
|  | 		if ((Time::getTotalTime() - _lastTime) >= _delay) | ||
|  | 		{ | ||
|  | 			return true; | ||
|  | 		} | ||
|  | 	} | ||
|  | 	return false; | ||
|  | } | ||
|  | 
 | ||
|  | bool e2d::Task::isRunning() const | ||
|  | { | ||
|  | 	return _running; | ||
|  | } | ||
|  | 
 | ||
|  | e2d::String e2d::Task::getName() const | ||
|  | { | ||
|  | 	return _name; | ||
|  | } | ||
|  | 
 | ||
|  | void e2d::Task::updateTime() | ||
|  | { | ||
|  | 	_lastTime = Time::getTotalTime(); | ||
|  | } |