47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
| #include <channel-jobs.h>
 | |
| #include <inlines.h>
 | |
| #include <df/world.h>
 | |
| #include <df/job.h>
 | |
| 
 | |
| // iterates the DF job list and adds channel jobs to the `jobs` container
 | |
| void ChannelJobs::load_channel_jobs() {
 | |
|     jobs.clear();
 | |
|     df::job_list_link* node = df::global::world->jobs.list.next;
 | |
|     while (node) {
 | |
|         df::job* job = node->item;
 | |
|         node = node->next;
 | |
|         if (is_dig_job(job)) {
 | |
|             jobs.emplace(job->pos);
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| // clears the container
 | |
| void ChannelJobs::clear() {
 | |
|     jobs.clear();
 | |
| }
 | |
| 
 | |
| // finds and erases a job corresponding to a map position, then returns the iterator following the element removed
 | |
| std::set<df::coord>::iterator ChannelJobs::erase(const df::coord &map_pos) {
 | |
|     auto iter = jobs.find(map_pos);
 | |
|     if (iter != jobs.end()) {
 | |
|         return jobs.erase(iter);
 | |
|     }
 | |
|     return iter;
 | |
| }
 | |
| 
 | |
| // finds a job corresponding to a map position if one exists
 | |
| std::set<df::coord>::const_iterator ChannelJobs::find(const df::coord &map_pos) const {
 | |
|     return jobs.find(map_pos);
 | |
| }
 | |
| 
 | |
| // returns an iterator to the first element stored
 | |
| std::set<df::coord>::const_iterator ChannelJobs::begin() const {
 | |
|     return jobs.begin();
 | |
| }
 | |
| 
 | |
| // returns an iterator to after the last element stored
 | |
| std::set<df::coord>::const_iterator ChannelJobs::end() const {
 | |
|     return jobs.end();
 | |
| }
 |