diff --git a/scripts/autounsuspend.rb b/scripts/autounsuspend.rb new file mode 100644 index 000000000..45dd8df4d --- /dev/null +++ b/scripts/autounsuspend.rb @@ -0,0 +1,58 @@ +class AutoUnsuspend + + def initialize + end + + def process + return false unless @running + joblist = df.world.job_list.next + count = 0 + + while joblist + job = joblist.item + joblist = joblist.next + + if job.job_type == :ConstructBuilding + if (job.flags.suspend) + item = job.items[0].item + job.flags.suspend = false + count += 1 + end + end + end + + puts "Unsuspended #{count} job(s)." unless count == 0 + + end + + def start + @onupdate = df.onupdate_register (5) { process } + @running = true + end + + def stop + df.onupdate_unregister(@onupdate) + @running = false + end + + def status + stat = @running ? "Running." : "Loaded." + end + +end + +case $script_args[0] +when 'start' + $AutoUnsuspend = AutoUnsuspend.new unless $AutoUnsuspend + $AutoUnsuspend.start + +when 'end', 'stop' + $AutoUnsuspend.stop + +else + if $AutoUnsuspend + puts $AutoUnsuspend.status + else + puts "AI not started" + end +end diff --git a/scripts/unsuspend.rb b/scripts/unsuspend.rb new file mode 100644 index 000000000..f8ae3a277 --- /dev/null +++ b/scripts/unsuspend.rb @@ -0,0 +1,17 @@ +joblist = df.world.job_list.next +count = 0 + +while joblist + job = joblist.item + joblist = joblist.next + + if job.job_type == :ConstructBuilding + if (job.flags.suspend && job.items && job.items[0]) + item = job.items[0].item + job.flags.suspend = false + count += 1 + end + end +end + +puts "Unsuspended #{count} job(s)."