examples/rinda_agent.rb in rubyonacid-0.2.0 vs examples/rinda_agent.rb in rubyonacid-0.3.0

- old
+ new

@@ -1,88 +1,49 @@ require 'rubygems' -require 'wx' -require 'rubyonacid/factories/meta' -require 'rubyonacid/factories/constant' -require 'rubyonacid/factories/flash' -require 'rubyonacid/factories/loop' -require 'rubyonacid/factories/random' -require 'rubyonacid/factories/repeat' -require 'rubyonacid/factories/rinda' -require 'rubyonacid/factories/sine' -require 'rubyonacid/factories/skip' +begin + require 'wx' +rescue LoadError + raise "It appears that wxruby is not installed. 'sudo gem install wxruby' to install it." +end +require 'rubyonacid/factories/example' - - class MyApp < Wx::App WIDTH = 480 HEIGHT = 480 def on_init - @f = RubyOnAcid::RindaFactory.new(ARGV[0]) - @f.default_factory = create_factory + @f = RubyOnAcid::RindaFactory.new(ARGV[0] || "druby://127.0.0.1:7632") + @f.default_factory = RubyOnAcid::ExampleFactory.new @f.start_service #A skip factory, in charge of randomly resetting the meta factory. @resetter = RubyOnAcid::SkipFactory.new(0.999) - #Containing frame. + #Set up window. frame = Wx::Frame.new(nil, :size => [WIDTH, HEIGHT]) frame.show - - #Displays drawing. window = Wx::Window.new(frame, :size => [WIDTH, HEIGHT]) #Animate periodically. t = Wx::Timer.new(self, 55) evt_timer(55) do window.paint{|surface| render(surface)} @f.default_factory.reset_assignments if @resetter.boolean(:reset) end t.start(33) - + end - - def create_factory - random_factory = RubyOnAcid::RandomFactory.new - - #The MetaFactory assigns factories to requested value types. - meta_factory = RubyOnAcid::MetaFactory.new - #Loop factories loop from 0.0 to 1.0 (or 1.0 to 0.0 if the increment value is negative). - meta_factory.factory_pool << RubyOnAcid::LoopFactory.new(0.01) - meta_factory.factory_pool << RubyOnAcid::LoopFactory.new(-0.01) - meta_factory.factory_pool << RubyOnAcid::LoopFactory.new(0.001) - meta_factory.factory_pool << RubyOnAcid::LoopFactory.new(-0.001) - #Constant factories always return the same value, - meta_factory.factory_pool << RubyOnAcid::ConstantFactory.new(rand) - meta_factory.factory_pool << RubyOnAcid::ConstantFactory.new(rand) - meta_factory.factory_pool << RubyOnAcid::FlashFactory.new(rand(100)) - #Sine factories produce a "wave" pattern. - meta_factory.factory_pool << RubyOnAcid::SineFactory.new(0.1) - meta_factory.factory_pool << RubyOnAcid::SineFactory.new(-0.1) - meta_factory.factory_pool << RubyOnAcid::SineFactory.new(0.01) - meta_factory.factory_pool << RubyOnAcid::SineFactory.new(-0.01) - meta_factory.factory_pool << RubyOnAcid::RepeatFactory.new( - RubyOnAcid::LoopFactory.new(random_factory.within(:increment, -0.1, 0.1)), - random_factory.within(:interval, 2, 100) - ) - meta_factory.factory_pool << RubyOnAcid::RepeatFactory.new( - RubyOnAcid::SineFactory.new(random_factory.within(:increment, -0.1, 0.1)), - random_factory.within(:interval, 2, 100) - ) - - meta_factory - end def render(surface) color = Wx::Colour.new( @f.get(:red, :max => 255).to_i, @f.get(:green, :max => 255).to_i, @f.get(:blue, :max => 255).to_i, @f.get(:alpha, :min => 50, :max => 200).to_i ) - surface.pen = Wx::Pen.new(color, @f.within(:width, 1, 5).to_i) + surface.pen = Wx::Pen.new(color, @f.get(:width, :min => 1, :max => 5).to_i) surface.brush = Wx::Brush.new(color, Wx::SOLID) case @f.choose(:shape, :arc, :polygon, :line,