chingu 0.5.9.4 → 0.6

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.
@@ -42,14 +42,11 @@ module Chingu
42
42
 
43
43
  module Effect
44
44
  attr_accessor :rotation_rate, :fade_rate, :scale_rate
45
-
45
+
46
46
  #
47
47
  # Setup
48
48
  #
49
- def setup_trait(options)
50
- @effect_options = {:debug => false}.merge(options)
51
- puts "Effect#setup" if @effect_options[:debug]
52
-
49
+ def setup_trait(options)
53
50
  @rotation_rate = options[:rotation_rate] || nil
54
51
  @scale_rate = options[:scale_rate] || nil
55
52
  @fade_rate = options[:fade_rate] || nil
@@ -60,9 +57,7 @@ module Chingu
60
57
  super
61
58
  end
62
59
 
63
- def update_trait
64
- puts "Effect#update" if @effect_options[:debug]
65
-
60
+ def update_trait
66
61
  rotate(@rotation_rate) if @rotation_rate
67
62
  fade(@fade_rate) if @fade_rate
68
63
  scale(@scale_rate) if @scale_rate
@@ -0,0 +1,55 @@
1
+ #--
2
+ #
3
+ # Chingu -- OpenGL accelerated 2D game framework for Ruby
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
+ module Chingu
23
+ module Traits
24
+ #
25
+ # Providing a bounding_box and keeps it up to date by reading:
26
+ # image, factor_x, factor_y
27
+ #
28
+ # ...only makes sense with rotation_center = :center
29
+ #
30
+ module Radius
31
+
32
+ module ClassMethods
33
+ def initialize_trait(options = {})
34
+ @trait_options[:radius] = options
35
+ end
36
+ end
37
+
38
+ def radius
39
+ width = self.image.width * self.factor_x.abs
40
+ height = self.image.height * self.factor_y.abs
41
+ radius = (width + height) / 2
42
+ radius = radius * trait_options[:radius][:scale] if trait_options[:radius][:scale]
43
+ return radius
44
+ end
45
+
46
+ def draw_trait
47
+ if trait_options[:radius][:debug]
48
+ $window.draw_circle(self.x, self.y, self.radius, Chingu::DEBUG_COLOR)
49
+ end
50
+ super
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -23,38 +23,37 @@ module Chingu
23
23
  module Traits
24
24
  #
25
25
  # A chingu trait providing easier handling of the "retrofy" effect (non-blurry zoom)
26
- # Aims to help out when using zoom-factor to create a retrofeeling with big pixels.
27
- # Provides screen_x and screen_y which takes the zoom into account
26
+ # Aims to help out when using scaling with "factor" to create a retrofeeling with big pixels.
27
+ # Provides screen_x and screen_y which takes the scaling into account
28
28
  # Also provides new code for draw() which uses screen_x / screen_y instead of x / y
29
29
  #
30
30
  module Retrofy
31
-
31
+
32
32
  def setup_trait(options)
33
33
  @retrofy_options = {:debug => false}.merge(options)
34
-
35
34
  super
36
35
  end
37
36
 
38
37
  def screen_width
39
- (@image.width * self.factor).to_i
38
+ (self.image.width * self.factor).to_i
40
39
  end
41
40
 
42
41
  def screen_height
43
- (@image.heigt * self.factor).to_i
42
+ (self.image.heigt * self.factor).to_i
44
43
  end
45
44
 
46
45
  def screen_x
47
- (@x * self.factor).to_i
46
+ (self.x * self.factor).to_i
48
47
  end
49
48
 
50
49
  def screen_y
51
- (@y * self.factor).to_i
50
+ (self.y * self.factor).to_i
52
51
  end
53
-
52
+
54
53
  # Returns true if object is inside the game window, false if outside
55
54
  # this special version takes @factor into consideration
56
55
  def inside_window?
57
- @x >= 0 && @x <= $window.width/self.factor && @y >= 0 && @y <= $window.height/self.factor
56
+ self.x >= 0 && self.x <= $window.width/self.factor && self.y >= 0 && self.y <= $window.height/self.factor
58
57
  end
59
58
 
60
59
  # Returns true object is outside the game window
@@ -66,7 +65,6 @@ module Chingu
66
65
  def draw
67
66
  @image.draw_rot(self.screen_x, self.screen_y, @zorder, @angle, @center_x, @center_y, @factor_x, @factor_y, @color, @mode)
68
67
  end
69
-
70
68
  end
71
69
  end
72
70
  end
@@ -31,10 +31,9 @@ module Chingu
31
31
  # All the above can be combined with a 'then { do_something }'. For example, a classic shmup damage effect:
32
32
  # during(100) { @color.alpha = 100 }.then { @color.alpha = 255 }
33
33
  #
34
- module Timer
35
- def setup_trait(options)
36
- @timer_options = {:debug => false}.merge(options)
37
-
34
+ module Timer
35
+
36
+ def setup_trait(options)
38
37
  #
39
38
  # Timers are saved as an array of arrays where each entry contains:
40
39
  # [start_time, end_time (or nil if one-shot), &block]
@@ -27,15 +27,8 @@ module Chingu
27
27
  module Velocity
28
28
  attr_accessor :velocity_x, :velocity_y, :acceleration_x, :acceleration_y, :max_velocity
29
29
 
30
- #def self.initialize_trait(options)
31
- # @velocity_options = {:debug => false}.merge(options)
32
- # puts "Velocity#initialize" if @velocity_options[:debug]
33
- # super
34
- #end
35
-
36
30
  def setup_trait(options)
37
31
  @velocity_options = {:debug => false}.merge(options)
38
- puts "Velocity#setup" if @velocity_options[:debug]
39
32
 
40
33
  @velocity_x = options[:velocity_x] || 0
41
34
  @velocity_y = options[:velocity_y] || 0
@@ -48,13 +41,11 @@ module Chingu
48
41
  #
49
42
  # Modifies X & Y of parent
50
43
  #
51
- def update_trait
52
- puts "Velocity#update" if @velocity_options[:debug]
53
-
44
+ def update_trait
54
45
  @velocity_y += @acceleration_y if (@velocity_y + @acceleration_y).abs < @max_velocity
55
46
  @velocity_x += @acceleration_x if (@velocity_x + @acceleration_x).abs < @max_velocity
56
- @y += @velocity_y
57
- @x += @velocity_x
47
+ self.y += @velocity_y
48
+ self.x += @velocity_x
58
49
  super
59
50
  end
60
51
 
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.5.9.4
4
+ version: "0.6"
5
5
  platform: ruby
6
6
  authors:
7
7
  - ippa
@@ -30,7 +30,7 @@ cert_chain:
30
30
  hxtMlw==
31
31
  -----END CERTIFICATE-----
32
32
 
33
- date: 2009-11-16 00:00:00 +01:00
33
+ date: 2009-11-21 00:00:00 +01:00
34
34
  default_executable:
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
@@ -77,6 +77,7 @@ files:
77
77
  - examples/example11.rb
78
78
  - examples/example12.rb
79
79
  - examples/example13.rb
80
+ - examples/example14.rb
80
81
  - examples/example2.rb
81
82
  - examples/example3.rb
82
83
  - examples/example4.rb
@@ -143,8 +144,10 @@ files:
143
144
  - lib/chingu/rect.rb
144
145
  - lib/chingu/require_all.rb
145
146
  - lib/chingu/text.rb
147
+ - lib/chingu/traits/bounding_box.rb
146
148
  - lib/chingu/traits/collision_detection.rb
147
149
  - lib/chingu/traits/effect.rb
150
+ - lib/chingu/traits/radius.rb
148
151
  - lib/chingu/traits/retrofy.rb
149
152
  - lib/chingu/traits/timer.rb
150
153
  - lib/chingu/traits/velocity.rb
metadata.gz.sig CHANGED
Binary file