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. Any scenes you create are accessable under the Scenes namespace as Constants.

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
  self.systems = 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
  self.systems = systems.sort_by(&:priority)
  FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self
  true
end