From bfb26f1c1fb67d54a76f2f383e9882fcf0024630 Mon Sep 17 00:00:00 2001 From: jj Date: Sun, 6 May 2012 00:49:23 +0200 Subject: [PATCH] ruby: deconstructbld --- plugins/ruby/plugins/buildbed.rb | 12 ++++++++++++ plugins/ruby/ruby-memstruct.rb | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/ruby/plugins/buildbed.rb b/plugins/ruby/plugins/buildbed.rb index 892a75dc1..bb886428e 100644 --- a/plugins/ruby/plugins/buildbed.rb +++ b/plugins/ruby/plugins/buildbed.rb @@ -55,4 +55,16 @@ def self.buildbedhere building.categorize(true) } end +def self.deconstructbldhere + suspend { + raise "'q'uery a building" if ui.main.mode != :QueryBuilding or not building = world.selected_building + job = Job.cpp_new + refbuildingholder = GeneralRefBuildingHolderst.cpp_new + job.job_type = :DestroyBuilding + refbuildingholder.building_id = building.id + job.references << refbuildingholder + building.jobs << job + link_job job + } +end end diff --git a/plugins/ruby/ruby-memstruct.rb b/plugins/ruby/ruby-memstruct.rb index ddc62982e..cf8a54d9e 100644 --- a/plugins/ruby/ruby-memstruct.rb +++ b/plugins/ruby/ruby-memstruct.rb @@ -1,6 +1,6 @@ module DFHack module MemHack -INSPECT_SIZE_LIMIT=1024 +INSPECT_SIZE_LIMIT=16384 class MemStruct attr_accessor :_memaddr def _at(addr) ; d = dup ; d._memaddr = addr ; d ; end @@ -13,6 +13,7 @@ class Compound < MemStruct attr_accessor :_fields, :_rtti_classname, :_sizeof def field(name, offset) struct = yield + return if not struct @_fields ||= [] @_fields << [name, offset, struct] define_method(name) { struct._at(@_memaddr+offset)._get }