Class: UIC::Application::StateMachine
- Inherits:
-
StateMachine
- Object
- StateMachine
- UIC::Application::StateMachine
- Extended by:
- ElementBacked::ClassMethods
- Includes:
- ElementBacked
- Defined in:
- lib/ruic/statemachine.rb
Defined Under Namespace
Classes: VisualAction, VisualState, VisualStates, VisualTransition, VisualTransitions
Instance Attribute Summary collapse
-
#visual_states ⇒ Object
readonly
Returns the value of attribute visual_states.
-
#visual_transitions ⇒ Object
readonly
Returns the value of attribute visual_transitions.
Attributes included from ElementBacked
Attributes included from XMLFileBacked
Attributes included from FileBacked
Instance Method Summary collapse
- #image_usage ⇒ Object
-
#initialize(application, el) ⇒ StateMachine
constructor
A new instance of StateMachine.
- #referenced_files ⇒ Object
-
#visual_actions ⇒ Array<VisualAction>
All visual actions in the
.uia
for this state machine.
Methods included from ElementBacked::ClassMethods
Methods inherited from StateMachine
Methods included from XMLFileBacked
#file=, #save!, #save_as, #to_xml
Methods included from FileBacked
#absolute_path, #file_found?, #filename, #relative_path, #save!, #save_as
Constructor Details
#initialize(application, el) ⇒ StateMachine
Returns a new instance of StateMachine.
24 25 26 27 28 29 30 31 32 33 34 |
# 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 |
Instance Attribute Details
#visual_states ⇒ Object (readonly)
Returns the value of attribute visual_states.
22 23 24 |
# File 'lib/ruic/statemachine.rb', line 22 def visual_states @visual_states end |
#visual_transitions ⇒ Object (readonly)
Returns the value of attribute visual_transitions.
23 24 25 |
# File 'lib/ruic/statemachine.rb', line 23 def visual_transitions @visual_transitions end |
Instance Method Details
#image_usage ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# 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 ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 |
# 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 ⇒ Array<VisualAction>
Returns all visual actions in the .uia
for this state machine.
54 55 56 57 58 |
# 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 |