@@ -658,11 +658,28 @@ end
658658-- EnRouteOverlay
659659--
660660
661+ --- Return the selected active construction or destruction job
662+ local function getSelectedActiveBuildingJob ()
663+ -- This is not relying on dfhack.gui.getSelectedJob() because we don't want
664+ -- the job of a selected or followed unit, only of a selected building
665+ local building = dfhack .gui .getSelectedBuilding (true )
666+ if not building then
667+ return nil
668+ end
669+
670+ -- Find if the building is being constructed
671+ for _ , job in ipairs (building .jobs ) do
672+ if not job .flags .suspend and (job .job_type == df .job_type .ConstructBuilding or job .job_type == df .job_type .ConstructBuilding ) then
673+ return job
674+ end
675+ end
676+
677+ return nil
678+ end
679+
680+
661681local function is_visible ()
662- local job = dfhack .gui .getSelectedJob (true )
663- return job and not job .flags .suspend and
664- (job .job_type == df .job_type .DestroyBuilding or
665- job .job_type == df .job_type .ConstructBuilding )
682+ return getSelectedActiveBuildingJob () ~= nil
666683end
667684
668685EnRouteOverlay = defclass (EnRouteOverlay , overlay .OverlayWidget )
@@ -693,7 +710,7 @@ function EnRouteOverlay:init()
693710 label = ' Make top priority:' ,
694711 key = ' CUSTOM_CTRL_T' ,
695712 on_change = function (val )
696- local job = dfhack . gui . getSelectedJob ( true )
713+ local job = getSelectedActiveBuildingJob ( )
697714 if not job then return end
698715 job .flags .do_now = val
699716 end ,
@@ -712,7 +729,7 @@ function EnRouteOverlay:get_builder_name_pen()
712729end
713730
714731function EnRouteOverlay :zoom_to_builder ()
715- local job = dfhack . gui . getSelectedJob ( true )
732+ local job = getSelectedActiveBuildingJob ( )
716733 if not job then return end
717734 local builder = dfhack .job .getWorker (job )
718735 if builder then
@@ -721,7 +738,7 @@ function EnRouteOverlay:zoom_to_builder()
721738end
722739
723740function EnRouteOverlay :render (dc )
724- local job = dfhack . gui . getSelectedJob ( true )
741+ local job = getSelectedActiveBuildingJob ( )
725742 self .builder = dfhack .job .getWorker (job )
726743 self .subviews .do_now :setOption (job .flags .do_now )
727744 EnRouteOverlay .super .render (self , dc )
0 commit comments