chingu 0.9rc1 → 0.9rc2

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.
@@ -26,6 +26,7 @@ There's also more complex examples, like a clone of Conways game of life (http:/
26
26
 
27
27
  == PROJECTS USING CHINGU
28
28
  Links to some of the projects using/depending on Chingu:
29
+ * https://github.com/Spooner/wrath (pixely 2-player action adventure in development)
29
30
  * http://ippa.se/games/unexpected_outcome.zip (LD#19 game compo entry by ippa)
30
31
  * https://bitbucket.org/philomory/ld19/ (LD#19 game compo entry by philomory)
31
32
  * https://github.com/Spooner/fidgit (GUI-lib )
@@ -110,6 +111,8 @@ An "@image = @animation.next" in your Player#update is usually enough to get you
110
111
 
111
112
  === Chingu::Parallax
112
113
  A class for easy parallaxscrolling. Add layers with different damping, move the camera to generate a new snapshot. See example3.rb for more.
114
+ NOTE: Doing Parallax.create when using a trait viewport will give bad results.
115
+ If you need parallax together with viewport do Parallax.new and then manually doing parallax.update/draw.
113
116
 
114
117
  === Chingu::HighScoreList
115
118
  A class to keep track of high scores, limit the list, automatic sorting on score, save/load to disc. See example13.rb for more.
@@ -478,6 +481,8 @@ Or Chingus shortcut:
478
481
 
479
482
  Chingus inputhandler will detect that Menu is a GameState-class, create a new instance and activate it with push_game_state().
480
483
 
484
+ GOTCHA: Currently you can't switch to a new game state from Within GameState#initialize() or GameState#setup()
485
+
481
486
  === Premade game states
482
487
  Chingu comes with some pre-made game states.
483
488
  A simple but usefull one is GameStates::Pause. Once pushed it will draw the previous game state but not update it --
@@ -747,6 +752,9 @@ This is great for scrolling games. You also have:
747
752
  viewport.lag = 0.95 # Set a lag-factor to use in combination with x_target / y_target
748
753
  viewport.x_target = 100 # This will move viewport towards X-coordinate 100, the speed is determined by the lag-parameter.
749
754
 
755
+ NOTE: Doing Parallax.create when using a trait viewport will give bad results.
756
+ If you need parallax together with viewport do Parallax.new and then manually doing parallax.update/draw.
757
+
750
758
  ==== Trait "collision_detection"
751
759
  Adds class and instance methods for basic collision detection.
752
760
 
@@ -861,6 +869,24 @@ It's not only that the second example is readable by ppl now even familiar with
861
869
  Set a new x or angle or color and it will instantly update on screen.
862
870
 
863
871
 
872
+ == DEPRECATIONS
873
+ Chingu (as all libraries) will sometimes break an old API. Naturally we try to not do this, but sometimes it's nessesary
874
+ to take the library forward. If your old game stops working with a new chingu it could depend on some of the following:
875
+
876
+ Listing game objects:
877
+ class Enemy < GameObject; end;
878
+ class Troll < Enemy; end;
879
+ class Witch < Enemy; end;
880
+
881
+ Chingu 0.7
882
+ Enemy.all # Will list objects created with Enemy.create, Troll.create, Witch.create
883
+
884
+ Chingu ~0.8+
885
+ Enemy.all # list only list objects created with Enemy.create
886
+
887
+ We gained a lot of speed breaking that API.
888
+
889
+
864
890
  == MISC / FAQ
865
891
  === How do I access my main-window easily?
866
892
  Chingu keeps a global variable, $window, which contains the Chingu::Window instance.
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ require 'psych'
2
3
  require File.dirname(__FILE__) + '/lib/chingu'
3
4
  include Chingu
4
5
 
@@ -14,7 +15,7 @@ begin
14
15
  gemspec.rubyforge_project = "chingu"
15
16
  gemspec.version = Chingu::VERSION
16
17
 
17
- gemspec.add_dependency 'gosu', '>= 0.7.27'
18
+ gemspec.add_dependency 'gosu', '>= 0.7.27.1'
18
19
  gemspec.add_dependency 'rest-client'
19
20
  gemspec.add_dependency 'crack'
20
21
  gemspec.add_development_dependency 'rspec', '>= 2.1.0'
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{chingu}
8
- s.version = "0.9rc1"
8
+ s.version = "0.9rc2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ippa"]
12
- s.date = %q{2011-02-20}
12
+ s.date = %q{2011-02-26}
13
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
14
  s.email = %q{ippa@rubylicio.us}
15
15
  s.extra_rdoc_files = [
@@ -199,6 +199,7 @@ Gem::Specification.new do |s|
199
199
  "spec/chingu/images/rect_20x20.png",
200
200
  "spec/chingu/inflector_spec.rb",
201
201
  "spec/chingu/input_spec.rb",
202
+ "spec/chingu/network_spec.rb",
202
203
  "spec/chingu/parallax_spec.rb",
203
204
  "spec/chingu/text_spec.rb",
204
205
  "spec/chingu/window_spec.rb",
@@ -208,7 +209,7 @@ Gem::Specification.new do |s|
208
209
  s.homepage = %q{http://github.com/ippa/chingu}
209
210
  s.require_paths = ["lib"]
210
211
  s.rubyforge_project = %q{chingu}
211
- s.rubygems_version = %q{1.3.7}
212
+ s.rubygems_version = %q{1.5.2}
212
213
  s.summary = %q{OpenGL accelerated 2D game framework for Ruby}
213
214
  s.test_files = [
214
215
  "examples/example10_traits_retrofy.rb",
@@ -257,6 +258,7 @@ Gem::Specification.new do |s|
257
258
  "spec/chingu/helpers/options_setter_spec.rb",
258
259
  "spec/chingu/inflector_spec.rb",
259
260
  "spec/chingu/input_spec.rb",
261
+ "spec/chingu/network_spec.rb",
260
262
  "spec/chingu/parallax_spec.rb",
261
263
  "spec/chingu/text_spec.rb",
262
264
  "spec/chingu/window_spec.rb",
@@ -264,18 +266,17 @@ Gem::Specification.new do |s|
264
266
  ]
265
267
 
266
268
  if s.respond_to? :specification_version then
267
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
268
269
  s.specification_version = 3
269
270
 
270
271
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
271
- s.add_runtime_dependency(%q<gosu>, [">= 0.7.27"])
272
+ s.add_runtime_dependency(%q<gosu>, [">= 0.7.27.1"])
272
273
  s.add_runtime_dependency(%q<rest-client>, [">= 0"])
273
274
  s.add_runtime_dependency(%q<crack>, [">= 0"])
274
275
  s.add_development_dependency(%q<rspec>, [">= 2.1.0"])
275
276
  s.add_development_dependency(%q<watchr>, [">= 0"])
276
277
  s.add_development_dependency(%q<rcov>, [">= 0"])
277
278
  else
278
- s.add_dependency(%q<gosu>, [">= 0.7.27"])
279
+ s.add_dependency(%q<gosu>, [">= 0.7.27.1"])
279
280
  s.add_dependency(%q<rest-client>, [">= 0"])
280
281
  s.add_dependency(%q<crack>, [">= 0"])
281
282
  s.add_dependency(%q<rspec>, [">= 2.1.0"])
@@ -283,7 +284,7 @@ Gem::Specification.new do |s|
283
284
  s.add_dependency(%q<rcov>, [">= 0"])
284
285
  end
285
286
  else
286
- s.add_dependency(%q<gosu>, [">= 0.7.27"])
287
+ s.add_dependency(%q<gosu>, [">= 0.7.27.1"])
287
288
  s.add_dependency(%q<rest-client>, [">= 0"])
288
289
  s.add_dependency(%q<crack>, [">= 0"])
289
290
  s.add_dependency(%q<rspec>, [">= 2.1.0"])
@@ -39,7 +39,7 @@ require_all "#{CHINGU_ROOT}/chingu/async_tasks"
39
39
  require_all "#{CHINGU_ROOT}/chingu"
40
40
 
41
41
  module Chingu
42
- VERSION = "0.9rc1"
42
+ VERSION = "0.9rc2"
43
43
 
44
44
  DEBUG_COLOR = Gosu::Color.new(0xFFFF0000)
45
45
  DEBUG_ZORDER = 9999
@@ -1,33 +1,24 @@
1
1
  class Array
2
2
 
3
- def each_collision(*args)
4
- list = (self + args).uniq
5
- collide_pair = []
6
- list.each_with_index { |nr, i| self[i..size].collect { |nr2| collide_pair << [nr,nr2] } }
7
- collide_pair.each do |class1,class2|
8
- class1.each_collision(class2) do |object1, object2|
3
+ def each_collision(*klasses)
4
+ self.each do |object1|
5
+ object1.each_collision(*klasses) do |object1, object2|
9
6
  yield object1, object2
10
7
  end
11
8
  end
12
9
  end
13
10
 
14
- def each_bounding_circle_collision(*args)
15
- list = (self + args).uniq
16
- collide_pair = []
17
- list.each_with_index { |nr, i| self[i..size].collect { |nr2| collide_pair << [nr,nr2] } }
18
- collide_pair.each do |class1,class2|
19
- class1.each_bounding_circle_collision(class2) do |object1, object2|
11
+ def each_bounding_circle_collision(*klasses)
12
+ self.each do |object1|
13
+ object1.each_bounding_circle_collision(*klasses) do |object1, object2|
20
14
  yield object1, object2
21
15
  end
22
- end
16
+ end
23
17
  end
24
18
 
25
- def each_bounding_box_collision(*args)
26
- list = (self + args).uniq
27
- collide_pair = []
28
- list.each_with_index { |nr, i| self[i..size].collect { |nr2| collide_pair << [nr,nr2] } }
29
- collide_pair.each do |class1,class2|
30
- class1.each_bounding_box_collision(class2) do |object1, object2|
19
+ def each_bounding_box_collision(*klasses)
20
+ self.each do |object1|
21
+ object1.each_bounding_box_collision(*klasses) do |object1, object2|
31
22
  yield object1, object2
32
23
  end
33
24
  end
@@ -28,7 +28,7 @@ module Chingu
28
28
  # Uses nonblocking polling TCP and YAML to communicate.
29
29
  # If your game state inherits from NetworkClient you'll have the following methods available:
30
30
  #
31
- # connect(ip, port) # Start a blocking connection period, updates in $window.caption
31
+ # connect(ip, port) # Start a blocking connection period. only connect() uses previosly given ip:port
32
32
  # send_data(data) # Send raw data on the network, nonblocking
33
33
  # send_msg(whatever ruby data) # Will get YAML'd and sent to server
34
34
  # handle_incoming_data(max_size) # Nonblocking read of incoming server data
@@ -75,7 +75,9 @@ module Chingu
75
75
  def initialize(options = {})
76
76
  super
77
77
  @timeout = options[:timeout] || 4
78
- @debug = true
78
+ @debug = options[:debug]
79
+ @ip = options[:ip] || "0.0.0.0"
80
+ @port = options[:port] || 7778
79
81
 
80
82
  @socket = nil
81
83
  @latency = 0
@@ -96,16 +98,18 @@ module Chingu
96
98
 
97
99
  #
98
100
  # Connect to a given ip:port (the server)
99
- # Will timeout afte 4 seconds
101
+ # Connect is done in a blocking manner.
102
+ # Will timeout after 4 seconds
100
103
  #
101
- def connect(ip, port = 7778)
104
+ def connect(ip = nil, port = nil)
102
105
  return if @socket
103
- @ip = ip
104
- @port = port
106
+
107
+ @ip = ip if ip
108
+ @port = port if port
105
109
 
106
110
  begin
107
111
  status = Timeout::timeout(@timeout) do
108
- @socket = TCPSocket.new(ip, port)
112
+ @socket = TCPSocket.new(@ip, @port)
109
113
  @socket.setsockopt(Socket::IPPROTO_TCP,Socket::TCP_NODELAY,1)
110
114
  on_connect
111
115
  end
@@ -114,15 +118,21 @@ module Chingu
114
118
  rescue Timeout
115
119
  on_timeout
116
120
  end
121
+
122
+ return self
117
123
  end
118
124
 
125
+ #
126
+ # Called when connect() fails with connection refused (closed port)
127
+ #
119
128
  def on_connection_refused
120
- $window.caption = "Server: CONNECTION REFUSED"
121
129
  connect(@ip, @port)
122
130
  end
123
-
131
+
132
+ #
133
+ # Called when connect() recieves no initial answer from server
134
+ #
124
135
  def on_timeout
125
- $window.caption = "Server: CONNECTION TIMED OUT"
126
136
  connect(@ip, @port)
127
137
  end
128
138
 
@@ -130,14 +140,14 @@ module Chingu
130
140
  # on_connect will be called when client successfully makes a connection to server
131
141
  #
132
142
  def on_connect
133
- puts "[Connected to Server #{@ip}:#{@port}]" if @debug
143
+ puts "[Connected to Server #{@ip}:#{@port}]" if @debug
134
144
  end
135
145
 
136
146
  #
137
147
  # on_disconnect will be called when server disconnects client for whatever reason
138
148
  #
139
149
  def on_disconnect
140
- puts "[Disconnected from Server]" if @debug
150
+ puts "[Disconnected from Server]" if @debug
141
151
  end
142
152
 
143
153
  #
@@ -199,6 +209,8 @@ module Chingu
199
209
  def disconnect_from_server
200
210
  @socket.close
201
211
  end
212
+ alias close disconnect_from_server
213
+ alias stop disconnect_from_server
202
214
 
203
215
  end
204
216
  end
@@ -47,11 +47,7 @@ module Chingu
47
47
  #
48
48
  # Usage:
49
49
  # ServerState < Chingu::GameStates::NetworkServer
50
- # def initialize(options = {})
51
- # super # this is always needed!
52
- # connect_to_server(options[:ip], options[:port])
53
- # end
54
- #
50
+ # # incoming client/connection...
55
51
  # def on_connect(socket)
56
52
  # send_msg(:cmd => :ping, :timestamp => Gosu::milliseconds)
57
53
  # end
@@ -64,7 +60,7 @@ module Chingu
64
60
  # end
65
61
  # end
66
62
  #
67
- # push_game_state ServerState.new(:ip => "127.0.0.1", :port => 7778))
63
+ # push_game_state ServerState.new(:ip => "127.0.0.1", :port => 7778).start
68
64
  #
69
65
  # NetworkServer works mostly like NetworkClient with a few differences
70
66
  # - since a server handles many sockets (1 for each connected client) all callbacks first argument is 'socket'
@@ -78,7 +74,9 @@ module Chingu
78
74
  def initialize(options = {})
79
75
  super
80
76
 
81
- @debug = true
77
+ @ip = options[:ip] || "0.0.0.0"
78
+ @port = options[:port] || 7778
79
+ @debug = options[:debug]
82
80
  @socket = nil
83
81
  @sockets = []
84
82
  @buffered_output = YAML::Stream.new
@@ -88,20 +86,20 @@ module Chingu
88
86
  end
89
87
 
90
88
  #
91
- # Start server on ip 'ip' and port 'port'
89
+ # Start server
92
90
  #
93
- def start(ip = '0.0.0.0', port = 7778)
94
- @ip = ip
95
- @port = port
96
-
91
+ def start(ip=nil, port=nil)
92
+ @ip = ip if ip
93
+ @port = port if port
97
94
  begin
98
- @socket = TCPServer.new(ip, port)
95
+ @socket = TCPServer.new(@ip, @port)
99
96
  @socket.setsockopt(Socket::IPPROTO_TCP,Socket::TCP_NODELAY,1)
100
97
  on_start
101
-
102
98
  rescue
103
99
  on_start_error($!)
104
100
  end
101
+
102
+ return self
105
103
  end
106
104
 
107
105
  #
@@ -251,11 +249,13 @@ module Chingu
251
249
  # Stops server
252
250
  #
253
251
  def stop
252
+ return unless @socket
254
253
  begin
255
254
  @socket.close
256
255
  rescue Errno::ENOTCONN
257
256
  end
258
257
  end
258
+ alias close stop
259
259
 
260
260
  end
261
261
  end
@@ -37,12 +37,12 @@ module Chingu
37
37
  # @font_size = options.delete(:font_size) || 30
38
38
  @menu_items = options.delete(:menu_items)
39
39
  @x = options.delete(:x) || $window.width/2
40
- @y = options.delete(:y) || 100
40
+ @y = options.delete(:y) || 0
41
41
  @spacing = options.delete(:spacing) || 100
42
42
  @items = []
43
43
  @visible = true
44
44
 
45
- y = @spacing
45
+ y = @y
46
46
  menu_items.each do |key, value|
47
47
  item = if key.is_a? String
48
48
  Text.new(key, options.dup)
@@ -57,7 +57,7 @@ module Chingu
57
57
  item.options[:on_deselect] = method(:on_deselect)
58
58
  item.options[:action] = value
59
59
 
60
- item.rotation_center = :center_center
60
+ item.rotation_center = :center_top
61
61
  item.x = @x
62
62
  item.y = y
63
63
  y += item.height + @spacing
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ module Chingu
4
+ describe "Network" do
5
+
6
+ describe "Network Server" do
7
+
8
+ it "should open listening port on start()" do
9
+ @server = Chingu::GameStates::NetworkServer.new(:ip => "0.0.0.0", :port => 9999)
10
+ @server.should_receive(:on_start)
11
+ @server.start
12
+ @server.stop
13
+ end
14
+
15
+ it "should call on_start_error() if failing" do
16
+ @server = Chingu::GameStates::NetworkServer.new(:ip => "1.2.3.999", :port => 12345678) # crazy ip:port
17
+ @server.should_receive(:on_start_error)
18
+ @server.start
19
+ @server.stop
20
+ end
21
+
22
+ it "should call on_connect() and on_disconnect() when client connects" do
23
+ @server = Chingu::GameStates::NetworkServer.new(:ip => "0.0.0.0", :port => 9999)
24
+ @client = Chingu::GameStates::NetworkClient.new(:ip => "127.0.0.1", :port => 9999)
25
+
26
+ @server.should_receive(:on_start)
27
+ @server.should_receive(:on_connect).with(anything()) # anything() == a socket
28
+ @client.should_receive(:on_connect)
29
+ @server.start
30
+ @client.connect
31
+ @server.update
32
+
33
+ @client.stop
34
+ @server.stop
35
+ end
36
+
37
+ end
38
+
39
+ describe "Network Client" do
40
+ it "should call on_connection_refused callback when connecting to closed port" do
41
+ @client = Chingu::GameStates::NetworkClient.new(:ip => "127.0.0.1", :port => 55421) # closed we assume
42
+ @client.should_receive(:on_connection_refused)
43
+ @client.connect
44
+ end
45
+ end
46
+
47
+ describe "Network communication" do
48
+ before do
49
+ @server = Chingu::GameStates::NetworkServer.new(:ip => "0.0.0.0", :port => 9999).start
50
+ @client = Chingu::GameStates::NetworkClient.new(:ip => "127.0.0.1", :port => 9999).connect
51
+ end
52
+
53
+ after do
54
+ @server.close
55
+ @client.close
56
+ end
57
+
58
+ it "should send/recv strings" do
59
+ @server.should_receive(:on_msg).with(anything(), "woff!")
60
+ @client.send_msg("woff!")
61
+ @server.update
62
+ end
63
+
64
+ it "should send/recv hashes" do
65
+ @server.should_receive(:on_msg).with(anything(), {:foo => :bar})
66
+ @client.send_msg({:foo => :bar})
67
+ @server.update
68
+ end
69
+
70
+ it "should send/recv arrays" do
71
+ @server.should_receive(:on_msg).with(anything(), [1,2,3])
72
+ @client.send_msg([1,2,3])
73
+ @server.update
74
+ end
75
+
76
+ end
77
+ end
78
+ end
metadata CHANGED
@@ -1,113 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: chingu
3
- version: !ruby/object:Gem::Version
4
- prerelease: true
5
- segments:
6
- - 0
7
- - 9rc1
8
- version: 0.9rc1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9rc2
5
+ prerelease: 3
9
6
  platform: ruby
10
- authors:
7
+ authors:
11
8
  - ippa
12
9
  autorequire:
13
10
  bindir: bin
14
11
  cert_chain: []
15
-
16
- date: 2011-02-20 00:00:00 +01:00
12
+ date: 2011-02-26 00:00:00.000000000 +01:00
17
13
  default_executable:
18
- dependencies:
19
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
20
16
  name: gosu
21
- prerelease: false
22
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &24735936 !ruby/object:Gem::Requirement
23
18
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- - 7
30
- - 27
31
- version: 0.7.27
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.27.1
32
23
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: rest-client
36
24
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *24735936
26
+ - !ruby/object:Gem::Dependency
27
+ name: rest-client
28
+ requirement: &24735504 !ruby/object:Gem::Requirement
38
29
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
- version: "0"
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
45
34
  type: :runtime
46
- version_requirements: *id002
47
- - !ruby/object:Gem::Dependency
48
- name: crack
49
35
  prerelease: false
50
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *24735504
37
+ - !ruby/object:Gem::Dependency
38
+ name: crack
39
+ requirement: &24735072 !ruby/object:Gem::Requirement
51
40
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
58
45
  type: :runtime
59
- version_requirements: *id003
60
- - !ruby/object:Gem::Dependency
61
- name: rspec
62
46
  prerelease: false
63
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *24735072
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: &24734628 !ruby/object:Gem::Requirement
64
51
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- segments:
69
- - 2
70
- - 1
71
- - 0
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
72
55
  version: 2.1.0
73
56
  type: :development
74
- version_requirements: *id004
75
- - !ruby/object:Gem::Dependency
76
- name: watchr
77
57
  prerelease: false
78
- requirement: &id005 !ruby/object:Gem::Requirement
58
+ version_requirements: *24734628
59
+ - !ruby/object:Gem::Dependency
60
+ name: watchr
61
+ requirement: &24734268 !ruby/object:Gem::Requirement
79
62
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- segments:
84
- - 0
85
- version: "0"
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
86
67
  type: :development
87
- version_requirements: *id005
88
- - !ruby/object:Gem::Dependency
89
- name: rcov
90
68
  prerelease: false
91
- requirement: &id006 !ruby/object:Gem::Requirement
69
+ version_requirements: *24734268
70
+ - !ruby/object:Gem::Dependency
71
+ name: rcov
72
+ requirement: &24733848 !ruby/object:Gem::Requirement
92
73
  none: false
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- segments:
97
- - 0
98
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
99
78
  type: :development
100
- version_requirements: *id006
101
- 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.
79
+ prerelease: false
80
+ version_requirements: *24733848
81
+ description: OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++)
82
+ which provides all the core functionality. Chingu adds simple yet powerful game
83
+ states, prettier input handling, deployment safe asset-handling, a basic re-usable
84
+ game object and stackable game logic.
102
85
  email: ippa@rubylicio.us
103
86
  executables: []
104
-
105
87
  extensions: []
106
-
107
- extra_rdoc_files:
88
+ extra_rdoc_files:
108
89
  - LICENSE
109
90
  - README.rdoc
110
- files:
91
+ files:
111
92
  - .rspec
112
93
  - History.txt
113
94
  - LICENSE
@@ -290,6 +271,7 @@ files:
290
271
  - spec/chingu/images/rect_20x20.png
291
272
  - spec/chingu/inflector_spec.rb
292
273
  - spec/chingu/input_spec.rb
274
+ - spec/chingu/network_spec.rb
293
275
  - spec/chingu/parallax_spec.rb
294
276
  - spec/chingu/text_spec.rb
295
277
  - spec/chingu/window_spec.rb
@@ -298,38 +280,29 @@ files:
298
280
  has_rdoc: true
299
281
  homepage: http://github.com/ippa/chingu
300
282
  licenses: []
301
-
302
283
  post_install_message:
303
284
  rdoc_options: []
304
-
305
- require_paths:
285
+ require_paths:
306
286
  - lib
307
- required_ruby_version: !ruby/object:Gem::Requirement
287
+ required_ruby_version: !ruby/object:Gem::Requirement
308
288
  none: false
309
- requirements:
310
- - - ">="
311
- - !ruby/object:Gem::Version
312
- segments:
313
- - 0
314
- version: "0"
315
- required_rubygems_version: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ! '>='
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ required_rubygems_version: !ruby/object:Gem::Requirement
316
294
  none: false
317
- requirements:
318
- - - ">"
319
- - !ruby/object:Gem::Version
320
- segments:
321
- - 1
322
- - 3
323
- - 1
295
+ requirements:
296
+ - - ! '>'
297
+ - !ruby/object:Gem::Version
324
298
  version: 1.3.1
325
299
  requirements: []
326
-
327
300
  rubyforge_project: chingu
328
- rubygems_version: 1.3.7
301
+ rubygems_version: 1.5.2
329
302
  signing_key:
330
303
  specification_version: 3
331
304
  summary: OpenGL accelerated 2D game framework for Ruby
332
- test_files:
305
+ test_files:
333
306
  - examples/example10_traits_retrofy.rb
334
307
  - examples/example11_animation.rb
335
308
  - examples/example12_trait_timer.rb
@@ -376,6 +349,7 @@ test_files:
376
349
  - spec/chingu/helpers/options_setter_spec.rb
377
350
  - spec/chingu/inflector_spec.rb
378
351
  - spec/chingu/input_spec.rb
352
+ - spec/chingu/network_spec.rb
379
353
  - spec/chingu/parallax_spec.rb
380
354
  - spec/chingu/text_spec.rb
381
355
  - spec/chingu/window_spec.rb