79 lines
2.0 KiB
Lua
79 lines
2.0 KiB
Lua
-- lave/load stockpile settings with a GUI
|
|
--[[=begin
|
|
|
|
gui/stockpiles
|
|
==============
|
|
An in-game interface for `stocksettings`, to
|
|
load and save stockpile settings from the :kbd:`q` menu.
|
|
|
|
Usage:
|
|
|
|
:gui/stockpiles -save: to save the current stockpile
|
|
:gui/stockpiles -load: to load settings into the current stockpile
|
|
:gui/stockpiles -dir <path>: set the default directory to save settings into
|
|
:gui/stockpiles -help: to see this message
|
|
|
|
Don't forget to ``enable stockpiles`` and create the ``stocksettings`` directory in
|
|
the DF folder before trying to use the GUI.
|
|
|
|
=end]]
|
|
local stock = require 'plugins.stockpiles'
|
|
|
|
function check_enabled()
|
|
return stock.isEnabled()
|
|
end
|
|
|
|
function world_guard()
|
|
if not dfhack.isMapLoaded() then
|
|
qerror("World is not loaded")
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
function guard()
|
|
if not string.match(dfhack.gui.getCurFocus(), '^dwarfmode/QueryBuilding/Some/Stockpile') then
|
|
qerror("This script requires a stockpile selected in the 'q' mode")
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
utils = require('utils')
|
|
validArgs = validArgs or utils.invert({
|
|
'help',
|
|
'load',
|
|
'save',
|
|
'dir',
|
|
})
|
|
|
|
args = utils.processArgs({...}, validArgs)
|
|
|
|
function usage()
|
|
print("")
|
|
print("Stockpile Settings. Arguments: ")
|
|
print("-save to save the current stockpile")
|
|
print("-load to load settings into the current stockpile")
|
|
print("-dir <path> set the default directory to save settings into")
|
|
if dfhack.isMapLoaded() then
|
|
print(" Current directory is: " .. stock.get_path())
|
|
end
|
|
print("")
|
|
end
|
|
|
|
if not check_enabled() then
|
|
qerror("Stockpiles plugin not enabled. Enable it with: enable stockpiles")
|
|
elseif args.load then
|
|
if not guard() then return end
|
|
stock.load_settings()
|
|
elseif args.save then
|
|
if not guard() then return end
|
|
local sp = dfhack.gui.getSelectedBuilding(true)
|
|
stock.save_settings(sp)
|
|
elseif args.dir then
|
|
if not world_guard() then return end
|
|
stock.set_path(args.dir)
|
|
else
|
|
usage()
|
|
end
|