Sha256: 193d0e7d0258aea15cde699c7ea2262211dcbda645175f6c518d645fe9d054ec
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
class AngryMob class MobError < StandardError; end class Mob attr_reader :node, :notifier, :act_scheduler, :target_mother def initialize @target_mother = Target::Mother.new(self) @act_scheduler = Act::Scheduler.new(self) end # delegate to the curren ui def self.ui (@ui ||= ui!).current end def self.ui! @ui = UI.new end def self.ui=(ui) @ui = ui end def ui self.class.ui end # main entry point the the whole system def riot!(nodename, attributes) start = Time.now ui.info "An AngryMob is rioting on #{nodename}." @node = Node.new(nodename, attributes) @act_scheduler.node = @node @notifier = Notifier.new(self) setup! run! ui.info "beaten in #{Time.now-start}s" ui.info "#{nodename} has been beaten by an AngryMob. Have a nice day!" @target_mother.clear_instances! @act_scheduler.reset! end # bind selected targets to the node def setup! ui.task "setting up node" defaults = AngryHash.new setup_node[node,defaults] if setup_node node_defaults[node,defaults] if node_defaults consolidate_node[node,defaults] if consolidate_node node.setup_finished! ui.good "setup complete" self end # runs acts and then delayed targets def run! act_scheduler.run! end # building # builder populates the following with definition blocks # node defaults attr_accessor :setup_node, :consolidate_node, :node_defaults # acts def acts @acts ||= Dictionary.new end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
angry_mob-0.1.0 | lib/angry_mob/mob.rb |