class UIC::Application::StateMachine

Attributes

visual_states[R]
visual_transitions[R]

Public Class Methods

new(application,el) click to toggle source
# File lib/ruic/statemachine.rb, line 24
def initialize(application,el)
        self.owner = application
        self.el    = el

        @visuals = app.doc.at( "/xmlns:application/xmlns:statemachine[@ref='##{id}']/xmlns:visual-states" )
        @visuals ||= app.doc.root.add_child("<statemachine ref='##{id}'><visual-states/></statemachine>")
        @visual_states      = VisualStates.new( self, @visuals )
        @visual_transitions = VisualTransitions.new( self, @visuals )

        self.file  = application.absolute_path(src)
end

Public Instance Methods

image_usage() click to toggle source
# File lib/ruic/statemachine.rb, line 37
def image_usage
        (
                visual_states.flat_map{ |vs| vs.enter_actions.flat_map{ |a| [a,vs] } } +
                visual_states.flat_map{ |vs| vs.exit_actions.flat_map{ |a| [a,vs] } } +
                visual_transitions.flat_map{ |vt| vt.actions.flat_map{ |a| [a,vt] } }
        ).select do |visual_action,owner|
                visual_action.is_a?(UIC::Application::StateMachine::VisualAction::SetAttribute) &&
                visual_action.value[/\A(['"])[^'"]+\1\Z/] && # ensure that it's a simple string value
                visual_action.element.properties[ visual_action.attribute ].is_a?( UIC::Property::Image )
        end.group_by do |visual_action,owner|
                app.absolute_path( visual_action.value[/\A(['"])([^'"]+)\1\Z/,2] )
        end.each do |image_path,array|
                array.map!(&:last)
        end
end
referenced_files() click to toggle source
# File lib/ruic/statemachine.rb, line 60
def referenced_files
        visual_actions.map do |action|
                if action.is_a?(VisualAction::SetAttribute) && (el=action.element) && (path=action.value[ /\A(['"])([^'"]+)\1\Z/, 2 ])
                        type=el.properties[ action.attribute ].type
                        if action.attribute=='sourcepath' || action.attribute=='importfile' || type=='Texture'
                                app.absolute_path( path.sub(/#.+$/,'') )
                        elsif type=='Font'
                                app.absolute_path( File.join( 'fonts', path.sub(/$/,'.ttf') ) )
                        end
                end
        end.compact.uniq
end
visual_actions() click to toggle source

@return [Array<VisualAction>] all visual actions in the `.uia` for this state machine.

# File lib/ruic/statemachine.rb, line 54
def visual_actions
        visual_states.flat_map(&:enter_actions) +
        visual_states.flat_map(&:exit_actions) +
        visual_transitions.flat_map(&:actions)
end