Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions locale/en/caravan.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ the-inventory-is-empty=The inventory is empty.
add-interrupt-frame-title=Add interrupt
edit-interrupt-frame-title=Edit interrupt
save-interrupt=Save interrupt
duplicate-interrupt=Duplicate interrupt
delete-interrupt=Delete interrupt
confirm-deletion=Are you sure?
cancel-deletion=Cancel deletion
Expand Down
33 changes: 33 additions & 0 deletions scripts/caravan/event-handlers/interrupts.lua
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,37 @@ gui_events[defines.events.on_gui_click]["py_edit_interrupt_confirm_button"] = fu
storage.edited_interrupts[event.player_index] = nil
end

gui_events[defines.events.on_gui_click]["py_duplicate_interrupt_button"] = function(event)
local player = game.get_player(event.player_index)
local edited_interrupt = storage.edited_interrupts[event.player_index]

-- edge case: need to check the rename textfield when 'Duplicate interrupt' is pressed instead of enter
local textfield = event.element.parent.py_edit_interrupt_textfield
if string.len(textfield.text) ~= 0 and textfield.text ~= edited_interrupt.name then
edited_interrupt.name = textfield.text
end

local interrupt_copy_name = edited_interrupt.name
while storage.interrupts[interrupt_copy_name] ~= nil do
interrupt_copy_name = interrupt_copy_name .. "*"
end

storage.interrupts[interrupt_copy_name] = table.deepcopy(edited_interrupt)
storage.interrupts[interrupt_copy_name].name = interrupt_copy_name

local unit_number = CaravanGui.get_gui(player).tags.unit_number
assert(unit_number)
local caravan_data = storage.caravans[unit_number]
table.insert(caravan_data.interrupts, interrupt_copy_name)
CaravanScheduleGui.update_schedule_pane(player)

if player.gui.screen.edit_interrupt_gui then
player.gui.screen.edit_interrupt_gui.destroy()
local edit_interrupt_gui = EditInterruptGui.build(player.gui.screen, storage.interrupts[interrupt_copy_name])
CaravanUtils.restore_gui_location(edit_interrupt_gui, window_location)
end
end

gui_events[defines.events.on_gui_click]["py_delete_interrupt_button"] = function(event)
local element = event.element
local removed_interrupt = element.tags.interrupt_name
Expand Down Expand Up @@ -366,6 +397,7 @@ gui_events[defines.events.on_gui_click]["py_delete_interrupt_button"] = function
element.parent.py_delete_interrupt_cancel.visible = true
element.parent.py_delete_interrupt_confirm.visible = true
element.parent.py_interrupt_count_label.visible = false
element.parent.py_duplicate_interrupt_button.visible = false
end
end

Expand All @@ -375,6 +407,7 @@ gui_events[defines.events.on_gui_click]["py_delete_interrupt_cancel"] = function
element.parent.py_interrupt_count_label.visible = true
element.parent.py_delete_interrupt_cancel.visible = false
element.parent.py_delete_interrupt_confirm.visible = false
element.parent.py_duplicate_interrupt_button.visible = true
end

gui_events[defines.events.on_gui_click]["py_edit_interrupt_condition_move_up_button"] = function(event)
Expand Down
1 change: 1 addition & 0 deletions scripts/caravan/gui/edit_interrupt.lua
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ function P.build_subheader_frame(parent)
-- work out how many caravans have this interrupt and store in the element tags for use in on_click
local relevant_caravans = caravans_with_interrupt(edited_interrupt.name)
flow.add {type = "label", name = "py_interrupt_count_label", caption = {"caravan-gui.interrupt-count", table_size(relevant_caravans)}, style = "clickable_squashable_label", tags = {name = edited_interrupt.name, ids = relevant_caravans}}.style.horizontal_align = "right"
flow.add {type = "sprite-button", name = "py_duplicate_interrupt_button", style = "tool_button", sprite = "utility/copy", tooltip = {"caravan-gui.duplicate-interrupt"}}
-- handle deletion
flow.add {type = "label", visible = false, name = "py_delete_interrupt_confirm", caption = {"caravan-gui.confirm-deletion"}}
flow.add {type = "sprite-button", name = "py_delete_interrupt_button", style = "tool_button_red", sprite = "utility/trash", tooltip = {"caravan-gui.delete-interrupt"}, tags = {interrupt_name = edited_interrupt.name}}
Expand Down