Class: FelFlame::Scenes

Inherits:
Object
  • Object
show all
Defined in:
lib/felflame.rb,
lib/felflame/scene_manager.rb

Overview

Creates and manages Scenes. Scenes are collections of Systems, and execute all the Systems when called upon.

TODO: Improve Scenes overview

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Scenes

Create a new Scene using the name given

Parameters:

  • name (String)

    String format must follow requirements of a constant



14
15
16
17
# File 'lib/felflame/scene_manager.rb', line 14

def initialize(name)
  FelFlame::Scenes.const_set(name, self)
  @const_name = name
end

Instance Attribute Details

#const_nameObject (readonly)

The Constant name assigned to this Scene



4
5
6
# File 'lib/felflame/scene_manager.rb', line 4

def const_name
  @const_name
end

#systemsArray<System>

The list of Systems this Scene contains

Returns:

  • (Array<System>)


21
22
23
# File 'lib/felflame/scene_manager.rb', line 21

def systems
  @systems ||= []
end

Instance Method Details

#add(*systems_to_add) ⇒ Boolean

Adds any number of Systems to this Scene

Returns:

  • (Boolean)

    true



34
35
36
37
38
39
# File 'lib/felflame/scene_manager.rb', line 34

def add(*systems_to_add)
  self.systems |= systems_to_add
  systems.sort_by!(&:priority)
  FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self
  true
end

#callBoolean

Execute all systems in this Scene, in the order of their priority

Returns:

  • (Boolean)

    true



27
28
29
30
# File 'lib/felflame/scene_manager.rb', line 27

def call
  systems.each(&:call)
  true
end

#clearBoolean

Removes all Systems from this Scene

Returns:

  • (Boolean)

    true



52
53
54
55
56
# File 'lib/felflame/scene_manager.rb', line 52

def clear
  systems.clear
  FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self
  true
end

#remove(*systems_to_remove) ⇒ Boolean

Removes any number of SystemS from this Scene

Returns:

  • (Boolean)

    true



43
44
45
46
47
48
# File 'lib/felflame/scene_manager.rb', line 43

def remove(*systems_to_remove)
  self.systems -= systems_to_remove
  systems.sort_by!(&:priority)
  FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self
  true
end