-- Export everything from legends mode -- Based on the script 'exportmaps' -- Suggested keybinding: keybinding add Shift-A@legends "exportlegends all" gui = require 'gui' local args = {...} local vs = dfhack.gui.getCurViewscreen() local i = 0 if args[1] then print(' A script which exports data from legends mode. Valid arguments are "maps" (detailed maps) or "all" (detailed maps, world/gen info, XML).') end local MAPS = { [0] = "Standard biome+site map", "Elevations including lake and ocean floors", "Elevations respecting water level", "Biome", "Hydrosphere", "Temperature", "Rainfall", "Drainage", "Savagery", "Volcanism", "Current vegetation", "Evil", "Salinity", "Structures/fields/roads/etc.", "Trade", } function wait_for_legends_vs() vs = dfhack.gui.getCurViewscreen() if i < 15 then if df.viewscreen_legendsst:is_instance(vs) then gui.simulateInput(vs, 'LEGENDS_EXPORT_DETAILED_MAP') -- "d" on screen some number internally dfhack.timeout(10,'frames',wait_for_export_maps_vs) else dfhack.timeout(10,'frames',wait_for_legends_vs) end end end function wait_for_export_maps_vs() vs = dfhack.gui.getCurViewscreen() if df.viewscreen_export_graphical_mapst:is_instance(vs) then vs.anon_13 = i -- anon_13 appears to be the selection cursor for this viewscreen print('Exporting: '..MAPS[i]) i = i + 1 gui.simulateInput(vs, 'SELECT') -- 1 internally, enter on screen dfhack.timeout(10,'frames',wait_for_legends_vs) else dfhack.timeout(10,'frames',wait_for_export_maps_vs) end end if df.viewscreen_legendsst:is_instance( vs ) then -- dfhack.gui.getCurFocus() == "legends" if args[1] == "all" then gui.simulateInput(vs, df.interface_key.LEGENDS_EXPORT_MAP) print('Exporting: world map/gen info') gui.simulateInput(vs, df.interface_key.LEGENDS_EXPORT_XML) print('Exporting: legends xml') wait_for_legends_vs() elseif args[1] == "maps" then wait_for_legends_vs() end elseif df.viewscreen_export_graphical_mapst:is_instance(vs) then if args[1] == "maps" or "all" then wait_for_export_maps_vs() end else dfhack.printerr('Not in legends view') end