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,