gamebox 0.4.0.rc5 → 0.4.0.rc11
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/README.md +205 -127
- data/bin/gamebox +49 -3
- data/bin/gb +87 -0
- data/gamebox.gemspec +4 -3
- data/lib/gamebox.rb +1 -1
- data/lib/gamebox/actors/collidable_debugger.rb +4 -4
- data/lib/gamebox/actors/icon.rb +7 -0
- data/lib/gamebox/actors/label.rb +41 -42
- data/lib/gamebox/behaviors/animated.rb +6 -0
- data/lib/gamebox/behaviors/audible.rb +1 -2
- data/lib/gamebox/behaviors/collidable.rb +1 -1
- data/lib/gamebox/behaviors/graphical.rb +8 -4
- data/lib/gamebox/behaviors/physical.rb +6 -1
- data/lib/gamebox/behaviors/positioned.rb +4 -11
- data/lib/gamebox/behaviors/projectile.rb +8 -0
- data/lib/gamebox/behaviors/visible.rb +3 -3
- data/lib/gamebox/core/aabb_tree.rb +1 -1
- data/lib/gamebox/core/actor.rb +37 -50
- data/lib/gamebox/core/actor_definition.rb +41 -0
- data/lib/gamebox/core/actor_view.rb +6 -21
- data/lib/gamebox/core/actor_view_definition.rb +19 -0
- data/lib/gamebox/core/actor_view_factory.rb +9 -3
- data/lib/gamebox/core/behavior.rb +8 -27
- data/lib/gamebox/core/behavior_definition.rb +24 -0
- data/lib/gamebox/core/config_manager.rb +45 -30
- data/lib/gamebox/core/configuration.rb +5 -0
- data/lib/gamebox/core/core.rb +4 -0
- data/lib/gamebox/core/debug_helpers.rb +46 -0
- data/lib/gamebox/core/director.rb +32 -5
- data/lib/gamebox/core/event_symbols.rb +214 -0
- data/lib/gamebox/core/game.rb +1 -1
- data/lib/gamebox/core/input_manager.rb +1 -4
- data/lib/gamebox/core/input_mapper.rb +85 -0
- data/lib/gamebox/core/physics.rb +7 -3
- data/lib/gamebox/core/physics_manager.rb +5 -1
- data/lib/gamebox/core/renderer.rb +72 -0
- data/lib/gamebox/core/stage.rb +25 -81
- data/lib/gamebox/core/stage_definition.rb +60 -0
- data/lib/gamebox/core/stage_factory.rb +56 -0
- data/lib/gamebox/core/stage_manager.rb +5 -11
- data/lib/gamebox/core/timer_manager.rb +6 -2
- data/lib/gamebox/core/viewport.rb +12 -5
- data/lib/gamebox/core/wrapped_screen.rb +8 -5
- data/lib/gamebox/gamebox_application.rb +21 -19
- data/lib/gamebox/lib/array_ext.rb +9 -0
- data/lib/gamebox/lib/observable_attributes.rb +24 -0
- data/lib/gamebox/lib/vector2.rb +432 -0
- data/lib/gamebox/post_setup_handlers/file_watcher.rb +37 -0
- data/lib/gamebox/post_setup_handlers/gamebox_debug_helpers.rb +13 -0
- data/lib/gamebox/post_setup_handlers/pry_remote_server.rb +29 -0
- data/lib/gamebox/spec/helper.rb +165 -17
- data/lib/gamebox/tasks/gamebox_tasks.rake +27 -12
- data/lib/gamebox/version.rb +1 -1
- data/lib/gamebox/views/graphical_actor_view.rb +4 -5
- data/script/perf_aabb.rb +13 -8
- data/spec/acceptance/animation_spec.rb +1 -3
- data/spec/acceptance/basic_actor_lifecycle_spec.rb +1 -1
- data/spec/acceptance/fps_actor_spec.rb +8 -12
- data/spec/acceptance/input_mapper_spec.rb +17 -24
- data/spec/acceptance/update_ordering_spec.rb +64 -0
- data/spec/actors/label_spec.rb +90 -5
- data/spec/behaviors/animated_spec.rb +1 -1
- data/spec/behaviors/collidable_spec.rb +7 -15
- data/spec/behaviors/positioned_spec.rb +12 -5
- data/spec/core/actor_spec.rb +31 -3
- data/spec/core/actor_view_spec.rb +1 -1
- data/spec/core/behavior_spec.rb +3 -0
- data/spec/core/configuration_spec.rb +49 -2
- data/spec/core/input_mapper_spec.rb +7 -0
- data/spec/core/renderer_spec.rb +89 -0
- data/spec/core/stage_definition_spec.rb +41 -0
- data/spec/core/stage_manager_spec.rb +11 -11
- data/spec/core/stage_spec.rb +38 -78
- data/spec/core/viewport_spec.rb +5 -2
- data/spec/core/wrapped_screen_spec.rb +18 -12
- data/spec/views/graphical_actor_view_spec.rb +33 -62
- data/templates/actor_template.erb +11 -0
- data/templates/app/README.md +1 -0
- data/templates/app/src/actors/{player.rb → player_actor.rb} +3 -1
- data/templates/app/src/behaviors/.gitkeep +0 -0
- data/templates/app/src/stages/demo_stage.rb +14 -0
- data/templates/behavior_template.erb +13 -0
- data/templates/stage_template.erb +13 -0
- metadata +60 -21
- data/component_generators/actor_generator.rb +0 -17
- data/lib/gamebox/actors/emitter.rb +0 -12
- data/lib/gamebox/behaviors/emitting.rb +0 -48
- data/lib/gamebox/behaviors/input_mapper.rb +0 -11
- data/lib/gamebox/lib/ftor.rb +0 -372
- data/spec/actors/emitter_spec.rb +0 -5
- data/templates/app/NEXT_STEPS.txt +0 -1
- data/templates/app/README.rdoc +0 -24
- data/templates/app/src/demo_stage.rb +0 -7
@@ -0,0 +1,37 @@
|
|
1
|
+
module PostSetupHandlers
|
2
|
+
|
3
|
+
class FileWatcher
|
4
|
+
|
5
|
+
def self.setup(argv,env,config)
|
6
|
+
start_file_watcher if config[:debug] or argv.include?('--debug')
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.filepaths
|
10
|
+
[ "src/behaviors/", "src/actors" ]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.start_file_watcher
|
14
|
+
log "File Watcher is now watching (#{filepaths.join(', ')}) for changes."
|
15
|
+
|
16
|
+
Thread.abort_on_exception = true
|
17
|
+
|
18
|
+
Thread.new do
|
19
|
+
require 'listen'
|
20
|
+
Listen.to(*filepaths, filter: /\.rb$/) do |modified, added, removed|
|
21
|
+
(modified + added).each do |path|
|
22
|
+
path[/([^\/]*)\.rb/]
|
23
|
+
filename = $1
|
24
|
+
case path
|
25
|
+
when /behaviors/
|
26
|
+
reload_behavior filename
|
27
|
+
when /actors/
|
28
|
+
load_actor filename
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
module PostSetupHandlers
|
3
|
+
|
4
|
+
class GameboxAppAddDebugHelpers
|
5
|
+
def self.setup(argv,env,config)
|
6
|
+
if config[:debug] or ARGV.include?("--debug")
|
7
|
+
log "GameboxApp now includes DEBUG Helpers"
|
8
|
+
GameboxApp.send :include, DebugHelpers
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module PostSetupHandlers
|
2
|
+
class PryRemoteServer
|
3
|
+
def self.setup(argv,env,config)
|
4
|
+
start_remote_pry if config[:debug] or argv.include?('--debug')
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.start_remote_pry
|
8
|
+
log "Pry Remote Server started!"
|
9
|
+
|
10
|
+
Thread.abort_on_exception = true
|
11
|
+
|
12
|
+
Thread.new do
|
13
|
+
loop do
|
14
|
+
begin
|
15
|
+
if th = DRb.thread
|
16
|
+
th.kill
|
17
|
+
end
|
18
|
+
|
19
|
+
binding.remote_pry
|
20
|
+
log "remote_pry returned"
|
21
|
+
rescue Exception => e
|
22
|
+
log "finished remote pry"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/gamebox/spec/helper.rb
CHANGED
@@ -18,10 +18,114 @@ module GameboxSpecHelpers
|
|
18
18
|
before { @_mocks_created = create_mocks(*mock_names_array) }
|
19
19
|
subject { described_class.new @_mocks_created }
|
20
20
|
end
|
21
|
+
|
22
|
+
def subjectify_behavior(behavior_name)
|
23
|
+
before {
|
24
|
+
@_beh_mock_names = Behavior.object_definition.component_names
|
25
|
+
@actor = evented_stub(mock("actor_for_#{behavior_name}"))
|
26
|
+
@_mocks_created = create_mocks *(@_beh_mock_names - [:actor])
|
27
|
+
@_mocks_created[:actor] = @actor
|
28
|
+
|
29
|
+
|
30
|
+
@behavior_definition = Behavior.definitions[behavior_name]
|
31
|
+
reqs = @behavior_definition.required_injections || []
|
32
|
+
reqs -= @_beh_mock_names
|
33
|
+
@_req_mocks = create_mocks(*reqs)
|
34
|
+
}
|
35
|
+
let (:opts) { {} }
|
36
|
+
subject {
|
37
|
+
|
38
|
+
# TODO so much duplication here from the *Factories
|
39
|
+
Behavior.new(@_mocks_created).tap do |behavior|
|
40
|
+
@_req_mocks.keys.each do |req|
|
41
|
+
object = @_req_mocks[req]
|
42
|
+
behavior.define_singleton_method req do
|
43
|
+
components[req]
|
44
|
+
end
|
45
|
+
components = behavior.send :components
|
46
|
+
components[req] = object
|
47
|
+
end
|
48
|
+
|
49
|
+
helpers = @behavior_definition.helpers_block
|
50
|
+
if helpers
|
51
|
+
helpers_module = Module.new &helpers
|
52
|
+
behavior.extend helpers_module
|
53
|
+
end
|
54
|
+
|
55
|
+
behavior.define_singleton_method :react_to, @behavior_definition.react_to_block if @behavior_definition.react_to_block
|
56
|
+
|
57
|
+
# TODO not sure the right way to mock this out
|
58
|
+
# deps = @behavior_definition.required_behaviors
|
59
|
+
# if deps
|
60
|
+
# deps.each do |beh|
|
61
|
+
# _add_behavior actor, beh unless actor.has_behavior?(beh)
|
62
|
+
# end
|
63
|
+
# end
|
64
|
+
behavior.configure(opts)
|
65
|
+
behavior.instance_eval &@behavior_definition.setup_block if @behavior_definition.setup_block
|
66
|
+
end
|
67
|
+
}
|
68
|
+
end
|
69
|
+
|
70
|
+
def subjectify_actor(actor_type)
|
71
|
+
actor_definition = Actor.definitions[actor_type]
|
72
|
+
before {
|
73
|
+
@_mocks_created = create_mocks *Actor.object_definition.component_names
|
74
|
+
}
|
75
|
+
subject {
|
76
|
+
Actor.new(@_mocks_created).tap do |actor|
|
77
|
+
|
78
|
+
actor_definition.behaviors.each do |behavior|
|
79
|
+
beh_opts = {}
|
80
|
+
beh_key = behavior
|
81
|
+
|
82
|
+
if behavior.is_a?(Hash)
|
83
|
+
beh_opts = behavior.values.first
|
84
|
+
beh_key = behavior.keys.first
|
85
|
+
end
|
86
|
+
|
87
|
+
actor_definition.attributes.each do |attr|
|
88
|
+
actor.has_attributes attr
|
89
|
+
end
|
90
|
+
|
91
|
+
actor.add_behavior beh_key, beh_opts
|
92
|
+
end
|
93
|
+
end
|
94
|
+
}
|
95
|
+
end
|
96
|
+
|
97
|
+
def subjectify_actor_view(view_name)
|
98
|
+
view_definition = ActorView.definitions[view_name]
|
99
|
+
before {
|
100
|
+
reqs = view_definition.required_injections || []
|
101
|
+
|
102
|
+
@_mocks_created = create_mocks( *ActorView.object_definition.component_names + reqs)
|
103
|
+
@_mocks_created[:actor] = evented_stub(@_mocks_created[:actor])
|
104
|
+
|
105
|
+
}
|
106
|
+
subject {
|
107
|
+
ActorView.new(@_mocks_created).tap do |view|
|
108
|
+
view.define_singleton_method :draw, &view_definition.draw_block if view_definition.draw_block
|
109
|
+
if view_definition.setup_block
|
110
|
+
view.define_singleton_method :setup, &view_definition.setup_block
|
111
|
+
view.configure
|
112
|
+
end
|
113
|
+
end
|
114
|
+
}
|
115
|
+
end
|
21
116
|
end
|
22
117
|
|
23
118
|
module InstanceMethods
|
24
119
|
|
120
|
+
|
121
|
+
def actor_stubs(actor, attributes={})
|
122
|
+
attributes.each do |att, value|
|
123
|
+
actor.stubs(att).returns(value)
|
124
|
+
actor.stubs(:do_or_do_not).with(att).returns(value)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
|
25
129
|
def create_actor(type=:actor, args={})
|
26
130
|
act = create_conjected_object type, nil, false
|
27
131
|
act.configure args.merge(actor_type: type)
|
@@ -130,21 +234,24 @@ module GameboxAcceptanceSpecHelpers
|
|
130
234
|
|
131
235
|
def caption=(new_caption)
|
132
236
|
end
|
237
|
+
|
238
|
+
def rotate(*args)
|
239
|
+
yield
|
240
|
+
end
|
133
241
|
end
|
134
242
|
|
135
243
|
|
136
|
-
|
244
|
+
module ::TestStageHelpers
|
137
245
|
attr_accessor :actors
|
138
|
-
|
139
|
-
|
140
|
-
@actors = []
|
246
|
+
def actors
|
247
|
+
@actors ||= []
|
141
248
|
end
|
142
249
|
|
143
250
|
def create_actor(actor_type, *args)
|
144
251
|
super.tap do |act|
|
145
|
-
|
252
|
+
actors << act
|
146
253
|
act.when :remove_me do
|
147
|
-
|
254
|
+
actors.delete act
|
148
255
|
end
|
149
256
|
end
|
150
257
|
end
|
@@ -155,6 +262,12 @@ module GameboxAcceptanceSpecHelpers
|
|
155
262
|
end
|
156
263
|
end
|
157
264
|
|
265
|
+
define_stage :testing do
|
266
|
+
helpers do
|
267
|
+
include TestStageHelpers
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
158
271
|
module MockCalls
|
159
272
|
attr_accessor :calls
|
160
273
|
def method_missing(*args)
|
@@ -168,14 +281,13 @@ module GameboxAcceptanceSpecHelpers
|
|
168
281
|
|
169
282
|
class ::MockImage
|
170
283
|
include MockCalls
|
171
|
-
attr_accessor :filename
|
172
|
-
def initialize(filename)
|
284
|
+
attr_accessor :filename, :width, :height
|
285
|
+
def initialize(filename, w, h)
|
173
286
|
_reset!
|
174
287
|
@filename = filename
|
288
|
+
@width = w
|
289
|
+
@height = h
|
175
290
|
end
|
176
|
-
|
177
|
-
def width; 10; end
|
178
|
-
def height; 20; end
|
179
291
|
end
|
180
292
|
|
181
293
|
class ::MockFont
|
@@ -200,7 +312,7 @@ module GameboxAcceptanceSpecHelpers
|
|
200
312
|
public *Game.object_definition.component_names
|
201
313
|
|
202
314
|
def configure
|
203
|
-
stage_manager.change_stage_to
|
315
|
+
stage_manager.change_stage_to stage_manager.default_stage
|
204
316
|
end
|
205
317
|
|
206
318
|
def stage(&blk)
|
@@ -211,6 +323,10 @@ module GameboxAcceptanceSpecHelpers
|
|
211
323
|
stage_manager.current_stage
|
212
324
|
end
|
213
325
|
|
326
|
+
def actors(actor_type)
|
327
|
+
stage_manager.current_stage.actors.select { |act| act.actor_type == actor_type }
|
328
|
+
end
|
329
|
+
|
214
330
|
def actor(actor_type)
|
215
331
|
stage_manager.current_stage.actors.detect { |act| act.actor_type == actor_type }
|
216
332
|
end
|
@@ -220,10 +336,23 @@ module GameboxAcceptanceSpecHelpers
|
|
220
336
|
end
|
221
337
|
|
222
338
|
module InstanceMethods
|
223
|
-
def
|
339
|
+
def mock_tiles(filename, width, height)
|
340
|
+
context = Conject.default_object_context
|
341
|
+
resource_manager = context[:resource_manager]
|
342
|
+
|
343
|
+
[].tap do |tiles|
|
344
|
+
(width * height).times do |i|
|
345
|
+
tiles << MockImage.new("#{filename}_#{i}", 16, 16)
|
346
|
+
end
|
347
|
+
|
348
|
+
resource_manager.stubs(:load_tiles).returns(tiles)
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
def mock_image(filename, w=10, h=20)
|
224
353
|
context = Conject.default_object_context
|
225
354
|
resource_manager = context[:resource_manager]
|
226
|
-
MockImage.new(filename).tap do |img|
|
355
|
+
MockImage.new(filename, w, h).tap do |img|
|
227
356
|
resource_manager.stubs(:load_image).with(filename).returns(img)
|
228
357
|
end
|
229
358
|
end
|
@@ -246,7 +375,17 @@ module GameboxAcceptanceSpecHelpers
|
|
246
375
|
def see_text_drawn(text, opts)
|
247
376
|
font = opts[:in]
|
248
377
|
font.calls.should_not be_empty
|
249
|
-
font.calls.first
|
378
|
+
first_call = font.calls.first
|
379
|
+
|
380
|
+
first_call[0].should == :draw
|
381
|
+
first_call[1].to_s.should == text
|
382
|
+
first_call[2].should == opts[:x] if opts[:x]
|
383
|
+
first_call[3].should == opts[:y] if opts[:y]
|
384
|
+
first_call[4].should == opts[:z] if opts[:z]
|
385
|
+
first_call[5].should == opts[:x_scale] if opts[:x_scale]
|
386
|
+
first_call[6].should == opts[:y_scale] if opts[:y_scale]
|
387
|
+
first_call[7].should == opts[:color] if opts[:color]
|
388
|
+
|
250
389
|
font._reset!
|
251
390
|
end
|
252
391
|
|
@@ -290,8 +429,15 @@ module GameboxAcceptanceSpecHelpers
|
|
290
429
|
act.should have_no_attrs(attrs)
|
291
430
|
end
|
292
431
|
|
293
|
-
def update(time)
|
294
|
-
|
432
|
+
def update(time, opts={})
|
433
|
+
step = opts[:step] || time
|
434
|
+
|
435
|
+
num_updates = time / step
|
436
|
+
num_updates.times do
|
437
|
+
gosu.update step
|
438
|
+
end
|
439
|
+
left_over = time % step
|
440
|
+
gosu.update left_over unless left_over == 0
|
295
441
|
end
|
296
442
|
|
297
443
|
def draw
|
@@ -364,6 +510,8 @@ RSpec.configure do |configuration|
|
|
364
510
|
config.fonts_path = "spec/fixtures/"
|
365
511
|
config.music_path = "spec/fixtures/"
|
366
512
|
config.sound_path = "spec/fixtures/"
|
513
|
+
config.game_name = "Some Title!"
|
514
|
+
config.needs_cursor = true
|
367
515
|
config.stages = [:testing]
|
368
516
|
end
|
369
517
|
|
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'gamebox/lib/platform'
|
2
|
+
require "erb"
|
2
3
|
|
3
4
|
desc "Run the game"
|
4
5
|
task :run do |t|
|
5
|
-
sh "bundle exec ruby src/app.rb"
|
6
|
-
end
|
6
|
+
sh "bundle exec ruby #{APP_ROOT}src/app.rb"
|
7
|
+
end
|
7
8
|
task :default => :run
|
8
9
|
|
9
10
|
desc "Report code statistics (KLOCs, etc) from the application"
|
@@ -15,7 +16,7 @@ end
|
|
15
16
|
|
16
17
|
desc "Run the game with debug server"
|
17
18
|
task :debug do |t|
|
18
|
-
sh "ruby src/app.rb -debug-server"
|
19
|
+
sh "bundle exec ruby #{APP_ROOT}src/app.rb -debug-server"
|
19
20
|
end
|
20
21
|
|
21
22
|
desc "Bundle in all required gems"
|
@@ -40,6 +41,21 @@ task :spec do
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
44
|
+
namespace :generate do
|
45
|
+
#didnt't use pluralize in here because I didnt want to include all of active support just for pluralize
|
46
|
+
[:actor, :stage, :behavior].each do |generator_name|
|
47
|
+
desc "generate a new #{generator_name} in the #{ generator_name }s folder"
|
48
|
+
task generator_name, "#{generator_name}_name".to_sym do |t, args|
|
49
|
+
File.open(File.join(File.dirname(__FILE__), "../../..", "/templates/#{generator_name}_template.erb")) do |io|
|
50
|
+
template = ERB.new io.read
|
51
|
+
instance_variable_set("@#{generator_name}_name", args["#{generator_name}_name"])
|
52
|
+
File.open "#{APP_ROOT}src/#{ generator_name}s/#{args["#{generator_name}_name"]}_#{generator_name}.rb", "w" do |out|
|
53
|
+
out.puts template.result binding
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
43
59
|
|
44
60
|
namespace :dist do
|
45
61
|
desc "Build a .app for your gamebox game"
|
@@ -47,7 +63,7 @@ namespace :dist do
|
|
47
63
|
GAME_NAME = "UntitledGame" unless defined?(GAME_NAME)
|
48
64
|
# DL template os x app
|
49
65
|
remote_file = "gosu-mac-wrapper-#{Gosu::VERSION}.tar.gz"
|
50
|
-
mac_build = "build/mac"
|
66
|
+
mac_build = "#{APP_ROOT}build/mac"
|
51
67
|
local_file = "#{mac_build}/#{remote_file}"
|
52
68
|
|
53
69
|
require 'net/http'
|
@@ -55,12 +71,11 @@ namespace :dist do
|
|
55
71
|
# if false
|
56
72
|
Net::HTTP.start("www.libgosu.org") do |http|
|
57
73
|
resp = http.get("/downloads/#{remote_file}")
|
58
|
-
open(local_file, "wb") { |file| file.write(resp.body) }
|
74
|
+
open(local_file, "wb") { |file| file.write(resp.body) }
|
59
75
|
end
|
60
76
|
# end
|
61
77
|
|
62
78
|
# Expand it
|
63
|
-
root = pwd
|
64
79
|
cd mac_build
|
65
80
|
`tar xzf #{remote_file}`
|
66
81
|
app_name = "#{GAME_NAME}.app"
|
@@ -78,10 +93,10 @@ namespace :dist do
|
|
78
93
|
clean_em_out = %w(chingu chingu.rb).map{|it| "#{dot_app_lib}/#{it}"}
|
79
94
|
rm_rf clean_em_out#, :verbose => true, :noop => true
|
80
95
|
|
81
|
-
cd
|
96
|
+
cd APP_ROOT
|
82
97
|
p `bundle --system package`
|
83
98
|
p `bundle package`
|
84
|
-
p `bundle --deployment`
|
99
|
+
p `bundle --deployment`
|
85
100
|
mkdir_p gem_vendored
|
86
101
|
rejects = %w(chipmunk gosu)
|
87
102
|
Dir["vendor/bundle/ruby/**/gems/**/lib"].each do |gemmy|
|
@@ -98,7 +113,7 @@ namespace :dist do
|
|
98
113
|
rejects = %w(spec src/app.rb vendor Main.rb)
|
99
114
|
ok_dirs = %w(config gems src)
|
100
115
|
REQUIRE_ALLS = ok_dirs.map{|dir| Dir.glob("\#{dir}/*.rb").reject{ |f| rejects.any?{|exclude| f.match exclude}}}.flatten
|
101
|
-
|
116
|
+
|
102
117
|
require 'environment'
|
103
118
|
|
104
119
|
GameboxApp.run ARGV, ENV
|
@@ -113,13 +128,13 @@ namespace :dist do
|
|
113
128
|
f.puts plist.gsub "UntitledGame", GAME_NAME
|
114
129
|
end
|
115
130
|
end
|
116
|
-
|
131
|
+
|
117
132
|
task :win do
|
118
133
|
# create dist dir
|
119
|
-
FileUtils.mkdir "dist" unless File.exist? "dist"
|
134
|
+
FileUtils.mkdir "#{APP_ROOT}dist" unless File.exist? "dist"
|
120
135
|
# pull down windows app shell
|
121
136
|
# expand into place
|
122
|
-
sh 'cd dist; wget http://github.com/downloads/shawn42/gamebox/gamebox_app.zip; unzip gamebox_app.zip; mv gamebox_app/* .; rm gamebox_app.zip; rm -rf gamebox_app'
|
137
|
+
sh 'cd #{APP_ROOT}dist; wget http://github.com/downloads/shawn42/gamebox/gamebox_app.zip; unzip gamebox_app.zip; mv gamebox_app/* .; rm gamebox_app.zip; rm -rf gamebox_app'
|
123
138
|
|
124
139
|
# copy config/src/lib/data into dist/src
|
125
140
|
%w{vendor config data }.each do |dir|
|