lib/gamebox/core/actor_view_factory.rb
# builds a new ActorView and configures it per its definition that is setup via ActorView.define
builds a new ActorView and configures it per its definition that is setup via ActorView.define
builds a new ActorView and configures it per its definition that is setup via ActorView . define
def build(actor, opts={})
    view_klass = opts[:view] || actor.do_or_do_not(:view) || "#{actor.actor_type}_view"
    view_definition = ActorView.definitions[view_klass.to_sym]
    view = nil
    if view_definition
      actor_context = actor.this_object_context
      view = actor_context[:actor_view]
      reqs = view_definition.required_injections
      if reqs
        reqs.each do |req|
          object = actor_context[req]
          view.define_singleton_method req do
            components[req] 
          end
          components = view.send :components
          components[req] = object
        end
      end
      view.define_singleton_method :draw, &view_definition.draw_block if view_definition.draw_block
      if view_definition.setup_block
        view.define_singleton_method :setup, &view_definition.setup_block 
        view.setup
      end
      helpers = view_definition.helpers_block
      if helpers
        helpers_module = Module.new &helpers
        view.extend helpers_module
      end
      behavior_factory.add_behavior(actor, :visible, view: view)
      actor.react_to :show unless opts[:hide]
    end
    view
  end
def build ( actor , opts = { } ) view_klass = opts [ :view ] || actor . do_or_do_not ( :view ) || "#{actor.actor_type}_view" view_definition = ActorView . definitions [ view_klass . to_sym ] view = nil if view_definition actor_context = actor . this_object_context view = actor_context [ :actor_view ] reqs = view_definition . required_injections if reqs reqs . each do | req | object = actor_context [ req ] view . define_singleton_method req do components [ req ] end components = view . send :components components [ req ] = object end end view . define_singleton_method :draw , & view_definition . draw_block if view_definition . draw_block if view_definition . setup_block view . define_singleton_method :setup , & view_definition . setup_block view . setup end helpers = view_definition . helpers_block if helpers helpers_module = Module . new & helpers view . extend helpers_module end behavior_factory . add_behavior ( actor , :visible , view : view ) actor . react_to :show unless opts [ :hide ] end view end
builds a new ActorView and configures it per its definition that is setup via ActorView.define
builds a new ActorView and configures it per its definition that is setup via ActorView . define
# TODO  have animated, graphical, physical set a view attr on actor
actor
<not_specific>
opts
<not_specific>