summaryrefslogtreecommitdiff
path: root/games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch
diff options
context:
space:
mode:
Diffstat (limited to 'games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch')
-rw-r--r--games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch525
1 files changed, 0 insertions, 525 deletions
diff --git a/games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch b/games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch
deleted file mode 100644
index 47531337..00000000
--- a/games-util/dfhack/files/dfhack-9999/08-ruby-plugin-configurable-paths.patch
+++ /dev/null
@@ -1,525 +0,0 @@
-ruby plugin - configurable paths
-
-From: eroen <eroen@occam.eroen.eu>
-
-
----
- plugins/ruby/CMakeLists.txt | 4 +
- plugins/ruby/ruby.rb | 239 -------------------------------------------
- plugins/ruby/ruby.rb.in | 239 +++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 243 insertions(+), 239 deletions(-)
- delete mode 100644 plugins/ruby/ruby.rb
- create mode 100644 plugins/ruby/ruby.rb.in
-
-diff --git a/plugins/ruby/CMakeLists.txt b/plugins/ruby/CMakeLists.txt
-index e6d3eff..b282751 100644
---- a/plugins/ruby/CMakeLists.txt
-+++ b/plugins/ruby/CMakeLists.txt
-@@ -27,6 +27,8 @@ ADD_CUSTOM_COMMAND(
- )
- ADD_CUSTOM_TARGET(ruby-autogen-rb DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ruby-autogen.rb)
-
-+CONFIGURE_FILE(ruby.rb.in ruby.rb @ONLY)
-+
- INCLUDE_DIRECTORIES("${dfhack_SOURCE_DIR}/depends/tthread")
-
- DFHACK_PLUGIN(ruby ruby.cpp LINK_LIBRARIES dfhack-tinythread)
-@@ -34,6 +36,8 @@ ADD_DEPENDENCIES(ruby ruby-autogen-rb)
-
- INSTALL(FILES ${RUBYLIB} DESTINATION ${DFHACK_LIBRARY_DESTINATION})
-
-+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ruby.rb DESTINATION ${DFHACK_RUBY_DESTINATION})
-+
- INSTALL(DIRECTORY .
- DESTINATION ${DFHACK_RUBY_DESTINATION}
- FILES_MATCHING PATTERN "*.rb")
-diff --git a/plugins/ruby/ruby.rb b/plugins/ruby/ruby.rb
-deleted file mode 100644
-index 47924dc..0000000
---- a/plugins/ruby/ruby.rb
-+++ /dev/null
-@@ -1,239 +0,0 @@
--# redefine standard i/o methods to use the dfhack console
--module Kernel
-- def puts(*a)
-- a.flatten.each { |l|
-- DFHack.print_str(l.to_s.chomp + "\n")
-- }
-- nil
-- end
--
-- def puts_err(*a)
-- a.flatten.each { |l|
-- DFHack.print_err(l.to_s.chomp + "\n")
-- }
-- nil
-- end
--
-- def p(*a)
-- a.each { |e|
-- puts_err e.inspect
-- }
-- nil
-- end
--end
--
--module DFHack
-- VERSION = version
--
-- class OnupdateCallback
-- attr_accessor :callback, :timelimit, :minyear, :minyeartick, :description
-- def initialize(descr, cb, tl, initdelay=0)
-- @description = descr
-- @callback = cb
-- @ticklimit = tl
-- @minyear = (tl ? df.cur_year : 0)
-- @minyeartick = (tl ? df.cur_year_tick+initdelay : 0)
-- end
--
-- # run callback if timedout
-- def check_run(year, yeartick, yearlen)
-- if @ticklimit
-- return unless year > @minyear or (year == @minyear and yeartick >= @minyeartick)
-- @minyear = year
-- @minyeartick = yeartick + @ticklimit
-- if @minyeartick > yearlen
-- @minyear += 1
-- @minyeartick -= yearlen
-- end
-- end
-- # t0 = Time.now
-- @callback.call
-- # dt = Time.now - t0 ; puts "rb cb #@description took #{'%.02f' % dt}s" if dt > 0.1
-- rescue Exception
-- df.onupdate_unregister self
-- puts_err "onupdate #@description unregistered: #$!", $!.backtrace
-- end
--
-- def <=>(o)
-- [@minyear, @minyeartick] <=> [o.minyear, o.minyeartick]
-- end
-- end
--
-- class << self
-- attr_accessor :onupdate_list, :onstatechange_list
--
-- # register a callback to be called every gframe or more
-- # ex: DFHack.onupdate_register('fastdwarf') { DFHack.world.units[0].counters.job_counter = 0 }
-- # if ticklimit is given, do not call unless this much game ticks have passed. Handles advmode time stretching.
-- def onupdate_register(descr, ticklimit=nil, initialtickdelay=0, &b)
-- raise ArgumentError, 'need a description as 1st arg' unless descr.kind_of?(::String)
-- @onupdate_list ||= []
-- @onupdate_list << OnupdateCallback.new(descr, b, ticklimit, initialtickdelay)
-- DFHack.onupdate_active = true
-- if onext = @onupdate_list.sort.first
-- DFHack.onupdate_minyear = onext.minyear
-- DFHack.onupdate_minyeartick = onext.minyeartick
-- end
-- @onupdate_list.last
-- end
--
-- # delete the callback for onupdate ; use the value returned by onupdate_register or the description
-- def onupdate_unregister(b)
-- b = @onupdate_list.find { |bb| bb.description == b } if b.kind_of?(String)
-- @onupdate_list.delete b
-- if @onupdate_list.empty?
-- DFHack.onupdate_active = false
-- DFHack.onupdate_minyear = DFHack.onupdate_minyeartick = DFHack.onupdate_minyeartickadv = -1
-- end
-- end
--
-- # same as onupdate_register, but remove the callback once it returns true
-- def onupdate_register_once(*a)
-- handle = onupdate_register(*a) {
-- onupdate_unregister(handle) if yield
-- }
-- end
--
-- TICKS_PER_YEAR = 1200*28*12
-- # this method is called by ruby.cpp if df.onupdate_active is true
-- def onupdate
-- @onupdate_list ||= []
--
-- y = cur_year
-- ytmax = TICKS_PER_YEAR
-- if df.gamemode == :ADVENTURE and df.respond_to?(:cur_year_tick_advmode)
-- yt = cur_year_tick_advmode
-- ytmax *= 144
-- else
-- yt = cur_year_tick
-- end
--
-- @onupdate_list.each { |o|
-- o.check_run(y, yt, ytmax)
-- }
--
-- if onext = @onupdate_list.sort.first
-- DFHack.onupdate_minyear = onext.minyear
-- if ytmax > TICKS_PER_YEAR
-- DFHack.onupdate_minyeartick = -1
-- DFHack.onupdate_minyeartickadv = onext.minyeartick
-- else
-- DFHack.onupdate_minyeartick = onext.minyeartick
-- DFHack.onupdate_minyeartickadv = -1
-- end
-- end
-- end
--
-- # register a callback to be called every gframe or more
-- # ex: DFHack.onstatechange_register { |newstate| puts "state changed to #{newstate}" }
-- def onstatechange_register(&b)
-- @onstatechange_list ||= []
-- @onstatechange_list << b
-- @onstatechange_list.last
-- end
--
-- # delete the callback for onstatechange ; use the value returned by onstatechange_register
-- def onstatechange_unregister(b)
-- @onstatechange_list.delete b
-- end
--
-- # same as onstatechange_register, but auto-unregisters if the block returns true
-- def onstatechange_register_once
-- handle = onstatechange_register { |st|
-- onstatechange_unregister(handle) if yield(st)
-- }
-- end
--
--
-- # this method is called by dfhack every 'onstatechange'
-- def onstatechange(newstate)
-- @onstatechange_list ||= []
-- @onstatechange_list.each { |cb| cb.call(newstate) }
-- end
--
-- # return true if the argument is under the cursor
-- def at_cursor?(obj)
-- same_pos?(obj, cursor)
-- end
--
-- # returns true if both arguments are at the same x/y/z
-- def same_pos?(pos1, pos2)
-- pos1 = pos1.pos if pos1.respond_to?(:pos)
-- pos2 = pos2.pos if pos2.respond_to?(:pos)
-- pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z
-- end
--
-- # try to match a user-specified name to one from the raws
-- # uses case-switching and substring matching
-- # eg match_rawname('coal', ['COAL_BITUMINOUS', 'BAUXITE']) => 'COAL_BITUMINOUS'
-- def match_rawname(name, rawlist)
-- rawlist.each { |r| return r if name == r }
-- rawlist.each { |r| return r if name.downcase == r.downcase }
-- may = rawlist.find_all { |r| r.downcase.index(name.downcase) }
-- may.first if may.length == 1
-- end
--
-- def translate_name(name, english=true, onlylastpart=false)
-- out = []
--
-- if not onlylastpart
-- out << name.first_name if name.first_name != ''
-- if name.nickname != ''
-- case respond_to?(:d_init) && d_init.nickname_dwarf
-- when :REPLACE_ALL; return "`#{name.nickname}'"
-- when :REPLACE_FIRST; out.pop
-- end
-- out << "`#{name.nickname}'"
-- end
-- end
-- return out.join(' ') unless name.words.find { |w| w >= 0 }
--
-- if not english
-- tsl = world.raws.language.translations[name.language]
-- if name.words[0] >= 0 or name.words[1] >= 0
-- out << ''
-- out.last << tsl.words[name.words[0]] if name.words[0] >= 0
-- out.last << tsl.words[name.words[1]] if name.words[1] >= 0
-- end
-- if name.words[5] >= 0
-- out << ''
-- (2..5).each { |i| out.last << tsl.words[name.words[i]] if name.words[i] >= 0 }
-- end
-- if name.words[6] >= 0
-- out << tsl.words[name.words[6]]
-- end
-- else
-- wl = world.raws.language
-- if name.words[0] >= 0 or name.words[1] >= 0
-- out << ''
-- out.last << wl.words[name.words[0]].forms[name.parts_of_speech[0]] if name.words[0] >= 0
-- out.last << wl.words[name.words[1]].forms[name.parts_of_speech[1]] if name.words[1] >= 0
-- end
-- if name.words[5] >= 0
-- out << 'the '
-- out.last.capitalize! if out.length == 1
-- (2..5).each { |i| out.last << wl.words[name.words[i]].forms[name.parts_of_speech[i]] if name.words[i] >= 0 }
-- end
-- if name.words[6] >= 0
-- out << 'of'
-- out.last.capitalize! if out.length == 1
-- out << wl.words[name.words[6]].forms[name.parts_of_speech[6]]
-- end
-- end
--
-- out.join(' ')
-- end
-- end
--end
--
--# global alias so we can write 'df.world.units.all[0]'
--def df
-- DFHack
--end
--
--# load autogenned file
--require './hack/ruby/ruby-autogen-defs'
--require './hack/ruby/ruby-autogen'
--
--# load all modules
--Dir['./hack/ruby/*.rb'].each { |m| require m.chomp('.rb') }
-diff --git a/plugins/ruby/ruby.rb.in b/plugins/ruby/ruby.rb.in
-new file mode 100644
-index 0000000..2ae169c
---- /dev/null
-+++ b/plugins/ruby/ruby.rb.in
-@@ -0,0 +1,239 @@
-+# redefine standard i/o methods to use the dfhack console
-+module Kernel
-+ def puts(*a)
-+ a.flatten.each { |l|
-+ DFHack.print_str(l.to_s.chomp + "\n")
-+ }
-+ nil
-+ end
-+
-+ def puts_err(*a)
-+ a.flatten.each { |l|
-+ DFHack.print_err(l.to_s.chomp + "\n")
-+ }
-+ nil
-+ end
-+
-+ def p(*a)
-+ a.each { |e|
-+ puts_err e.inspect
-+ }
-+ nil
-+ end
-+end
-+
-+module DFHack
-+ VERSION = version
-+
-+ class OnupdateCallback
-+ attr_accessor :callback, :timelimit, :minyear, :minyeartick, :description
-+ def initialize(descr, cb, tl, initdelay=0)
-+ @description = descr
-+ @callback = cb
-+ @ticklimit = tl
-+ @minyear = (tl ? df.cur_year : 0)
-+ @minyeartick = (tl ? df.cur_year_tick+initdelay : 0)
-+ end
-+
-+ # run callback if timedout
-+ def check_run(year, yeartick, yearlen)
-+ if @ticklimit
-+ return unless year > @minyear or (year == @minyear and yeartick >= @minyeartick)
-+ @minyear = year
-+ @minyeartick = yeartick + @ticklimit
-+ if @minyeartick > yearlen
-+ @minyear += 1
-+ @minyeartick -= yearlen
-+ end
-+ end
-+ # t0 = Time.now
-+ @callback.call
-+ # dt = Time.now - t0 ; puts "rb cb #@description took #{'%.02f' % dt}s" if dt > 0.1
-+ rescue Exception
-+ df.onupdate_unregister self
-+ puts_err "onupdate #@description unregistered: #$!", $!.backtrace
-+ end
-+
-+ def <=>(o)
-+ [@minyear, @minyeartick] <=> [o.minyear, o.minyeartick]
-+ end
-+ end
-+
-+ class << self
-+ attr_accessor :onupdate_list, :onstatechange_list
-+
-+ # register a callback to be called every gframe or more
-+ # ex: DFHack.onupdate_register('fastdwarf') { DFHack.world.units[0].counters.job_counter = 0 }
-+ # if ticklimit is given, do not call unless this much game ticks have passed. Handles advmode time stretching.
-+ def onupdate_register(descr, ticklimit=nil, initialtickdelay=0, &b)
-+ raise ArgumentError, 'need a description as 1st arg' unless descr.kind_of?(::String)
-+ @onupdate_list ||= []
-+ @onupdate_list << OnupdateCallback.new(descr, b, ticklimit, initialtickdelay)
-+ DFHack.onupdate_active = true
-+ if onext = @onupdate_list.sort.first
-+ DFHack.onupdate_minyear = onext.minyear
-+ DFHack.onupdate_minyeartick = onext.minyeartick
-+ end
-+ @onupdate_list.last
-+ end
-+
-+ # delete the callback for onupdate ; use the value returned by onupdate_register or the description
-+ def onupdate_unregister(b)
-+ b = @onupdate_list.find { |bb| bb.description == b } if b.kind_of?(String)
-+ @onupdate_list.delete b
-+ if @onupdate_list.empty?
-+ DFHack.onupdate_active = false
-+ DFHack.onupdate_minyear = DFHack.onupdate_minyeartick = DFHack.onupdate_minyeartickadv = -1
-+ end
-+ end
-+
-+ # same as onupdate_register, but remove the callback once it returns true
-+ def onupdate_register_once(*a)
-+ handle = onupdate_register(*a) {
-+ onupdate_unregister(handle) if yield
-+ }
-+ end
-+
-+ TICKS_PER_YEAR = 1200*28*12
-+ # this method is called by ruby.cpp if df.onupdate_active is true
-+ def onupdate
-+ @onupdate_list ||= []
-+
-+ y = cur_year
-+ ytmax = TICKS_PER_YEAR
-+ if df.gamemode == :ADVENTURE and df.respond_to?(:cur_year_tick_advmode)
-+ yt = cur_year_tick_advmode
-+ ytmax *= 144
-+ else
-+ yt = cur_year_tick
-+ end
-+
-+ @onupdate_list.each { |o|
-+ o.check_run(y, yt, ytmax)
-+ }
-+
-+ if onext = @onupdate_list.sort.first
-+ DFHack.onupdate_minyear = onext.minyear
-+ if ytmax > TICKS_PER_YEAR
-+ DFHack.onupdate_minyeartick = -1
-+ DFHack.onupdate_minyeartickadv = onext.minyeartick
-+ else
-+ DFHack.onupdate_minyeartick = onext.minyeartick
-+ DFHack.onupdate_minyeartickadv = -1
-+ end
-+ end
-+ end
-+
-+ # register a callback to be called every gframe or more
-+ # ex: DFHack.onstatechange_register { |newstate| puts "state changed to #{newstate}" }
-+ def onstatechange_register(&b)
-+ @onstatechange_list ||= []
-+ @onstatechange_list << b
-+ @onstatechange_list.last
-+ end
-+
-+ # delete the callback for onstatechange ; use the value returned by onstatechange_register
-+ def onstatechange_unregister(b)
-+ @onstatechange_list.delete b
-+ end
-+
-+ # same as onstatechange_register, but auto-unregisters if the block returns true
-+ def onstatechange_register_once
-+ handle = onstatechange_register { |st|
-+ onstatechange_unregister(handle) if yield(st)
-+ }
-+ end
-+
-+
-+ # this method is called by dfhack every 'onstatechange'
-+ def onstatechange(newstate)
-+ @onstatechange_list ||= []
-+ @onstatechange_list.each { |cb| cb.call(newstate) }
-+ end
-+
-+ # return true if the argument is under the cursor
-+ def at_cursor?(obj)
-+ same_pos?(obj, cursor)
-+ end
-+
-+ # returns true if both arguments are at the same x/y/z
-+ def same_pos?(pos1, pos2)
-+ pos1 = pos1.pos if pos1.respond_to?(:pos)
-+ pos2 = pos2.pos if pos2.respond_to?(:pos)
-+ pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z
-+ end
-+
-+ # try to match a user-specified name to one from the raws
-+ # uses case-switching and substring matching
-+ # eg match_rawname('coal', ['COAL_BITUMINOUS', 'BAUXITE']) => 'COAL_BITUMINOUS'
-+ def match_rawname(name, rawlist)
-+ rawlist.each { |r| return r if name == r }
-+ rawlist.each { |r| return r if name.downcase == r.downcase }
-+ may = rawlist.find_all { |r| r.downcase.index(name.downcase) }
-+ may.first if may.length == 1
-+ end
-+
-+ def translate_name(name, english=true, onlylastpart=false)
-+ out = []
-+
-+ if not onlylastpart
-+ out << name.first_name if name.first_name != ''
-+ if name.nickname != ''
-+ case respond_to?(:d_init) && d_init.nickname_dwarf
-+ when :REPLACE_ALL; return "`#{name.nickname}'"
-+ when :REPLACE_FIRST; out.pop
-+ end
-+ out << "`#{name.nickname}'"
-+ end
-+ end
-+ return out.join(' ') unless name.words.find { |w| w >= 0 }
-+
-+ if not english
-+ tsl = world.raws.language.translations[name.language]
-+ if name.words[0] >= 0 or name.words[1] >= 0
-+ out << ''
-+ out.last << tsl.words[name.words[0]] if name.words[0] >= 0
-+ out.last << tsl.words[name.words[1]] if name.words[1] >= 0
-+ end
-+ if name.words[5] >= 0
-+ out << ''
-+ (2..5).each { |i| out.last << tsl.words[name.words[i]] if name.words[i] >= 0 }
-+ end
-+ if name.words[6] >= 0
-+ out << tsl.words[name.words[6]]
-+ end
-+ else
-+ wl = world.raws.language
-+ if name.words[0] >= 0 or name.words[1] >= 0
-+ out << ''
-+ out.last << wl.words[name.words[0]].forms[name.parts_of_speech[0]] if name.words[0] >= 0
-+ out.last << wl.words[name.words[1]].forms[name.parts_of_speech[1]] if name.words[1] >= 0
-+ end
-+ if name.words[5] >= 0
-+ out << 'the '
-+ out.last.capitalize! if out.length == 1
-+ (2..5).each { |i| out.last << wl.words[name.words[i]].forms[name.parts_of_speech[i]] if name.words[i] >= 0 }
-+ end
-+ if name.words[6] >= 0
-+ out << 'of'
-+ out.last.capitalize! if out.length == 1
-+ out << wl.words[name.words[6]].forms[name.parts_of_speech[6]]
-+ end
-+ end
-+
-+ out.join(' ')
-+ end
-+ end
-+end
-+
-+# global alias so we can write 'df.world.units.all[0]'
-+def df
-+ DFHack
-+end
-+
-+# load autogenned file
-+require '@DFHACK_RUBY_DESTINATION@/ruby-autogen-defs'
-+require '@DFHACK_RUBY_DESTINATION@/ruby-autogen'
-+
-+# load all modules
-+Dir['@DFHACK_RUBY_DESTINATION@/*.rb'].each { |m| require m.chomp('.rb') }