chingu 0.6.7 → 0.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/README.rdoc +11 -4
- data/Rakefile +17 -30
- data/chingu.gemspec +167 -35
- data/examples/{example10.rb → example10_traits_retrofy.rb} +3 -1
- data/examples/{example11.rb → example11_animation.rb} +0 -0
- data/examples/{example12.rb → example12_trait_timer.rb} +3 -0
- data/examples/{example13.rb → example13_high_scores.rb} +0 -0
- data/examples/{example14.rb → example14_bounding_box_circle.rb} +1 -1
- data/examples/{example15.rb → example15_trait_timer2.rb} +0 -0
- data/examples/{example16.rb → example16_online_high_scores.rb} +0 -0
- data/examples/example17_gosu_tutorial.rb +103 -0
- data/examples/{example1.rb → example1_basics.rb} +0 -0
- data/examples/{example2.rb → example2_gamestate_basics.rb} +0 -0
- data/examples/{example3.rb → example3_parallax.rb} +0 -0
- data/examples/{example4.rb → example4_gamestates.rb} +0 -0
- data/examples/{example5.rb → example5_gamestates_in_pure_gosu.rb} +0 -0
- data/examples/{example6.rb → example6_transitional_game_state.rb} +0 -0
- data/examples/{example7.rb → example7_gfx_helpers.rb} +0 -0
- data/examples/{example8.rb → example8_traits.rb} +0 -0
- data/examples/{example9.rb → example9_collision_detection.rb} +0 -0
- data/examples/media/Star.png +0 -0
- data/examples/media/Starfighter.bmp +0 -0
- data/lib/chingu.rb +1 -1
- data/lib/chingu/animation.rb +5 -2
- data/lib/chingu/game_object.rb +3 -4
- data/lib/chingu/traits/velocity.rb +13 -2
- metadata +50 -35
data/.gitignore
ADDED
data/README.rdoc
CHANGED
@@ -543,13 +543,20 @@ You can also scale the calculated rect with has_trait-options:
|
|
543
543
|
# This would return a rect slightly smaller then the image.
|
544
544
|
# Make player think he's better @ dodging bullets then he really is ;)
|
545
545
|
has_trait :bounding_box, :scale => 0.80
|
546
|
+
|
547
|
+
# Make the bounding box bigger then the image
|
548
|
+
# :debug => true shows the actual box in red on the screen
|
549
|
+
has_trait :bounding_box, :scale => 1.5, :debug => true
|
546
550
|
|
547
551
|
==== Trait "bounding_circle"
|
548
552
|
Adds accessor 'radius', which returns a Fixnum based on current image size,factor_x and factor_y
|
549
553
|
You can also scale the calculated radius with has_trait-options:
|
550
554
|
|
551
555
|
# This would return a radius slightly bigger then what initialize was calculated
|
552
|
-
has_trait :
|
556
|
+
has_trait :bounding_circle, :scale => 1.10
|
557
|
+
|
558
|
+
# :debug => true shows the actual circle in red on the screen
|
559
|
+
has_trait :bounding_circle, :debug => true
|
553
560
|
|
554
561
|
==== Trait "effect"
|
555
562
|
Adds accessors rotation_rate, fade_rate and scale_rate to game object.
|
@@ -605,9 +612,9 @@ You also have:
|
|
605
612
|
Song["intromusic.ogg"]
|
606
613
|
|
607
614
|
The default settings are like this:
|
608
|
-
Image["image.png"] -- searches directories ".", "images", "gfx" and "media"
|
609
|
-
Sample["sample.wav"] -- searches directories ".", "sounds", "sfx" and "media"
|
610
|
-
Song["song.ogg"] -- searches directories ".", "songs", "sounds", "sfx" and "media"
|
615
|
+
Image["image.png"] -- searches directories ".", "images", "gfx" and "media"
|
616
|
+
Sample["sample.wav"] -- searches directories ".", "sounds", "sfx" and "media"
|
617
|
+
Song["song.ogg"] -- searches directories ".", "songs", "sounds", "sfx" and "media"
|
611
618
|
|
612
619
|
Add your own searchpaths like this:
|
613
620
|
Gosu::Image.autoload_dirs << File.join(ROOT, "gfx")
|
data/Rakefile
CHANGED
@@ -1,35 +1,22 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'hoe'
|
3
2
|
require File.dirname(__FILE__) + '/lib/chingu'
|
4
|
-
|
5
3
|
include Chingu
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
5
|
+
begin
|
6
|
+
require 'jeweler'
|
7
|
+
Jeweler::Tasks.new do |gemspec|
|
8
|
+
gemspec.name = "chingu"
|
9
|
+
gemspec.summary = "OpenGL accelerated 2D game framework for Ruby"
|
10
|
+
gemspec.description = "OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++) which provides all the core functionality. Chingu adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and stackable game logic."
|
11
|
+
gemspec.email = "ippa@rubylicio.us"
|
12
|
+
gemspec.homepage = "http://github.com/ippa/chingu"
|
13
|
+
gemspec.authors = ["ippa"]
|
14
|
+
gemspec.rubyforge_project = "chingu"
|
15
|
+
gemspec.version = Chingu::VERSION
|
16
|
+
|
17
|
+
gemspec.add_dependency 'gosu', '>= 0.7.15'
|
18
|
+
end
|
19
|
+
Jeweler::GemcutterTasks.new
|
20
|
+
rescue LoadError
|
21
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
19
22
|
end
|
20
|
-
|
21
|
-
|
22
|
-
#begin
|
23
|
-
# require 'jeweler'
|
24
|
-
# Jeweler::Tasks.new do |gemspec|
|
25
|
-
# gemspec.name = "chingu"
|
26
|
-
# gemspec.summary = "Game framework built on top of the OpenGL accelerated game lib Gosu"
|
27
|
-
# gemspec.description = "Game framework built on top of the OpenGL accelerated game lib Gosu"
|
28
|
-
# gemspec.email = "ippa@rubylicio.us"
|
29
|
-
# gemspec.homepage = "http://github.com/ippa/chingu"
|
30
|
-
# gemspec.authors = ["ippa"]
|
31
|
-
# gemspec.rubyforge_project = "chingu"
|
32
|
-
# end
|
33
|
-
#rescue LoadError
|
34
|
-
# puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
35
|
-
#end
|
data/chingu.gemspec
CHANGED
@@ -1,35 +1,167 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
s.
|
8
|
-
s.
|
9
|
-
|
10
|
-
s.
|
11
|
-
|
12
|
-
|
13
|
-
s.
|
14
|
-
s.
|
15
|
-
s.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
s.
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{chingu}
|
8
|
+
s.version = "0.6.8"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["ippa"]
|
12
|
+
s.date = %q{2009-12-27}
|
13
|
+
s.description = %q{OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++) which provides all the core functionality. Chingu adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and stackable game logic.}
|
14
|
+
s.email = %q{ippa@rubylicio.us}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"History.txt",
|
22
|
+
"LICENSE",
|
23
|
+
"Manifest.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"benchmarks/README.txt",
|
27
|
+
"benchmarks/benchmark.rb",
|
28
|
+
"benchmarks/benchmark3.rb",
|
29
|
+
"benchmarks/benchmark4.rb",
|
30
|
+
"benchmarks/benchmark5.rb",
|
31
|
+
"benchmarks/benchmark6.rb",
|
32
|
+
"benchmarks/meta_benchmark.rb",
|
33
|
+
"benchmarks/meta_benchmark2.rb",
|
34
|
+
"chingu.gemspec",
|
35
|
+
"examples/example10_traits_retrofy.rb",
|
36
|
+
"examples/example11_animation.rb",
|
37
|
+
"examples/example12_trait_timer.rb",
|
38
|
+
"examples/example13_high_scores.rb",
|
39
|
+
"examples/example14_bounding_box_circle.rb",
|
40
|
+
"examples/example15_trait_timer2.rb",
|
41
|
+
"examples/example16_online_high_scores.rb",
|
42
|
+
"examples/example17_gosu_tutorial.rb",
|
43
|
+
"examples/example1_basics.rb",
|
44
|
+
"examples/example2_gamestate_basics.rb",
|
45
|
+
"examples/example3_parallax.rb",
|
46
|
+
"examples/example4_gamestates.rb",
|
47
|
+
"examples/example5_gamestates_in_pure_gosu.rb",
|
48
|
+
"examples/example6_transitional_game_state.rb",
|
49
|
+
"examples/example7_gfx_helpers.rb",
|
50
|
+
"examples/example8_traits.rb",
|
51
|
+
"examples/example9_collision_detection.rb",
|
52
|
+
"examples/game1.rb",
|
53
|
+
"examples/high_score_list.yml",
|
54
|
+
"examples/media/Parallax-scroll-example-layer-0.png",
|
55
|
+
"examples/media/Parallax-scroll-example-layer-1.png",
|
56
|
+
"examples/media/Parallax-scroll-example-layer-2.png",
|
57
|
+
"examples/media/Parallax-scroll-example-layer-3.png",
|
58
|
+
"examples/media/Star.png",
|
59
|
+
"examples/media/Starfighter.bmp",
|
60
|
+
"examples/media/background1.png",
|
61
|
+
"examples/media/bullet.png",
|
62
|
+
"examples/media/bullet_hit.wav",
|
63
|
+
"examples/media/circle.png",
|
64
|
+
"examples/media/city1.csv",
|
65
|
+
"examples/media/city1.png",
|
66
|
+
"examples/media/city2.png",
|
67
|
+
"examples/media/droid.bmp",
|
68
|
+
"examples/media/enemy_bullet.png",
|
69
|
+
"examples/media/explosion.wav",
|
70
|
+
"examples/media/fire_bullet.png",
|
71
|
+
"examples/media/fireball.png",
|
72
|
+
"examples/media/laser.wav",
|
73
|
+
"examples/media/particle.png",
|
74
|
+
"examples/media/plane.csv",
|
75
|
+
"examples/media/plane.png",
|
76
|
+
"examples/media/rect.png",
|
77
|
+
"examples/media/ruby.png",
|
78
|
+
"examples/media/saucer.csv",
|
79
|
+
"examples/media/saucer.gal",
|
80
|
+
"examples/media/saucer.png",
|
81
|
+
"examples/media/spaceship.png",
|
82
|
+
"examples/media/stickfigure.bmp",
|
83
|
+
"examples/media/stickfigure.png",
|
84
|
+
"examples/media/video_games.png",
|
85
|
+
"examples/media/wood.png",
|
86
|
+
"lib/chingu.rb",
|
87
|
+
"lib/chingu/animation.rb",
|
88
|
+
"lib/chingu/assets.rb",
|
89
|
+
"lib/chingu/basic_game_object.rb",
|
90
|
+
"lib/chingu/core_ext/array.rb",
|
91
|
+
"lib/chingu/fpscounter.rb",
|
92
|
+
"lib/chingu/game_object.rb",
|
93
|
+
"lib/chingu/game_object_list.rb",
|
94
|
+
"lib/chingu/game_state.rb",
|
95
|
+
"lib/chingu/game_state_manager.rb",
|
96
|
+
"lib/chingu/game_states/debug.rb",
|
97
|
+
"lib/chingu/game_states/edit.rb",
|
98
|
+
"lib/chingu/game_states/fade_to.rb",
|
99
|
+
"lib/chingu/game_states/pause.rb",
|
100
|
+
"lib/chingu/gosu_ext/image.rb",
|
101
|
+
"lib/chingu/helpers/class_inheritable_accessor.rb",
|
102
|
+
"lib/chingu/helpers/game_object.rb",
|
103
|
+
"lib/chingu/helpers/game_state.rb",
|
104
|
+
"lib/chingu/helpers/gfx.rb",
|
105
|
+
"lib/chingu/helpers/input_client.rb",
|
106
|
+
"lib/chingu/helpers/input_dispatcher.rb",
|
107
|
+
"lib/chingu/helpers/rotation_center.rb",
|
108
|
+
"lib/chingu/high_score_list.rb",
|
109
|
+
"lib/chingu/inflector.rb",
|
110
|
+
"lib/chingu/input.rb",
|
111
|
+
"lib/chingu/named_resource.rb",
|
112
|
+
"lib/chingu/online_high_score_list.rb",
|
113
|
+
"lib/chingu/parallax.rb",
|
114
|
+
"lib/chingu/particle.rb",
|
115
|
+
"lib/chingu/rect.rb",
|
116
|
+
"lib/chingu/require_all.rb",
|
117
|
+
"lib/chingu/text.rb",
|
118
|
+
"lib/chingu/traits/bounding_box.rb",
|
119
|
+
"lib/chingu/traits/bounding_circle.rb",
|
120
|
+
"lib/chingu/traits/collision_detection.rb",
|
121
|
+
"lib/chingu/traits/effect.rb",
|
122
|
+
"lib/chingu/traits/retrofy.rb",
|
123
|
+
"lib/chingu/traits/timer.rb",
|
124
|
+
"lib/chingu/traits/velocity.rb",
|
125
|
+
"lib/chingu/window.rb"
|
126
|
+
]
|
127
|
+
s.homepage = %q{http://github.com/ippa/chingu}
|
128
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
129
|
+
s.require_paths = ["lib"]
|
130
|
+
s.rubyforge_project = %q{chingu}
|
131
|
+
s.rubygems_version = %q{1.3.5}
|
132
|
+
s.summary = %q{OpenGL accelerated 2D game framework for Ruby}
|
133
|
+
s.test_files = [
|
134
|
+
"examples/example10_traits_retrofy.rb",
|
135
|
+
"examples/example11_animation.rb",
|
136
|
+
"examples/example12_trait_timer.rb",
|
137
|
+
"examples/example13_high_scores.rb",
|
138
|
+
"examples/example14_bounding_box_circle.rb",
|
139
|
+
"examples/example15_trait_timer2.rb",
|
140
|
+
"examples/example16_online_high_scores.rb",
|
141
|
+
"examples/example17_gosu_tutorial.rb",
|
142
|
+
"examples/example1_basics.rb",
|
143
|
+
"examples/example2_gamestate_basics.rb",
|
144
|
+
"examples/example3_parallax.rb",
|
145
|
+
"examples/example4_gamestates.rb",
|
146
|
+
"examples/example5_gamestates_in_pure_gosu.rb",
|
147
|
+
"examples/example6_transitional_game_state.rb",
|
148
|
+
"examples/example7_gfx_helpers.rb",
|
149
|
+
"examples/example8_traits.rb",
|
150
|
+
"examples/example9_collision_detection.rb",
|
151
|
+
"examples/game1.rb"
|
152
|
+
]
|
153
|
+
|
154
|
+
if s.respond_to? :specification_version then
|
155
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
156
|
+
s.specification_version = 3
|
157
|
+
|
158
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
159
|
+
s.add_runtime_dependency(%q<gosu>, [">= 0.7.15"])
|
160
|
+
else
|
161
|
+
s.add_dependency(%q<gosu>, [">= 0.7.15"])
|
162
|
+
end
|
163
|
+
else
|
164
|
+
s.add_dependency(%q<gosu>, [">= 0.7.15"])
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require File.join(File.dirname($0), "..", "lib", "chingu")
|
3
|
+
include Gosu
|
4
|
+
include Chingu
|
5
|
+
|
6
|
+
# Set to true to see bounding circles used for collision detection
|
7
|
+
DEBUG = false
|
8
|
+
|
9
|
+
class Game < Chingu::Window
|
10
|
+
def initialize
|
11
|
+
super(640,400)
|
12
|
+
self.input = {:esc => :exit}
|
13
|
+
|
14
|
+
@player = Player.create(:zorder => 2, :x=>320, :y=>240)
|
15
|
+
@score = 0
|
16
|
+
@score_text = Text.create("Score: #{@score}", :x => 10, :y => 10, :zorder => 55, :size=>20)
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
super
|
21
|
+
|
22
|
+
if rand(100) < 4 && Star.all.size < 25
|
23
|
+
Star.create
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Collide @player with all instances of class Star
|
28
|
+
#
|
29
|
+
@player.each_collision(Star) do |player, star|
|
30
|
+
star.destroy
|
31
|
+
@score+=10
|
32
|
+
end
|
33
|
+
|
34
|
+
@score_text.text = "Score: #{@score}"
|
35
|
+
self.caption = "Chingu Game - " + @score_text.text
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class Player < GameObject
|
40
|
+
has_trait :bounding_circle, :debug => DEBUG
|
41
|
+
has_traits :collision_detection, :effect, :velocity
|
42
|
+
|
43
|
+
def initialize(options={})
|
44
|
+
super(options)
|
45
|
+
@image = Image["Starfighter.bmp"]
|
46
|
+
self.input = {:holding_right=>:turn_right, :holding_left=>:turn_left, :holding_up=>:accelerate}
|
47
|
+
self.max_velocity = 10
|
48
|
+
end
|
49
|
+
|
50
|
+
def accelerate
|
51
|
+
self.velocity_x = Gosu::offset_x(self.angle, 0.5)*self.max_velocity
|
52
|
+
self.velocity_y = Gosu::offset_y(self.angle, 0.5)*self.max_velocity
|
53
|
+
end
|
54
|
+
|
55
|
+
def turn_right
|
56
|
+
# The same can be achieved without trait 'effect' as: self.angle += 4.5
|
57
|
+
rotate(4.5)
|
58
|
+
end
|
59
|
+
|
60
|
+
def turn_left
|
61
|
+
# The same can be achieved without trait 'effect' as: self.angle -= 4.5
|
62
|
+
rotate(-4.5)
|
63
|
+
end
|
64
|
+
|
65
|
+
def update
|
66
|
+
self.velocity_x *= 0.95 # dampen the movement
|
67
|
+
self.velocity_y *= 0.95
|
68
|
+
|
69
|
+
@x %= $window.width # wrap around the screen
|
70
|
+
@y %= $window.height
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class Star < GameObject
|
75
|
+
has_trait :bounding_circle, :debug => DEBUG
|
76
|
+
has_trait :collision_detection
|
77
|
+
|
78
|
+
def initialize(options={})
|
79
|
+
super(:zorder=>1)
|
80
|
+
@animation = Chingu::Animation.new(:file => media_path("Star.png"), :size => 25)
|
81
|
+
@image = @animation.next
|
82
|
+
self.color = Gosu::Color.new(0xff000000)
|
83
|
+
self.color.red = rand(255 - 40) + 40
|
84
|
+
self.color.green = rand(255 - 40) + 40
|
85
|
+
self.color.blue = rand(255 - 40) + 40
|
86
|
+
self.x =rand * 640
|
87
|
+
self.y =rand * 480
|
88
|
+
|
89
|
+
#
|
90
|
+
# A cached bounding circle will not adapt to changes in size, but it will follow objects X / Y
|
91
|
+
# Same is true for "cache_bounding_box"
|
92
|
+
#
|
93
|
+
cache_bounding_circle
|
94
|
+
end
|
95
|
+
|
96
|
+
def update
|
97
|
+
# Move the animation forward by fetching the next frame and putting it into @image
|
98
|
+
# @image is drawn by default by GameObject#draw
|
99
|
+
@image = @animation.next
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
Game.new.show
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
Binary file
|
Binary file
|
data/lib/chingu.rb
CHANGED
data/lib/chingu/animation.rb
CHANGED
@@ -20,7 +20,7 @@ module Chingu
|
|
20
20
|
# - file: Tile-file to cut up animation frames from. Could be a full path or just a name -- then it will look for media_path(file)
|
21
21
|
# - width: width of each frame in the tileanimation
|
22
22
|
# - height: width of each frame in the tileanimation
|
23
|
-
# - size: [
|
23
|
+
# - size: [width, height]-Array or just one fixnum which will spez both height and width
|
24
24
|
# - delay: milliseconds between each frame
|
25
25
|
# - step: [steps] move animation forward [steps] frames each time we call #next
|
26
26
|
#
|
@@ -37,9 +37,12 @@ module Chingu
|
|
37
37
|
@step = options[:step] || 1
|
38
38
|
@dt = 0
|
39
39
|
|
40
|
-
if options[:size]
|
40
|
+
if options[:size] && options[:size].is_a?(Array)
|
41
41
|
@width = options[:size][0]
|
42
42
|
@height = options[:size][1]
|
43
|
+
elsif options[:size]
|
44
|
+
@width = options[:size]
|
45
|
+
@height = options[:size]
|
43
46
|
end
|
44
47
|
|
45
48
|
@file = media_path(@file) unless File.exist?(@file)
|
data/lib/chingu/game_object.rb
CHANGED
@@ -51,13 +51,12 @@ module Chingu
|
|
51
51
|
@y = options[:y] || 0
|
52
52
|
@angle = options[:angle] || 0
|
53
53
|
|
54
|
-
self.factor = options[:factor] || 1.0
|
54
|
+
self.factor = options[:factor] || options[:scale] || 1.0
|
55
55
|
@factor_x = options[:factor_x] if options[:factor_x]
|
56
56
|
@factor_y = options[:factor_y] if options[:factor_y]
|
57
57
|
|
58
58
|
self.center = options[:center] || 0.5
|
59
59
|
|
60
|
-
|
61
60
|
@rotation_center = options[:rotation_center]
|
62
61
|
self.rotation_center(options[:rotation_center]) if options[:rotation_center]
|
63
62
|
|
@@ -74,8 +73,6 @@ module Chingu
|
|
74
73
|
|
75
74
|
@mode = options[:mode] || :default # :additive is also available.
|
76
75
|
@zorder = options[:zorder] || 100
|
77
|
-
|
78
|
-
#setup_trait(options) if self.respond_to?(:setup_trait)
|
79
76
|
end
|
80
77
|
|
81
78
|
# Quick way of setting both factor_x and factor_y
|
@@ -83,6 +80,8 @@ module Chingu
|
|
83
80
|
@factor = factor
|
84
81
|
@factor_x = @factor_y = factor
|
85
82
|
end
|
83
|
+
alias scale= factor=
|
84
|
+
alias scale factor
|
86
85
|
|
87
86
|
# Quick way of setting both center_x and center_y
|
88
87
|
def center=(center)
|
@@ -31,6 +31,12 @@ module Chingu
|
|
31
31
|
attr_accessor :velocity_x, :velocity_y, :acceleration_x, :acceleration_y, :max_velocity
|
32
32
|
attr_reader :previous_x, :previous_y
|
33
33
|
|
34
|
+
module ClassMethods
|
35
|
+
def initialize_trait(options = {})
|
36
|
+
trait_options[:velocity] = {:apply => true}.merge(options)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
34
40
|
def setup_trait(options)
|
35
41
|
@velocity_options = {:debug => false}.merge(options)
|
36
42
|
|
@@ -52,8 +58,13 @@ module Chingu
|
|
52
58
|
@previous_y = @y
|
53
59
|
@previous_x = @x
|
54
60
|
|
55
|
-
|
56
|
-
|
61
|
+
#
|
62
|
+
# if option :apply is false, just calculate velocities, don't apply them to x/y
|
63
|
+
#
|
64
|
+
if trait_options[:velocity][:apply]
|
65
|
+
self.y += @velocity_y
|
66
|
+
self.x += @velocity_x
|
67
|
+
end
|
57
68
|
super
|
58
69
|
end
|
59
70
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chingu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ippa
|
@@ -9,34 +9,30 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-27 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
type: :
|
16
|
+
name: gosu
|
17
|
+
type: :runtime
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
23
|
+
version: 0.7.15
|
24
24
|
version:
|
25
|
-
description:
|
26
|
-
|
27
|
-
Builds on the awesome Gosu (Ruby/C++) which provides all the core functionality.
|
28
|
-
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.
|
29
|
-
email:
|
30
|
-
- ippa@rubylicio.us
|
25
|
+
description: OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++) which provides all the core functionality. Chingu adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and stackable game logic.
|
26
|
+
email: ippa@rubylicio.us
|
31
27
|
executables: []
|
32
28
|
|
33
29
|
extensions: []
|
34
30
|
|
35
31
|
extra_rdoc_files:
|
36
|
-
-
|
37
|
-
-
|
38
|
-
- benchmarks/README.txt
|
32
|
+
- LICENSE
|
33
|
+
- README.rdoc
|
39
34
|
files:
|
35
|
+
- .gitignore
|
40
36
|
- History.txt
|
41
37
|
- LICENSE
|
42
38
|
- Manifest.txt
|
@@ -51,28 +47,31 @@ files:
|
|
51
47
|
- benchmarks/meta_benchmark.rb
|
52
48
|
- benchmarks/meta_benchmark2.rb
|
53
49
|
- chingu.gemspec
|
54
|
-
- examples/
|
55
|
-
- examples/
|
56
|
-
- examples/
|
57
|
-
- examples/
|
58
|
-
- examples/
|
59
|
-
- examples/
|
60
|
-
- examples/
|
61
|
-
- examples/
|
62
|
-
- examples/
|
63
|
-
- examples/
|
64
|
-
- examples/
|
65
|
-
- examples/
|
66
|
-
- examples/
|
67
|
-
- examples/
|
68
|
-
- examples/
|
69
|
-
- examples/
|
50
|
+
- examples/example10_traits_retrofy.rb
|
51
|
+
- examples/example11_animation.rb
|
52
|
+
- examples/example12_trait_timer.rb
|
53
|
+
- examples/example13_high_scores.rb
|
54
|
+
- examples/example14_bounding_box_circle.rb
|
55
|
+
- examples/example15_trait_timer2.rb
|
56
|
+
- examples/example16_online_high_scores.rb
|
57
|
+
- examples/example17_gosu_tutorial.rb
|
58
|
+
- examples/example1_basics.rb
|
59
|
+
- examples/example2_gamestate_basics.rb
|
60
|
+
- examples/example3_parallax.rb
|
61
|
+
- examples/example4_gamestates.rb
|
62
|
+
- examples/example5_gamestates_in_pure_gosu.rb
|
63
|
+
- examples/example6_transitional_game_state.rb
|
64
|
+
- examples/example7_gfx_helpers.rb
|
65
|
+
- examples/example8_traits.rb
|
66
|
+
- examples/example9_collision_detection.rb
|
70
67
|
- examples/game1.rb
|
71
68
|
- examples/high_score_list.yml
|
72
69
|
- examples/media/Parallax-scroll-example-layer-0.png
|
73
70
|
- examples/media/Parallax-scroll-example-layer-1.png
|
74
71
|
- examples/media/Parallax-scroll-example-layer-2.png
|
75
72
|
- examples/media/Parallax-scroll-example-layer-3.png
|
73
|
+
- examples/media/Star.png
|
74
|
+
- examples/media/Starfighter.bmp
|
76
75
|
- examples/media/background1.png
|
77
76
|
- examples/media/bullet.png
|
78
77
|
- examples/media/bullet_hit.wav
|
@@ -140,13 +139,12 @@ files:
|
|
140
139
|
- lib/chingu/traits/velocity.rb
|
141
140
|
- lib/chingu/window.rb
|
142
141
|
has_rdoc: true
|
143
|
-
homepage: http://github.com/ippa/chingu
|
142
|
+
homepage: http://github.com/ippa/chingu
|
144
143
|
licenses: []
|
145
144
|
|
146
145
|
post_install_message:
|
147
146
|
rdoc_options:
|
148
|
-
- --
|
149
|
-
- README.rdoc
|
147
|
+
- --charset=UTF-8
|
150
148
|
require_paths:
|
151
149
|
- lib
|
152
150
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -168,5 +166,22 @@ rubygems_version: 1.3.5
|
|
168
166
|
signing_key:
|
169
167
|
specification_version: 3
|
170
168
|
summary: OpenGL accelerated 2D game framework for Ruby
|
171
|
-
test_files:
|
172
|
-
|
169
|
+
test_files:
|
170
|
+
- examples/example10_traits_retrofy.rb
|
171
|
+
- examples/example11_animation.rb
|
172
|
+
- examples/example12_trait_timer.rb
|
173
|
+
- examples/example13_high_scores.rb
|
174
|
+
- examples/example14_bounding_box_circle.rb
|
175
|
+
- examples/example15_trait_timer2.rb
|
176
|
+
- examples/example16_online_high_scores.rb
|
177
|
+
- examples/example17_gosu_tutorial.rb
|
178
|
+
- examples/example1_basics.rb
|
179
|
+
- examples/example2_gamestate_basics.rb
|
180
|
+
- examples/example3_parallax.rb
|
181
|
+
- examples/example4_gamestates.rb
|
182
|
+
- examples/example5_gamestates_in_pure_gosu.rb
|
183
|
+
- examples/example6_transitional_game_state.rb
|
184
|
+
- examples/example7_gfx_helpers.rb
|
185
|
+
- examples/example8_traits.rb
|
186
|
+
- examples/example9_collision_detection.rb
|
187
|
+
- examples/game1.rb
|