diff options
| author | Alexander Gavrilov | 2012-09-07 19:54:32 +0400 |
|---|---|---|
| committer | Alexander Gavrilov | 2012-09-07 19:54:32 +0400 |
| commit | 325e294af2bbd2ba0381a476756eddbbfceb1b36 (patch) | |
| tree | 7a51e57401315a79584fc24348edb9d177d15493 /scripts | |
| parent | e925d8f4d999817d3ccf7f3180e7abee382e03b4 (diff) | |
| download | dfhack-325e294af2bbd2ba0381a476756eddbbfceb1b36.tar.gz dfhack-325e294af2bbd2ba0381a476756eddbbfceb1b36.tar.bz2 dfhack-325e294af2bbd2ba0381a476756eddbbfceb1b36.tar.xz | |
Start the siege engine plugin with code to highlight obstacles on screen.
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/gui/siege-engine.lua | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/scripts/gui/siege-engine.lua b/scripts/gui/siege-engine.lua new file mode 100644 index 00000000..466657e5 --- /dev/null +++ b/scripts/gui/siege-engine.lua @@ -0,0 +1,72 @@ +-- Front-end for the siege engine plugin. + +local utils = require 'utils' +local gui = require 'gui' +local guidm = require 'gui.dwarfmode' +local dlg = require 'gui.dialogs' + +local plugin = require 'plugins.siege-engine' + +SiegeEngine = defclass(SiegeEngine, guidm.MenuOverlay) + +SiegeEngine.focus_path = 'siege-engine' + +function SiegeEngine:init(building) + self:init_fields{ + building = building, + center = utils.getBuildingCenter(building), + links = {}, selected = 1 + } + guidm.MenuOverlay.init(self) + return self +end + +function SiegeEngine:onShow() + guidm.MenuOverlay.onShow(self) + + self.old_cursor = guidm.getCursorPos() + self.old_viewport = self:getViewport() +end + +function SiegeEngine:onDestroy() + guidm.setCursorPos(self.old_cursor) + self:getViewport(self.old_viewport):set() +end + +function SiegeEngine:onRenderBody(dc) + dc:clear() + dc:seek(1,1):string(utils.getBuildingName(self.building), COLOR_WHITE):newline() + + local view = self:getViewport() + local map = self.df_layout.map + + plugin.paintAimScreen( + self.building, view:getPos(), + xy2pos(map.x1, map.y1), view:getSize() + ) + + dc:newline():newline(1):pen(COLOR_WHITE) + dc:string("Esc", COLOR_LIGHTGREEN):string(": Back, ") + dc:string("Enter", COLOR_LIGHTGREEN):string(": Switch") +end + +function SiegeEngine:onInput(keys) + if keys.LEAVESCREEN then + self:dismiss() + elseif self:simulateCursorMovement(keys, self.center) then + return + end +end + +if not string.find(dfhack.gui.getCurFocus(), 'dwarfmode/QueryBuilding/Some') then + qerror("This script requires the main dwarfmode view in 'q' mode") +end + +local building = df.global.world.selected_building + +if not df.building_siegeenginest:is_instance(building) then + qerror("A siege engine must be selected") +end + +local list = mkinstance(SiegeEngine):init(df.global.world.selected_building) +list:show() |
