gamebox 0.0.6 → 0.0.7

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.
Files changed (81) hide show
  1. data/History.txt +14 -0
  2. data/Manifest.txt +40 -37
  3. data/README.txt +2 -2
  4. data/Rakefile +27 -20
  5. data/TODO.txt +8 -8
  6. data/bin/gamebox +7 -1
  7. data/docs/getting_started.rdoc +2 -5
  8. data/docs/logo.png +0 -0
  9. data/lib/gamebox.rb +12 -1
  10. data/lib/gamebox/actor.rb +34 -9
  11. data/lib/gamebox/actor_factory.rb +25 -14
  12. data/lib/gamebox/actor_view.rb +6 -6
  13. data/lib/gamebox/{logo.rb → actors/logo.rb} +0 -0
  14. data/lib/gamebox/{score.rb → actors/score.rb} +2 -1
  15. data/lib/gamebox/{svg_actor.rb → actors/svg_actor.rb} +3 -4
  16. data/lib/gamebox/ai/polaris.rb +2 -0
  17. data/lib/gamebox/behavior.rb +3 -0
  18. data/lib/gamebox/{animated.rb → behaviors/animated.rb} +13 -5
  19. data/lib/gamebox/{graphical.rb → behaviors/graphical.rb} +11 -1
  20. data/lib/gamebox/{layered.rb → behaviors/layered.rb} +14 -0
  21. data/lib/gamebox/{physical.rb → behaviors/physical.rb} +41 -14
  22. data/lib/gamebox/{updatable.rb → behaviors/updatable.rb} +1 -1
  23. data/lib/gamebox/{templates/template_app → data}/config/objects.yml +4 -2
  24. data/lib/gamebox/data/graphics/logo.png +0 -0
  25. data/lib/gamebox/event_compat.rb +285 -0
  26. data/lib/gamebox/ftor.rb +2 -0
  27. data/lib/gamebox/gamebox_application.rb +12 -1
  28. data/lib/gamebox/generators/actor_generator.rb +2 -2
  29. data/lib/gamebox/generators/view_generator.rb +42 -0
  30. data/lib/gamebox/input_manager.rb +88 -21
  31. data/lib/gamebox/{aliasing.rb → lib/aliasing.rb} +0 -0
  32. data/lib/gamebox/{templates/template_app/lib → lib}/diy.rb +0 -0
  33. data/lib/gamebox/{inflections.rb → lib/inflections.rb} +0 -0
  34. data/lib/gamebox/{inflector.rb → lib/inflector.rb} +2 -2
  35. data/lib/gamebox/{linked_list.rb → lib/linked_list.rb} +0 -0
  36. data/lib/gamebox/{metaclass.rb → lib/metaclass.rb} +0 -0
  37. data/lib/gamebox/lib/numbers_ext.rb +3 -0
  38. data/lib/gamebox/{platform.rb → lib/platform.rb} +0 -0
  39. data/lib/gamebox/{publisher_ext.rb → lib/publisher_ext.rb} +0 -0
  40. data/lib/gamebox/{sorted_list.rb → lib/sorted_list.rb} +0 -0
  41. data/lib/gamebox/lib/surface_ext.rb +76 -0
  42. data/lib/gamebox/physical_director.rb +1 -1
  43. data/lib/gamebox/{physical_level.rb → physical_stage.rb} +28 -18
  44. data/lib/gamebox/physics.rb +2 -2
  45. data/lib/gamebox/resource_manager.rb +77 -8
  46. data/lib/gamebox/sound_manager.rb +15 -17
  47. data/lib/gamebox/stage.rb +143 -0
  48. data/lib/gamebox/stage_manager.rb +110 -0
  49. data/lib/gamebox/svg_document.rb +1 -1
  50. data/lib/gamebox/tasks/gamebox_tasks.rb +1 -1
  51. data/lib/gamebox/templates/{test_actor.erb → actor_spec.erb} +2 -2
  52. data/lib/gamebox/templates/actor_view.erb +8 -0
  53. data/lib/gamebox/templates/actor_view_spec.erb +10 -0
  54. data/lib/gamebox/templates/template_app/Rakefile +4 -4
  55. data/lib/gamebox/templates/template_app/config/game.yml +1 -0
  56. data/lib/gamebox/templates/template_app/config/stage_config.yml +2 -0
  57. data/lib/gamebox/templates/template_app/script/generate +2 -1
  58. data/lib/gamebox/templates/template_app/{test → spec}/helper.rb +0 -0
  59. data/lib/gamebox/templates/template_app/src/{demo_level.rb → demo_stage.rb} +5 -3
  60. data/lib/gamebox/templates/template_app/src/game.rb +4 -6
  61. data/lib/gamebox/version.rb +3 -2
  62. data/lib/gamebox/viewport.rb +18 -9
  63. data/lib/gamebox/{graphical_actor_view.rb → views/graphical_actor_view.rb} +13 -1
  64. data/lib/gamebox/wrapped_screen.rb +2 -1
  65. data/spec/actor_spec.rb +57 -0
  66. data/{test/test_animated.rb → spec/animated_spec.rb} +5 -6
  67. data/spec/helper.rb +24 -0
  68. data/{test/test_line_of_site.rb → spec/line_of_site_spec.rb} +1 -1
  69. data/{test/test_physical.rb → spec/physical_spec.rb} +3 -4
  70. data/{test/test_polaris.rb → spec/polaris_spec.rb} +1 -1
  71. data/{test/test_viewport.rb → spec/viewport_spec.rb} +11 -8
  72. metadata +53 -50
  73. data/docs/gamebox04_big.png +0 -0
  74. data/lib/gamebox/level.rb +0 -65
  75. data/lib/gamebox/mode.rb +0 -123
  76. data/lib/gamebox/mode_manager.rb +0 -80
  77. data/lib/gamebox/numbers_ext.rb +0 -3
  78. data/lib/gamebox/surface_ext.rb +0 -37
  79. data/lib/gamebox/templates/template_app/config/mode_level_config.yml +0 -3
  80. data/test/helper.rb +0 -26
  81. data/test/test_actor.rb +0 -36
metadata CHANGED
@@ -1,15 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gamebox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shawn Anderson
8
+ - Jason Roelofs
9
+ - Karlin Fox
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
13
 
12
- date: 2009-07-04 00:00:00 -07:00
14
+ date: 2009-11-18 00:00:00 -05:00
13
15
  default_executable:
14
16
  dependencies:
15
17
  - !ruby/object:Gem::Dependency
@@ -52,8 +54,11 @@ dependencies:
52
54
  - !ruby/object:Gem::Version
53
55
  version: 2.3.1
54
56
  version:
55
- description: Framework for building and distributing games using Rubygame
56
- email: shawn42@gmail.com
57
+ description: A game template for building and distributing Rubygame games. See docs/getting_started.rdoc for help getting started.
58
+ email:
59
+ - shawn42@gmail.com
60
+ - jameskilton@gmail.com
61
+ - karlin.fox@gmail.com
57
62
  executables:
58
63
  - gamebox
59
64
  extensions: []
@@ -71,22 +76,28 @@ files:
71
76
  - Rakefile
72
77
  - TODO.txt
73
78
  - bin/gamebox
74
- - docs/gamebox04_big.png
75
79
  - docs/getting_started.rdoc
76
80
  - docs/logo.png
77
81
  - lib/gamebox.rb
78
82
  - lib/gamebox/actor.rb
79
83
  - lib/gamebox/actor_factory.rb
80
84
  - lib/gamebox/actor_view.rb
85
+ - lib/gamebox/actors/logo.rb
86
+ - lib/gamebox/actors/score.rb
87
+ - lib/gamebox/actors/svg_actor.rb
81
88
  - lib/gamebox/ai/line_of_site.rb
82
89
  - lib/gamebox/ai/polaris.rb
83
90
  - lib/gamebox/ai/two_d_grid_location.rb
84
91
  - lib/gamebox/ai/two_d_grid_map.rb
85
- - lib/gamebox/aliasing.rb
86
- - lib/gamebox/animated.rb
87
92
  - lib/gamebox/behavior.rb
93
+ - lib/gamebox/behaviors/animated.rb
94
+ - lib/gamebox/behaviors/graphical.rb
95
+ - lib/gamebox/behaviors/layered.rb
96
+ - lib/gamebox/behaviors/physical.rb
97
+ - lib/gamebox/behaviors/updatable.rb
88
98
  - lib/gamebox/config_manager.rb
89
99
  - lib/gamebox/console_app.rb
100
+ - lib/gamebox/data/config/objects.yml
90
101
  - lib/gamebox/data/fonts/Asimov.ttf
91
102
  - lib/gamebox/data/fonts/GAMEBOX_FONTS_GO_HERE
92
103
  - lib/gamebox/data/graphics/GAMEBOX_GRAPHICS_GO_HERE
@@ -94,73 +105,70 @@ files:
94
105
  - lib/gamebox/data/music/GAMEBOX_MUSIC_GOES_HERE
95
106
  - lib/gamebox/data/sounds/GAMEBOX_SOUND_FX_GO_HERE
96
107
  - lib/gamebox/director.rb
108
+ - lib/gamebox/event_compat.rb
109
+ - lib/gamebox/ftor.rb
97
110
  - lib/gamebox/gamebox_application.rb
98
111
  - lib/gamebox/gamebox_generator.rb
99
112
  - lib/gamebox/generators/actor_generator.rb
100
- - lib/gamebox/graphical.rb
101
- - lib/gamebox/graphical_actor_view.rb
102
- - lib/gamebox/inflections.rb
103
- - lib/gamebox/inflector.rb
113
+ - lib/gamebox/generators/view_generator.rb
104
114
  - lib/gamebox/input_manager.rb
105
- - lib/gamebox/layered.rb
106
- - lib/gamebox/level.rb
107
- - lib/gamebox/linked_list.rb
108
- - lib/gamebox/logo.rb
109
- - lib/gamebox/metaclass.rb
110
- - lib/gamebox/mode.rb
111
- - lib/gamebox/mode_manager.rb
112
- - lib/gamebox/numbers_ext.rb
113
- - lib/gamebox/physical.rb
115
+ - lib/gamebox/lib/aliasing.rb
116
+ - lib/gamebox/lib/diy.rb
117
+ - lib/gamebox/lib/inflections.rb
118
+ - lib/gamebox/lib/inflector.rb
119
+ - lib/gamebox/lib/linked_list.rb
120
+ - lib/gamebox/lib/metaclass.rb
121
+ - lib/gamebox/lib/numbers_ext.rb
122
+ - lib/gamebox/lib/platform.rb
123
+ - lib/gamebox/lib/publisher_ext.rb
124
+ - lib/gamebox/lib/sorted_list.rb
125
+ - lib/gamebox/lib/surface_ext.rb
126
+ - lib/gamebox/stage.rb
127
+ - lib/gamebox/stage_manager.rb
114
128
  - lib/gamebox/physical_director.rb
115
- - lib/gamebox/physical_level.rb
129
+ - lib/gamebox/physical_stage.rb
116
130
  - lib/gamebox/physics.rb
117
- - lib/gamebox/platform.rb
118
- - lib/gamebox/publisher_ext.rb
119
131
  - lib/gamebox/resource_manager.rb
120
- - lib/gamebox/score.rb
121
- - lib/gamebox/sorted_list.rb
122
132
  - lib/gamebox/sound_manager.rb
123
- - lib/gamebox/surface_ext.rb
124
- - lib/gamebox/svg_actor.rb
125
133
  - lib/gamebox/svg_document.rb
126
134
  - lib/gamebox/tasks/gamebox_tasks.rb
127
135
  - lib/gamebox/templates/actor.erb
136
+ - lib/gamebox/templates/actor_spec.erb
137
+ - lib/gamebox/templates/actor_view.erb
138
+ - lib/gamebox/templates/actor_view_spec.erb
128
139
  - lib/gamebox/templates/template_app/README
129
140
  - lib/gamebox/templates/template_app/Rakefile
130
141
  - lib/gamebox/templates/template_app/config/boot.rb
131
142
  - lib/gamebox/templates/template_app/config/environment.rb
132
143
  - lib/gamebox/templates/template_app/config/game.yml
133
- - lib/gamebox/templates/template_app/config/mode_level_config.yml
134
- - lib/gamebox/templates/template_app/config/objects.yml
144
+ - lib/gamebox/templates/template_app/config/stage_config.yml
135
145
  - lib/gamebox/templates/template_app/data/fonts/FONTS_GO_HERE
136
146
  - lib/gamebox/templates/template_app/data/graphics/GRAPHICS_GO_HERE
137
147
  - lib/gamebox/templates/template_app/data/music/MUSIC_GOES_HERE
138
148
  - lib/gamebox/templates/template_app/data/sounds/SOUND_FX_GO_HERE
139
149
  - lib/gamebox/templates/template_app/doc/README_FOR_APP
140
150
  - lib/gamebox/templates/template_app/lib/code_statistics.rb
141
- - lib/gamebox/templates/template_app/lib/diy.rb
142
151
  - lib/gamebox/templates/template_app/lib/platform.rb
143
152
  - lib/gamebox/templates/template_app/script/generate
144
153
  - lib/gamebox/templates/template_app/src/app.rb
145
- - lib/gamebox/templates/template_app/src/demo_level.rb
154
+ - lib/gamebox/templates/template_app/src/demo_stage.rb
146
155
  - lib/gamebox/templates/template_app/src/game.rb
147
156
  - lib/gamebox/templates/template_app/src/my_actor.rb
148
- - lib/gamebox/templates/template_app/test/helper.rb
149
- - lib/gamebox/templates/test_actor.erb
150
- - lib/gamebox/updatable.rb
157
+ - lib/gamebox/templates/template_app/spec/helper.rb
151
158
  - lib/gamebox/version.rb
152
159
  - lib/gamebox/viewport.rb
160
+ - lib/gamebox/views/graphical_actor_view.rb
153
161
  - lib/gamebox/wrapped_screen.rb
154
162
  - script/perf_polaris.rb
155
- - test/helper.rb
156
- - test/test_actor.rb
157
- - test/test_animated.rb
158
- - test/test_line_of_site.rb
159
- - test/test_physical.rb
160
- - test/test_polaris.rb
161
- - test/test_viewport.rb
163
+ - spec/helper.rb
164
+ - spec/actor_spec.rb
165
+ - spec/animated_spec.rb
166
+ - spec/line_of_site_spec.rb
167
+ - spec/physical_spec.rb
168
+ - spec/polaris_spec.rb
169
+ - spec/viewport_spec.rb
162
170
  has_rdoc: true
163
- homepage: http://shawn42.github.com/gamebox
171
+ homepage: http://shawn42.github.com/gamebox/
164
172
  licenses: []
165
173
 
166
174
  post_install_message:
@@ -187,11 +195,6 @@ rubyforge_project: gamebox
187
195
  rubygems_version: 1.3.3
188
196
  signing_key:
189
197
  specification_version: 3
190
- summary: Framework for building and distributing games using Rubygame
191
- test_files:
192
- - test/test_actor.rb
193
- - test/test_animated.rb
194
- - test/test_line_of_site.rb
195
- - test/test_physical.rb
196
- - test/test_polaris.rb
197
- - test/test_viewport.rb
198
+ summary: A game template for building and distributing Rubygame games
199
+ test_files: []
200
+
Binary file
data/lib/gamebox/level.rb DELETED
@@ -1,65 +0,0 @@
1
- # Levels represent on level of game play. Some games will likely have only one
2
- # level. Level is responsible for loading its background, props, and directors.
3
- require 'inflector'
4
- require 'publisher'
5
- require 'director'
6
- class Level
7
- extend Publisher
8
-
9
- can_fire_anything
10
- attr_accessor :director, :resource_manager, :sound_manager,
11
- :opts, :viewport, :input_manager
12
-
13
- def initialize(actor_factory, resource_manager, sound_manager, input_manager, viewport, opts={})
14
- @director = Director.new
15
- @actor_factory = actor_factory
16
- @actor_factory.director = @director
17
-
18
- @sound_manager = sound_manager
19
- @input_manager = input_manager
20
- @resource_manager = resource_manager
21
- @viewport = viewport
22
- @opts = opts
23
- setup
24
- end
25
-
26
- def setup
27
- end
28
-
29
- def create_actor(type, args={})
30
- @actor_factory.build type, self, args
31
- end
32
-
33
- def update(time)
34
- @director.update time
35
- end
36
-
37
- def draw(target,x_off,y_off)
38
- end
39
-
40
- # extract all the params from a node that are needed to construct an actor
41
- def create_actors_from_svg
42
- float_keys = ["x","y"]
43
- dynamic_actors ||= {}
44
- layer = @svg_doc.find_group_by_label("actors")
45
-
46
- unless layer.nil?
47
- # each image in the layer is an actor
48
- layer.images.each do |actor_def|
49
- klass = actor_def.game_class.to_sym
50
- handle = actor_def.game_handle
51
- new_opts = {}
52
- actor_def.node.attributes.each do |k,v|
53
- v = v.to_f if float_keys.include? k
54
- new_opts[k.to_sym] = v
55
- end
56
-
57
- actor = create_actor klass, new_opts
58
- dynamic_actors[handle.to_sym] = actor if handle
59
- end
60
- end
61
-
62
- dynamic_actors
63
- end
64
-
65
- end
data/lib/gamebox/mode.rb DELETED
@@ -1,123 +0,0 @@
1
- require 'inflector'
2
- require 'viewport'
3
- # Mode is a state that the game is in. (ie intro mode, multiplayer mode,
4
- # single player mode).
5
- class Mode
6
- extend Publisher
7
- can_fire_anything
8
-
9
- attr_accessor :level, :drawables, :resource_manager, :sound_manager
10
- def initialize(input_manager, actor_factory, resource_manager, sound_manager, config_manager, levels)
11
- @input_manager = input_manager
12
- @actor_factory = actor_factory
13
- @resource_manager = resource_manager
14
- @sound_manager = sound_manager
15
- @config_manager = config_manager
16
- res = @config_manager[:screen_resolution]
17
-
18
- @viewport = Viewport.new res[0], res[1]
19
- @drawables = {}
20
- @levels = levels
21
- setup
22
- end
23
-
24
- def setup
25
- end
26
-
27
- def start
28
- @level_number = 0
29
- clear_drawables
30
- @level = build_level @levels[@level_number], nil
31
- end
32
-
33
- def next_level
34
- @level_number += 1
35
- clear_drawables
36
- @level = build_level @levels[@level_number], @level
37
- end
38
-
39
- def prev_level
40
- @level_number -= 1
41
- clear_drawables
42
- @level = build_level @levels[@level_number], @level
43
- end
44
-
45
- def restart_level
46
- clear_drawables
47
- @level = build_level @levels[@level_number], @level
48
- end
49
-
50
- def stop
51
- end
52
-
53
- def build_level(level_def, prev_level_instance)
54
- level_sym = level_def.keys.first
55
- begin
56
- require level_sym.to_s+"_level"
57
- rescue LoadError => ex
58
- puts "Load error: #{ex.inspect}"
59
- puts ex.backtrace.join("\n")
60
- # maybe we have included it elsewhere
61
- end
62
- level_klass = ObjectSpace.const_get(Inflector.camelize(level_sym.to_s+"_level"))
63
- full_level_def = { :prev_level => prev_level_instance }
64
- full_level_def.merge! level_def[level_sym] if level_def[level_sym].is_a? Hash
65
- level = level_klass.new @actor_factory, @resource_manager, @sound_manager, @input_manager, @viewport, full_level_def
66
- level.when :restart_level do
67
- restart_level
68
- end
69
- level.when :next_level do
70
- if @level_number == @levels.size-1
71
- fire :next_mode
72
- else
73
- next_level
74
- end
75
- end
76
- level.when :prev_level do
77
- if @level_number == 0
78
- fire :prev_mode
79
- else
80
- prev_level
81
- end
82
- end
83
-
84
- level
85
- end
86
-
87
- def update(time)
88
- @level.update time if @level
89
- @viewport.update time
90
- end
91
-
92
- def draw(target)
93
- @level.draw target, @viewport.x_offset, @viewport.y_offset
94
-
95
- for parallax_layer in @drawables.keys.sort.reverse
96
- pd = @drawables[parallax_layer]
97
- for layer in pd.keys.sort
98
- for d in pd[layer]
99
- trans_x = @viewport.x_offset parallax_layer
100
- trans_y = @viewport.y_offset parallax_layer
101
- d.draw target, trans_x, trans_y
102
- end
103
- end
104
- end
105
- end
106
-
107
- def unregister_drawable(drawable)
108
- @drawables[drawable.parallax][drawable.layer].delete drawable
109
- end
110
-
111
- def clear_drawables
112
- @drawables = {}
113
- end
114
-
115
- def register_drawable(drawable)
116
- layer = drawable.layer
117
- parallax = drawable.parallax
118
- @drawables[parallax] ||= {}
119
- @drawables[parallax][layer] ||= []
120
- @drawables[parallax][layer] << drawable
121
- end
122
- end
123
-
@@ -1,80 +0,0 @@
1
- require 'inflector'
2
- require 'mode'
3
- class ModeManager
4
-
5
- constructor :resource_manager, :actor_factory, :input_manager,
6
- :sound_manager, :config_manager
7
-
8
- def setup
9
- @modes = {}
10
- @actor_factory.mode_manager = self
11
- modes = @resource_manager.load_config('mode_level_config')[:modes]
12
-
13
- @mode_names = []
14
- for mode_hash in modes
15
- for mode, levels in mode_hash
16
- @mode_names << mode
17
- mode_klass_name = "Mode"
18
- unless mode == :default
19
- mode_klass_name = Inflector.camelize mode.to_s+"Mode"
20
- end
21
- begin
22
- require mode.to_s+"_mode"
23
- rescue LoadError
24
- # hope it's defined somewhere else
25
- end
26
- mode_klass = ObjectSpace.const_get mode_klass_name
27
- mode_instance = mode_klass.new(@input_manager, @actor_factory, @resource_manager, @sound_manager, @config_manager, levels)
28
- mode_instance.when :next_mode do
29
- next_mode
30
- end
31
- mode_instance.when :prev_mode do
32
- prev_mode
33
- end
34
- add_mode mode, mode_instance
35
- end
36
- end
37
- end
38
-
39
- def next_mode
40
- index = @mode_names.index @mode
41
- if index == @mode_names.size-1
42
- puts "last mode, exiting"
43
- exit
44
- end
45
- change_mode_to @mode_names[index+1]
46
- end
47
-
48
- def prev_mode
49
- index = @mode_names.index @mode
50
- if index == 0
51
- puts "first mode, exiting"
52
- exit
53
- end
54
- change_mode_to @mode_names[index-1]
55
- end
56
-
57
- def add_mode(mode_sym, mode_instance)
58
- @modes[mode_sym] = mode_instance
59
- @mode = mode_sym unless @mode
60
- mode_instance
61
- end
62
-
63
- def change_mode_to(mode, *args)
64
- @modes[@mode].stop unless @modes[@mode].nil?
65
- @mode = mode
66
- @modes[@mode].start *args
67
- end
68
-
69
- def current_mode
70
- @modes[@mode]
71
- end
72
-
73
- def update(time)
74
- @modes[@mode].update time unless @modes[@mode].nil?
75
- end
76
-
77
- def draw(target)
78
- @modes[@mode].draw target unless @modes[@mode].nil?
79
- end
80
- end