dfhack/plugins/lua/seedwatch.lua

68 lines
1.6 KiB
Lua

local _ENV = mkmodule('plugins.seedwatch')
local argparse = require('argparse')
local function process_args(opts, args)
if args[1] == 'help' then
opts.help = true
return
end
return argparse.processArgsGetopt(args, {
{'h', 'help', handler=function() opts.help = true end},
})
end
local function print_status()
print(('seedwatch is %s'):format(isEnabled() and "enabled" or "disabled"))
print()
print('usable seed counts and current targets:')
local watch_map, seed_counts = seedwatch_getData()
local sum = 0
local plants = df.global.world.raws.plants.all
for k,v in pairs(seed_counts) do
print((' %4d/%d %s'):format(v, watch_map[k] or 0, plants[k].id))
sum = sum + v
end
print()
print(('total usable seeds: %d'):format(sum))
end
local function set_target(name, num)
if not name or #name == 0 then
qerror('must specify "all" or plant name')
end
num = tonumber(num)
num = num and math.floor(num) or nil
if not num or num < 0 then
qerror('target must be a non-negative integer')
end
seedwatch_setTarget(name, num)
end
function parse_commandline(...)
local args, opts = {...}, {}
local positionals = process_args(opts, args)
if opts.help then
return false
end
local command = positionals[1]
if not command or command == 'status' then
print_status()
elseif command == 'clear' then
set_target('all', 0)
elseif positionals[2] and positionals[3] then
set_target(positionals[2], positionals[3])
else
return false
end
return true
end
return _ENV