Skip to content

Commit 705ed8d

Browse files
committed
Fix the prioritize overlay appearing for followed units
1 parent 00d826f commit 705ed8d

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

prioritize.lua

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
661681
local 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
666683
end
667684

668685
EnRouteOverlay = 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()
712729
end
713730

714731
function 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()
721738
end
722739

723740
function 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

Comments
 (0)