ippa-chingu 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +504 -0
- data/Manifest.txt +6 -2
- data/README.rdoc +7 -6
- data/benchmarks/benchmark5.rb +29 -0
- data/chingu.gemspec +3 -3
- data/examples/example10.rb +71 -0
- data/examples/example9.rb +25 -14
- data/lib/chingu.rb +24 -47
- data/lib/chingu/basic_game_object.rb +6 -50
- data/lib/chingu/core_extensions.rb +22 -0
- data/lib/chingu/effects.rb +22 -0
- data/lib/chingu/fpscounter.rb +22 -0
- data/lib/chingu/game_object.rb +24 -1
- data/lib/chingu/game_state.rb +22 -0
- data/lib/chingu/game_state_manager.rb +22 -0
- data/lib/chingu/game_states/debug.rb +22 -0
- data/lib/chingu/game_states/fade_to.rb +22 -0
- data/lib/chingu/game_states/pause.rb +23 -0
- data/lib/chingu/gfx_helpers.rb +22 -0
- data/lib/chingu/helpers.rb +22 -0
- data/lib/chingu/inflector.rb +22 -0
- data/lib/chingu/require_all.rb +133 -0
- data/lib/chingu/traits/collision_detection.rb +98 -5
- data/lib/chingu/traits/effect.rb +89 -56
- data/lib/chingu/traits/effect_module.rb +86 -0
- data/lib/chingu/traits/input.rb +23 -0
- data/lib/chingu/traits/rotation_center.rb +22 -0
- data/lib/chingu/traits/velocity.rb +52 -44
- data/lib/chingu/traits/velocity_module.rb +44 -0
- data/lib/chingu/window.rb +1 -1
- metadata +8 -4
- data/lib/chingu/traits/deprecated_module_visual.rb +0 -108
- data/lib/chingu/traits/deprecated_visual.rb +0 -100
data/Manifest.txt
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
History.txt
|
2
|
+
LICENSE
|
2
3
|
Manifest.txt
|
3
4
|
README.rdoc
|
4
5
|
Rakefile
|
@@ -6,10 +7,12 @@ benchmarks/README.txt
|
|
6
7
|
benchmarks/benchmark.rb
|
7
8
|
benchmarks/benchmark3.rb
|
8
9
|
benchmarks/benchmark4.rb
|
10
|
+
benchmarks/benchmark5.rb
|
9
11
|
benchmarks/meta_benchmark.rb
|
10
12
|
benchmarks/meta_benchmark2.rb
|
11
13
|
chingu.gemspec
|
12
14
|
examples/example1.rb
|
15
|
+
examples/example10.rb
|
13
16
|
examples/example2.rb
|
14
17
|
examples/example3.rb
|
15
18
|
examples/example4.rb
|
@@ -53,12 +56,13 @@ lib/chingu/named_resource.rb
|
|
53
56
|
lib/chingu/parallax.rb
|
54
57
|
lib/chingu/particle.rb
|
55
58
|
lib/chingu/rect.rb
|
59
|
+
lib/chingu/require_all.rb
|
56
60
|
lib/chingu/text.rb
|
57
61
|
lib/chingu/traits/collision_detection.rb
|
58
|
-
lib/chingu/traits/deprecated_module_visual.rb
|
59
|
-
lib/chingu/traits/deprecated_visual.rb
|
60
62
|
lib/chingu/traits/effect.rb
|
63
|
+
lib/chingu/traits/effect_module.rb
|
61
64
|
lib/chingu/traits/input.rb
|
62
65
|
lib/chingu/traits/rotation_center.rb
|
63
66
|
lib/chingu/traits/velocity.rb
|
67
|
+
lib/chingu/traits/velocity_module.rb
|
64
68
|
lib/chingu/window.rb
|
data/README.rdoc
CHANGED
@@ -83,14 +83,14 @@ A class for easy paralaxxscrolling. See example3.rb for more.
|
|
83
83
|
=== Various Helpers
|
84
84
|
Both $window and game states gets some new graphical helpers, currently only 3, but quite useful:
|
85
85
|
|
86
|
-
fill() # Fills whole window with color 'color'.
|
87
|
-
fill_rect() # Fills a given Rect 'rect' with Color 'color'
|
88
|
-
fill_gradient() # Fills window or a given rect with a gradient between two colors.
|
86
|
+
fill() # Fills whole window with color 'color'.
|
87
|
+
fill_rect() # Fills a given Rect 'rect' with Color 'color'
|
88
|
+
fill_gradient() # Fills window or a given rect with a gradient between two colors.
|
89
89
|
|
90
90
|
If you base your models on GameObject (or BasicGameObject) you get:
|
91
|
-
Enemy.all # Returns all object based on this class
|
92
|
-
Enemy.each # Iterates through all objects of class Enemt.
|
93
|
-
Enemy.destroy_if(&block) # destroy all objects for which &block returns true
|
91
|
+
Enemy.all # Returns all object based on this class
|
92
|
+
Enemy.each # Iterates through all objects of class Enemt.
|
93
|
+
Enemy.destroy_if(&block) # destroy all objects for which &block returns true
|
94
94
|
|
95
95
|
|
96
96
|
== BASICS / EXAMPLES
|
@@ -514,6 +514,7 @@ See http://www.libgosu.org/rdoc/classes/Gosu/Window.html for a full set of metho
|
|
514
514
|
* Jacius of Rubygame (For doing cool stuff that's well documented as re-usable). So far rect.rb and named_resource.rb is taken from Rubygame.
|
515
515
|
* Jduff for input / commits.
|
516
516
|
* Jlnr,Philymore,Shawn24,JamesKilton for constructive feedback/discussions.
|
517
|
+
* Thanks to http://github.com/tarcieri for require_all code, good stuff
|
517
518
|
|
518
519
|
== REQUIREMENTS:
|
519
520
|
* Gosu latest version
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'randomr'
|
4
|
+
|
5
|
+
class Foo
|
6
|
+
def initialize
|
7
|
+
end
|
8
|
+
|
9
|
+
def bar
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
foo = Foo.new
|
14
|
+
|
15
|
+
a = Array.new
|
16
|
+
n = 1000000
|
17
|
+
Benchmark.bm(22) do |x|
|
18
|
+
x.report('respond_to?') do
|
19
|
+
n.times do
|
20
|
+
foo.respond_to?(:bar)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
x.report('foo.bar method call') do
|
25
|
+
n.times do
|
26
|
+
foo.bar
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/chingu.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{chingu}
|
5
|
-
s.version = "0.5.
|
5
|
+
s.version = "0.5.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["ippa"]
|
9
|
-
s.date = %q{2009-09-
|
9
|
+
s.date = %q{2009-09-17}
|
10
10
|
s.description = %q{Game framework built on top of the OpenGL accelerated game lib Gosu.
|
11
11
|
It adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and automation of common task.}
|
12
12
|
s.email = ["ippa@rubylicio.us"]
|
13
13
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "benchmarks/README.txt"]
|
14
|
-
s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "benchmarks/README.txt", "benchmarks/benchmark.rb", "benchmarks/benchmark3.rb", "benchmarks/benchmark4.rb", "benchmarks/meta_benchmark.rb", "benchmarks/meta_benchmark2.rb", "chingu.gemspec", "examples/example1.rb", "examples/example2.rb", "examples/example3.rb", "examples/example4.rb", "examples/example5.rb", "examples/example6.rb", "examples/example7.rb", "examples/example8.rb", "examples/example9.rb", "examples/media/Parallax-scroll-example-layer-0.png", "examples/media/Parallax-scroll-example-layer-1.png", "examples/media/Parallax-scroll-example-layer-2.png", "examples/media/Parallax-scroll-example-layer-3.png", "examples/media/background1.png", "examples/media/fire_bullet.png", "examples/media/fireball.png", "examples/media/particle.png", "examples/media/ruby.png", "examples/media/spaceship.png", "examples/media/stickfigure.bmp", "examples/media/stickfigure.png", "examples/media/video_games.png", "lib/chingu.rb", "lib/chingu/actor.rb", "lib/chingu/animation.rb", "lib/chingu/assets.rb", "lib/chingu/basic_game_object.rb", "lib/chingu/core_extensions.rb", "lib/chingu/effects.rb", "lib/chingu/fpscounter.rb", "lib/chingu/game_object.rb", "lib/chingu/game_state.rb", "lib/chingu/game_state_manager.rb", "lib/chingu/game_states/debug.rb", "lib/chingu/game_states/fade_to.rb", "lib/chingu/game_states/pause.rb", "lib/chingu/gfx_helpers.rb", "lib/chingu/helpers.rb", "lib/chingu/inflector.rb", "lib/chingu/input.rb", "lib/chingu/named_resource.rb", "lib/chingu/parallax.rb", "lib/chingu/particle.rb", "lib/chingu/rect.rb", "lib/chingu/text.rb", "lib/chingu/traits/collision_detection.rb", "lib/chingu/traits/
|
14
|
+
s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.rdoc", "Rakefile", "benchmarks/README.txt", "benchmarks/benchmark.rb", "benchmarks/benchmark3.rb", "benchmarks/benchmark4.rb", "benchmarks/benchmark5.rb", "benchmarks/meta_benchmark.rb", "benchmarks/meta_benchmark2.rb", "chingu.gemspec", "examples/example1.rb", "examples/example10.rb", "examples/example2.rb", "examples/example3.rb", "examples/example4.rb", "examples/example5.rb", "examples/example6.rb", "examples/example7.rb", "examples/example8.rb", "examples/example9.rb", "examples/media/Parallax-scroll-example-layer-0.png", "examples/media/Parallax-scroll-example-layer-1.png", "examples/media/Parallax-scroll-example-layer-2.png", "examples/media/Parallax-scroll-example-layer-3.png", "examples/media/background1.png", "examples/media/fire_bullet.png", "examples/media/fireball.png", "examples/media/particle.png", "examples/media/ruby.png", "examples/media/spaceship.png", "examples/media/stickfigure.bmp", "examples/media/stickfigure.png", "examples/media/video_games.png", "lib/chingu.rb", "lib/chingu/actor.rb", "lib/chingu/animation.rb", "lib/chingu/assets.rb", "lib/chingu/basic_game_object.rb", "lib/chingu/core_extensions.rb", "lib/chingu/effects.rb", "lib/chingu/fpscounter.rb", "lib/chingu/game_object.rb", "lib/chingu/game_state.rb", "lib/chingu/game_state_manager.rb", "lib/chingu/game_states/debug.rb", "lib/chingu/game_states/fade_to.rb", "lib/chingu/game_states/pause.rb", "lib/chingu/gfx_helpers.rb", "lib/chingu/helpers.rb", "lib/chingu/inflector.rb", "lib/chingu/input.rb", "lib/chingu/named_resource.rb", "lib/chingu/parallax.rb", "lib/chingu/particle.rb", "lib/chingu/rect.rb", "lib/chingu/require_all.rb", "lib/chingu/text.rb", "lib/chingu/traits/collision_detection.rb", "lib/chingu/traits/effect.rb", "lib/chingu/traits/effect_module.rb", "lib/chingu/traits/input.rb", "lib/chingu/traits/rotation_center.rb", "lib/chingu/traits/velocity.rb", "lib/chingu/traits/velocity_module.rb", "lib/chingu/window.rb"]
|
15
15
|
s.homepage = %q{http://github.com/ippa/chingu/tree/master}
|
16
16
|
s.rdoc_options = ["--main", "README.rdoc"]
|
17
17
|
s.require_paths = ["lib"]
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'opengl'
|
3
|
+
require File.join(File.dirname($0), "..", "lib", "chingu")
|
4
|
+
include Gosu
|
5
|
+
include Chingu
|
6
|
+
$stderr.sync = $stdout.sync = true
|
7
|
+
|
8
|
+
#
|
9
|
+
# Testing out a new module-only-super-chain trait system
|
10
|
+
#
|
11
|
+
class Game < Chingu::Window
|
12
|
+
def initialize
|
13
|
+
super(400,400)
|
14
|
+
self.caption = "Testing out new module-based traits (SPACE for more spaceships)"
|
15
|
+
self.input = { :space => :new_thing, :esc => :exit }
|
16
|
+
new_thing(200,200)
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
puts "--- UPDATE ---"
|
21
|
+
super
|
22
|
+
end
|
23
|
+
|
24
|
+
def draw
|
25
|
+
puts "--- DRAW ---"
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def new_thing(x=nil, y=nil)
|
30
|
+
Thing.new(:x => x||rand($window.width), :y => y||rand($window.height), :debug => true)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Thing < Chingu::GameObject
|
35
|
+
has_trait :effect
|
36
|
+
has_trait :velocity
|
37
|
+
|
38
|
+
def initialize(options)
|
39
|
+
super
|
40
|
+
@image = Image["spaceship.png"]
|
41
|
+
self.rotation_center(:center)
|
42
|
+
|
43
|
+
# Julians ninjahack to get that sweet pixely feeling when zooming :)
|
44
|
+
glBindTexture(GL_TEXTURE_2D, @image.gl_tex_info.tex_name)
|
45
|
+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
|
46
|
+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
|
47
|
+
|
48
|
+
self.factor = 8
|
49
|
+
self.rotating = 2
|
50
|
+
self.velocity_x = 2
|
51
|
+
end
|
52
|
+
|
53
|
+
def update
|
54
|
+
puts "Thing#update"
|
55
|
+
if outside_window?
|
56
|
+
@velocity_x = -@velocity_x
|
57
|
+
@rotating = -@rotating
|
58
|
+
end
|
59
|
+
|
60
|
+
super
|
61
|
+
end
|
62
|
+
|
63
|
+
def draw
|
64
|
+
puts "Thing#draw"
|
65
|
+
super
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
Game.new.show
|
data/examples/example9.rb
CHANGED
@@ -19,6 +19,14 @@ end
|
|
19
19
|
|
20
20
|
class FireCube < Chingu::GameObject
|
21
21
|
has_traits :velocity, :effect
|
22
|
+
has_trait :collision_detection
|
23
|
+
#
|
24
|
+
# TODO:
|
25
|
+
# has_trait :collision_detection, :type => :bounding_box
|
26
|
+
# has_trait :collision_detection, :type => :radius
|
27
|
+
#
|
28
|
+
|
29
|
+
attr_accessor :color
|
22
30
|
|
23
31
|
def initialize(options)
|
24
32
|
super
|
@@ -27,17 +35,18 @@ class FireCube < Chingu::GameObject
|
|
27
35
|
# initialize with a rightwards velocity with some damping to look more realistic
|
28
36
|
@velocity_x = options[:velocity_x] || 3 - rand(6)
|
29
37
|
@velocity_y = options[:velocity_y] || 3 - rand(6)
|
30
|
-
@
|
38
|
+
@bounding_box = Rect.new([@x, @y, 20, 20])
|
39
|
+
@color = Color.new(255,100,255,255)
|
31
40
|
end
|
32
41
|
|
33
|
-
def
|
34
|
-
|
35
|
-
@rect.x = @x
|
36
|
-
@rect.y = @y
|
42
|
+
def draw
|
43
|
+
$window.fill_rect(@bounding_box, @color)
|
37
44
|
end
|
38
45
|
|
39
|
-
def
|
40
|
-
|
46
|
+
def die!
|
47
|
+
@color = Color.new(255,255,255,255)
|
48
|
+
self.fading = -20
|
49
|
+
self.detect_collisions = false
|
41
50
|
end
|
42
51
|
|
43
52
|
end
|
@@ -45,7 +54,7 @@ end
|
|
45
54
|
class Particles < Chingu::GameState
|
46
55
|
def setup
|
47
56
|
self.input = { :space => :new_fire_cube }
|
48
|
-
|
57
|
+
20.times { new_fire_cube }
|
49
58
|
end
|
50
59
|
|
51
60
|
def new_fire_cube
|
@@ -62,12 +71,14 @@ class Particles < Chingu::GameState
|
|
62
71
|
particle.velocity_y = -particle.velocity_y
|
63
72
|
end
|
64
73
|
end
|
65
|
-
|
66
|
-
#
|
67
|
-
#
|
68
|
-
#
|
69
|
-
|
70
|
-
|
74
|
+
|
75
|
+
#
|
76
|
+
# GameObject.each_collsion wont collide an object with itself
|
77
|
+
#
|
78
|
+
FireCube.each_collision(FireCube) do |cube1, cube2|
|
79
|
+
cube1.die!
|
80
|
+
cube2.die!
|
81
|
+
end
|
71
82
|
|
72
83
|
self.game_objects.reject! { |object| object.color.alpha == 0 }
|
73
84
|
|
data/lib/chingu.rb
CHANGED
@@ -1,55 +1,32 @@
|
|
1
|
+
#--
|
1
2
|
#
|
3
|
+
# Chingu -- Game framework built on top of the opengl accelerated gamelib Gosu
|
4
|
+
# Copyright (C) 2009 ippa / ippa@rubylicio.us
|
2
5
|
#
|
6
|
+
# This library is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU Lesser General Public
|
8
|
+
# License as published by the Free Software Foundation; either
|
9
|
+
# version 2.1 of the License, or (at your option) any later version.
|
3
10
|
#
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
rotation_center
|
15
|
-
}.each do |lib|
|
16
|
-
root ||= File.dirname(File.expand_path(__FILE__))
|
17
|
-
require File.join(root,"chingu","traits",lib)
|
18
|
-
end
|
11
|
+
# This library is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
# Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with this library; if not, write to the Free Software
|
18
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
19
|
+
#
|
20
|
+
#++
|
19
21
|
|
20
|
-
|
21
|
-
inflector
|
22
|
-
gfx_helpers
|
23
|
-
core_extensions
|
24
|
-
basic_game_object
|
25
|
-
game_object
|
26
|
-
actor
|
27
|
-
effects
|
28
|
-
game_state_manager
|
29
|
-
game_state
|
30
|
-
window
|
31
|
-
fpscounter
|
32
|
-
named_resource
|
33
|
-
assets
|
34
|
-
text
|
35
|
-
rect
|
36
|
-
animation
|
37
|
-
particle
|
38
|
-
input
|
39
|
-
parallax
|
40
|
-
}.each do |lib|
|
41
|
-
root ||= File.dirname(File.expand_path(__FILE__))
|
42
|
-
require File.join(root,"chingu",lib)
|
43
|
-
end
|
22
|
+
CHINGU_ROOT = File.dirname(File.expand_path(__FILE__))
|
44
23
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
require File.join(root,"chingu","game_states",lib)
|
51
|
-
end
|
24
|
+
require 'rubygems' unless RUBY_VERSION =~ /1\.9/
|
25
|
+
require 'gosu'
|
26
|
+
require 'set'
|
27
|
+
require File.join(CHINGU_ROOT,"chingu","require_all") # Thanks to http://github.com/tarcieri/require_all !
|
28
|
+
require_all "#{CHINGU_ROOT}/chingu"
|
52
29
|
|
53
30
|
module Chingu
|
54
|
-
VERSION = "0.5.
|
31
|
+
VERSION = "0.5.4"
|
55
32
|
end
|
@@ -8,22 +8,10 @@ module Chingu
|
|
8
8
|
class BasicGameObject
|
9
9
|
attr_reader :options, :parent
|
10
10
|
|
11
|
-
#
|
12
|
-
# Create class variable @traits in every new class derived from GameObject
|
13
|
-
#
|
14
|
-
def self.inherited(subclass)
|
15
|
-
subclass.instance_variable_set("@traits", Set.new)
|
16
|
-
end
|
17
|
-
|
18
|
-
class << self
|
19
|
-
attr_accessor :traits
|
20
|
-
end
|
21
|
-
|
22
11
|
#
|
23
12
|
# adds a trait or traits to a certain game class
|
24
13
|
#
|
25
14
|
# Executes a ruby "include" the specified module
|
26
|
-
# and sets up update and draw hooks.
|
27
15
|
#
|
28
16
|
def self.has_trait(*traits)
|
29
17
|
has_traits(*traits)
|
@@ -34,17 +22,8 @@ module Chingu
|
|
34
22
|
#
|
35
23
|
def self.has_traits(*traits)
|
36
24
|
Array(traits).each do |trait|
|
37
|
-
|
38
25
|
if trait.is_a?(::Symbol) || trait.is_a?(::String)
|
39
|
-
|
40
|
-
klass_or_module = eval(string)
|
41
|
-
|
42
|
-
if klass_or_module.is_a?(Class)
|
43
|
-
trait = klass_or_module.new(self, {})
|
44
|
-
@traits << trait
|
45
|
-
elsif klass_or_module.is_a?(Module)
|
46
|
-
include klass_or_module
|
47
|
-
end
|
26
|
+
include Chingu::Traits.const_get(Chingu::Inflector.camelize(trait))
|
48
27
|
end
|
49
28
|
end
|
50
29
|
end
|
@@ -58,11 +37,6 @@ module Chingu
|
|
58
37
|
#
|
59
38
|
def initialize(options = {})
|
60
39
|
@options = options
|
61
|
-
setupable_traits
|
62
|
-
updateable_traits
|
63
|
-
drawable_traits
|
64
|
-
|
65
|
-
@setupable_traits.each { |c| c.setup(self, options) }
|
66
40
|
|
67
41
|
#
|
68
42
|
# A GameObject can either belong to a GameState or our mainwindow ($window)
|
@@ -73,37 +47,19 @@ module Chingu
|
|
73
47
|
@parent.add_game_object(self) if @parent
|
74
48
|
end
|
75
49
|
|
50
|
+
# This will call #setup on the latest trait mixed in, which then will pass it on with super.
|
51
|
+
setup_trait(options)
|
76
52
|
end
|
77
53
|
|
78
|
-
|
79
|
-
|
80
|
-
#
|
81
|
-
def traits; self.class.traits || []; end
|
82
|
-
|
83
|
-
def setupable_traits
|
84
|
-
@setupable_traits ||= traits.select { |c| c.respond_to?(:setup) }
|
85
|
-
end
|
86
|
-
def updateable_traits
|
87
|
-
@updateable_traits ||= traits.select { |c| c.respond_to?(:update) }
|
88
|
-
end
|
89
|
-
def drawable_traits
|
90
|
-
@drawable_traits ||= traits.select { |c| c.respond_to?(:draw) }
|
54
|
+
|
55
|
+
def setup_trait(options)
|
91
56
|
end
|
92
57
|
|
93
|
-
#
|
94
|
-
# Call .update on all traits that implements it
|
95
|
-
#
|
96
58
|
def update
|
97
|
-
@updateable_traits.each { |c| c.update(self) }
|
98
59
|
end
|
99
60
|
|
100
|
-
#
|
101
|
-
# Call .draw on all traits that implements it
|
102
|
-
#
|
103
61
|
def draw
|
104
|
-
|
105
|
-
end
|
106
|
-
|
62
|
+
end
|
107
63
|
|
108
64
|
#
|
109
65
|
# Fetch all objects of a current class.
|
@@ -1,3 +1,25 @@
|
|
1
|
+
#--
|
2
|
+
#
|
3
|
+
# Chingu -- Game framework built on top of the opengl accelerated gamelib Gosu
|
4
|
+
# Copyright (C) 2009 ippa / ippa@rubylicio.us
|
5
|
+
#
|
6
|
+
# This library is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU Lesser General Public
|
8
|
+
# License as published by the Free Software Foundation; either
|
9
|
+
# version 2.1 of the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# This library is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
# Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with this library; if not, write to the Free Software
|
18
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
19
|
+
#
|
20
|
+
#++
|
21
|
+
|
22
|
+
|
1
23
|
#
|
2
24
|
# Core extensions to GOSU
|
3
25
|
# Some of these require the gem 'texplay'
|