Support renaming some buildings, and arbitrary units, via gui script.
parent
57086ac56e
commit
8d876cc7d9
@ -0,0 +1,13 @@
|
|||||||
|
local _ENV = mkmodule('plugins.rename')
|
||||||
|
|
||||||
|
--[[
|
||||||
|
|
||||||
|
Native functions:
|
||||||
|
|
||||||
|
* canRenameBuilding(building)
|
||||||
|
* isRenamingBuilding(building)
|
||||||
|
* renameBuilding(building, name)
|
||||||
|
|
||||||
|
--]]
|
||||||
|
|
||||||
|
return _ENV
|
@ -0,0 +1,63 @@
|
|||||||
|
-- Rename various objects via gui.
|
||||||
|
|
||||||
|
local gui = require 'gui'
|
||||||
|
local dlg = require 'gui.dialogs'
|
||||||
|
local plugin = require 'plugins.rename'
|
||||||
|
|
||||||
|
local mode = ...
|
||||||
|
local focus = dfhack.gui.getCurFocus()
|
||||||
|
|
||||||
|
local function verify_mode(expected)
|
||||||
|
if mode ~= nil and mode ~= expected then
|
||||||
|
qerror('Invalid UI state for mode '..mode)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if string.match(focus, '^dwarfmode/QueryBuilding/Some') then
|
||||||
|
verify_mode('building')
|
||||||
|
|
||||||
|
local building = df.global.world.selected_building
|
||||||
|
if plugin.canRenameBuilding(building) then
|
||||||
|
dlg.showInputPrompt(
|
||||||
|
'Rename Building',
|
||||||
|
'Enter a new name for the building:', COLOR_GREEN,
|
||||||
|
building.name,
|
||||||
|
curry(plugin.renameBuilding, building)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
dlg.showMessage(
|
||||||
|
'Rename Building',
|
||||||
|
'Cannot rename this type of building.', COLOR_LIGHTRED
|
||||||
|
)
|
||||||
|
end
|
||||||
|
elseif dfhack.gui.getSelectedUnit(true) then
|
||||||
|
local unit = dfhack.gui.getSelectedUnit(true)
|
||||||
|
|
||||||
|
if mode == 'unit-profession' then
|
||||||
|
dlg.showInputPrompt(
|
||||||
|
'Rename Unit',
|
||||||
|
'Enter a new profession for the unit:', COLOR_GREEN,
|
||||||
|
unit.custom_profession,
|
||||||
|
function(newval)
|
||||||
|
unit.custom_profession = newval
|
||||||
|
end
|
||||||
|
)
|
||||||
|
else
|
||||||
|
verify_mode('unit')
|
||||||
|
|
||||||
|
local vname = dfhack.units.getVisibleName(unit)
|
||||||
|
local vnick = ''
|
||||||
|
if vname and vname.has_name then
|
||||||
|
vnick = vname.nickname
|
||||||
|
end
|
||||||
|
|
||||||
|
dlg.showInputPrompt(
|
||||||
|
'Rename Unit',
|
||||||
|
'Enter a new nickname for the unit:', COLOR_GREEN,
|
||||||
|
vnick,
|
||||||
|
curry(dfhack.units.setNickname, unit)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
elseif mode then
|
||||||
|
verify_mode(nil)
|
||||||
|
end
|
Loading…
Reference in New Issue