Skip to content

Commit 4c9b58e

Browse files
authored
Merge pull request #5750 from Halavus/planneroverlay-todo-slider
planneroverlay - added a slider on the weapontrap overlay
2 parents a518a6c + 49ce780 commit 4c9b58e

2 files changed

Lines changed: 42 additions & 11 deletions

File tree

docs/changelog.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ Template for new versions:
6464
- `getplants`: added protective code to avoid misoperation when a plant has an invalid material (which should never happen, but...)
6565

6666
## Misc Improvements
67+
- `buildingplan`: added a slider on the weapontrap overlay
6768

6869
## Documentation
6970

plugins/lua/buildingplan/planneroverlay.lua

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ local function is_interior(bounds, x, y)
175175
y ~= bounds.y1 and y ~= bounds.y2
176176
end
177177

178-
-- adjusted from CycleHotkeyLabel on the planner panel
178+
-- adjusted from WeaponSpiketrapPanel (HotKey & Slider) on the planner panel
179179
local weapon_quantity = 1
180180

181181
local function get_quantity(filter, hollow, bounds)
@@ -687,6 +687,43 @@ function PlannerOverlay:init()
687687

688688
local buildingplan = require('plugins.buildingplan')
689689

690+
-- WeaponSpiketrapPanel defined outside of main_panel, otherwise addviews breaks -> addviews expects table
691+
local WeaponSpiketrapPanel = defclass(WeaponSpiketrapPanel, widgets.Panel)
692+
WeaponSpiketrapPanel.ATTRS{
693+
view_id='weapons',
694+
visible=is_weapon_or_spike_trap,
695+
}
696+
697+
function WeaponSpiketrapPanel:init()
698+
self.options = utils.tabulate(function(i) return {label='('..i..')', value=i, pen=COLOR_YELLOW} end, 1, 10)
699+
700+
self:addviews{
701+
widgets.CycleHotkeyLabel{
702+
view_id='weapons_hotkey',
703+
frame={b=4, l=1, w=28},
704+
key='CUSTOM_T',
705+
key_back='CUSTOM_SHIFT_T',
706+
label='Number of weapons:',
707+
options=self.options,
708+
initial_option=weapon_quantity,
709+
on_change=function(val)
710+
weapon_quantity = val
711+
end
712+
},
713+
714+
widgets.Slider{
715+
view_id='weapons_slider',
716+
frame={b=6, l=4, w=35},
717+
num_stops=#self.options,
718+
get_idx_fn=function() return weapon_quantity end,
719+
on_change=function(val)
720+
weapon_quantity = val
721+
self.subviews.weapons_hotkey:setOption(val)
722+
end
723+
}
724+
}
725+
end
726+
690727
main_panel:addviews{
691728
widgets.Label{
692729
frame={},
@@ -757,16 +794,9 @@ function PlannerOverlay:init()
757794
{label='Down', value=df.construction_type.DownStair},
758795
},
759796
},
760-
widgets.CycleHotkeyLabel { -- TODO: this thing also needs a slider
761-
view_id='weapons',
762-
frame={b=4, l=1, w=28},
763-
key='CUSTOM_T',
764-
key_back='CUSTOM_SHIFT_T',
765-
label='Number of weapons:',
766-
visible=is_weapon_or_spike_trap,
767-
options=utils.tabulate(function(i) return {label='('..i..')', value=i, pen=COLOR_YELLOW} end, 1, 10),
768-
on_change=function(val) weapon_quantity = val end,
769-
},
797+
798+
WeaponSpiketrapPanel{},
799+
770800
widgets.ToggleHotkeyLabel {
771801
view_id='engraved',
772802
frame={b=4, l=1, w=22},

0 commit comments

Comments
 (0)