MCPcopy Create free account
hub / github.com/DFHack/dfhack / load

Method load

plugins/dig-now.cpp:84–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

82 std::unordered_map<df::coord, df::job*> jobs;
83public:
84 void load(MapExtras::MapCache &map) {
85 designations.clear();
86 DEBUG(general).print("DesignationJobs: reading jobs list\n");
87 df::job_list_link* node = df::global::world->jobs.list.next;
88 while (node) {
89 df::job* job = node->item;
90 node = node->next;
91
92 if(!job || !Maps::isValidTilePos(job->pos))
93 continue;
94
95 df::tile_designation td = map.designationAt(job->pos);
96 df::tile_occupancy to = map.occupancyAt(job->pos);
97 const auto ctd = td.whole;
98 const auto cto = to.whole;
99 switch (job->job_type){
100 case job_type::Dig:
101 td.bits.dig = tile_dig_designation::Default;
102 break;
103 case job_type::DigChannel:
104 td.bits.dig = tile_dig_designation::Channel;
105 break;
106 case job_type::CarveRamp:
107 td.bits.dig = tile_dig_designation::Ramp;
108 break;
109 case job_type::CarveUpwardStaircase:
110 td.bits.dig = tile_dig_designation::UpStair;
111 break;
112 case job_type::CarveDownwardStaircase:
113 td.bits.dig = tile_dig_designation::DownStair;
114 break;
115 case job_type::CarveUpDownStaircase:
116 td.bits.dig = tile_dig_designation::UpDownStair;
117 break;
118 case job_type::SmoothWall:
119 case job_type::SmoothFloor:
120 td.bits.smooth = 1;
121 break;
122 case job_type::CarveTrack:
123 to.bits.carve_track_north = job->specflag.carve_track_flags.bits.carve_track_north;
124 to.bits.carve_track_south = job->specflag.carve_track_flags.bits.carve_track_south;
125 to.bits.carve_track_west = job->specflag.carve_track_flags.bits.carve_track_west;
126 to.bits.carve_track_east = job->specflag.carve_track_flags.bits.carve_track_east;
127 break;
128 default:
129 break;
130 }
131 if (ctd != td.whole || cto != to.whole) {
132 // we found a designation job
133 designations.emplace(job->pos, designation(job->pos, td, to));
134 jobs.emplace(job->pos, job);
135 }
136 }
137 DEBUG(general).print("DesignationJobs: DONE reading jobs list\n");
138 }
139 void remove(const df::coord &pos) {
140 if(jobs.count(pos)) {
141 Job::removeJob(jobs[pos]);

Callers 1

do_digFunction · 0.45

Calls 4

isValidTilePosFunction · 0.85
designationClass · 0.70
clearMethod · 0.45
printMethod · 0.45

Tested by

no test coverage detected