Class: Chingu::GameObjectList
- Inherits:
-
Object
- Object
- Chingu::GameObjectList
- Defined in:
- lib/chingu/game_object_list.rb
Overview
Manages a list of game objects An instance of GameObjectList is automaticly created as “game_objects” if using Chingu::Window
Instance Method Summary collapse
- #add_game_object(object) ⇒ Object
- #destroy_if ⇒ Object
- #draw ⇒ Object
- #each ⇒ Object
-
#initialize ⇒ GameObjectList
constructor
A new instance of GameObjectList.
- #of_class(klass) ⇒ Object
- #remove_all ⇒ Object (also: #clear)
- #remove_game_object(object) ⇒ Object
- #size ⇒ Object
- #to_s ⇒ Object
- #update ⇒ Object
Constructor Details
#initialize ⇒ GameObjectList
Returns a new instance of GameObjectList.
30 31 32 33 |
# File 'lib/chingu/game_object_list.rb', line 30 def initialize @game_objects = Array.new #@game_objects_by_class = Hash.new end |
Instance Method Details
#add_game_object(object) ⇒ Object
50 51 52 53 |
# File 'lib/chingu/game_object_list.rb', line 50 def add_game_object(object) @game_objects.push(object) #(@game_objects_by_class[object.class] ||= []).push(object) end |
#destroy_if ⇒ Object
60 61 62 63 |
# File 'lib/chingu/game_object_list.rb', line 60 def destroy_if @game_objects.reject! { |object| yield(object) } #@game_objects_by_class.delete_if { |klass, object| yield(object) } end |
#draw ⇒ Object
69 70 71 72 |
# File 'lib/chingu/game_object_list.rb', line 69 def draw @game_objects.each { |object| object.draw_trait } @game_objects.each { |object| object.draw } end |
#each ⇒ Object
79 80 81 |
# File 'lib/chingu/game_object_list.rb', line 79 def each @game_objects.each { |object| yield object } end |
#of_class(klass) ⇒ Object
39 40 41 42 |
# File 'lib/chingu/game_object_list.rb', line 39 def of_class(klass) @game_objects.select { |game_object| game_object.is_a? klass } #@game_objects_by_class[klass] || [] end |
#remove_all ⇒ Object Also known as: clear
44 45 46 47 |
# File 'lib/chingu/game_object_list.rb', line 44 def remove_all @game_objects.clear #@game_objects_of_class.clear end |
#remove_game_object(object) ⇒ Object
55 56 57 58 |
# File 'lib/chingu/game_object_list.rb', line 55 def remove_game_object(object) @game_objects.delete(object) #@game_objects_by_class[object.class].delete(object) end |
#size ⇒ Object
65 66 67 |
# File 'lib/chingu/game_object_list.rb', line 65 def size @game_objects.size end |
#to_s ⇒ Object
35 36 37 |
# File 'lib/chingu/game_object_list.rb', line 35 def to_s "#{@game_objects.size} game objects." end |
#update ⇒ Object
74 75 76 77 |
# File 'lib/chingu/game_object_list.rb', line 74 def update @game_objects.each { |object| object.update_trait } @game_objects.each { |object| object.update } end |