entityjs 0.2.2 → 0.3.0
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 +7 -6
- data/.rspec +2 -0
- data/README.md +170 -49
- data/Rakefile +9 -0
- data/bin/entityjs +24 -14
- data/entityjs.gemspec +15 -9
- data/lib/entityjs/assets.rb +167 -0
- data/lib/entityjs/command.rb +52 -27
- data/lib/entityjs/commands/build.rb +128 -0
- data/lib/entityjs/commands/comp.rb +74 -0
- data/lib/entityjs/commands/font.rb +73 -0
- data/lib/entityjs/commands/new.rb +59 -0
- data/lib/entityjs/commands/server.rb +54 -0
- data/lib/entityjs/commands/templates.rb +28 -0
- data/lib/entityjs/commands/test.rb +69 -0
- data/lib/entityjs/config.rb +130 -0
- data/lib/entityjs/dirc.rb +184 -0
- data/lib/entityjs/parsers/parse_tmx.rb +41 -0
- data/lib/entityjs/parsers/parse_xml.rb +39 -0
- data/lib/entityjs/version.rb +1 -1
- data/lib/entityjs.rb +53 -0
- data/license.txt +1 -1
- data/public/play.html +122 -0
- data/public/qunit/qunit.css +226 -0
- data/public/qunit/qunit.entity.js +190 -0
- data/public/qunit/qunit.input.js +200 -0
- data/public/qunit/qunit.js +1598 -0
- data/public/qunit/qunit.mock.js +97 -0
- data/public/tests.html +45 -0
- data/spec/javascripts/helpers/accept.png +0 -0
- data/spec/javascripts/helpers/alligator.mp3 +0 -0
- data/spec/javascripts/helpers/alligator.ogg +0 -0
- data/spec/javascripts/helpers/canvas.js +15 -0
- data/spec/javascripts/helpers/entityunit.js +50 -0
- data/spec/javascripts/helpers/factories.js +11 -0
- data/spec/javascripts/helpers/jquery-1.7.1.min.js +4 -0
- data/spec/javascripts/src/core/comp_spec.js +145 -0
- data/spec/javascripts/src/core/entity_spec.js +324 -0
- data/spec/javascripts/src/core/load_spec.js +71 -0
- data/spec/javascripts/src/core/query_spec.js +157 -0
- data/spec/javascripts/src/core/re_spec.js +61 -0
- data/spec/javascripts/src/core/system_spec.js +41 -0
- data/spec/javascripts/src/cycle/draw_spec.js +106 -0
- data/spec/javascripts/src/cycle/tick_spec.js +20 -0
- data/spec/javascripts/src/cycle/update_spec.js +86 -0
- data/spec/javascripts/src/display/align_spec.js +43 -0
- data/spec/javascripts/src/display/circle_spec.js +26 -0
- data/spec/javascripts/src/display/group_spec.js +7 -0
- data/spec/javascripts/src/display/image_spec.js +32 -0
- data/spec/javascripts/src/display/imgtext_spec.js +32 -0
- data/spec/javascripts/src/display/rect_spec.js +13 -0
- data/spec/javascripts/src/display/screen_spec.js +47 -0
- data/spec/javascripts/src/display/sprite_spec.js +28 -0
- data/spec/javascripts/src/display/text_spec.js +30 -0
- data/spec/javascripts/src/input/keyboard_spec.js +67 -0
- data/spec/javascripts/src/input/mouse_spec.js +133 -0
- data/spec/javascripts/src/input/pressed_spec.js +31 -0
- data/spec/javascripts/src/math/bisect_spec.js +59 -0
- data/spec/javascripts/src/math/body_spec.js +30 -0
- data/spec/javascripts/src/math/drag_spec.js +38 -0
- data/spec/javascripts/src/math/force_spec.js +134 -0
- data/spec/javascripts/src/math/hit_spec.js +28 -0
- data/spec/javascripts/src/math/hitmap_spec.js +52 -0
- data/spec/javascripts/src/math/limit_spec.js +35 -0
- data/spec/javascripts/src/math/point_spec.js +57 -0
- data/spec/javascripts/src/math/tile_spec.js +78 -0
- data/spec/javascripts/src/media/sound_spec.js +40 -0
- data/spec/javascripts/src/pattern/automap_spec.js +93 -0
- data/spec/javascripts/src/pattern/flicker_spec.js +66 -0
- data/spec/javascripts/src/pattern/timestep_spec.js +23 -0
- data/spec/javascripts/src/save/storage_spec.js +37 -0
- data/spec/javascripts/src/util/log_spec.js +9 -0
- data/spec/javascripts/src/util/polyfill_spec.js +13 -0
- data/spec/javascripts/src/util/random_spec.js +33 -0
- data/spec/javascripts/src/util/scene_spec.js +52 -0
- data/spec/javascripts/src/util/sheet_spec.js +25 -0
- data/spec/javascripts/src/util/support_spec.js +17 -0
- data/spec/javascripts/support/jasmine.yml +76 -0
- data/spec/javascripts/support/jasmine_config.rb +32 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/lib/entityjs/assets_spec.rb +216 -0
- data/spec/lib/entityjs/command_spec.rb +53 -0
- data/spec/lib/entityjs/commands/build_spec.rb +69 -0
- data/spec/lib/entityjs/commands/comp_spec.rb +45 -0
- data/spec/lib/entityjs/commands/font_spec.rb +7 -0
- data/spec/lib/entityjs/commands/new_spec.rb +20 -0
- data/spec/lib/entityjs/commands/templates_spec.rb +9 -0
- data/spec/lib/entityjs/commands/test_spec.rb +31 -0
- data/spec/lib/entityjs/config_spec.rb +19 -0
- data/spec/lib/entityjs/dirc_spec.rb +83 -0
- data/spec/lib/entityjs/version_spec.rb +9 -0
- data/spec/spec_helper.rb +21 -3
- data/spec/support/factories.rb +19 -0
- data/spec/support/mygame.rb +11 -0
- data/src/core/comp.js +318 -0
- data/src/core/entity.js +549 -0
- data/src/core/load.js +242 -0
- data/src/core/query.js +354 -0
- data/src/core/re.js +74 -0
- data/src/core/system.js +121 -0
- data/src/cycle/draw.js +178 -0
- data/src/cycle/tick.js +25 -0
- data/src/{entityjs/cycle → cycle}/tween.js +60 -60
- data/src/{entityjs/cycle → cycle}/update.js +86 -85
- data/src/{entityjs/cycle → cycle}/wait.js +22 -21
- data/src/{entityjs/cycle → cycle}/worker.js +8 -8
- data/src/display/align.js +45 -0
- data/src/display/circle.js +33 -0
- data/src/{entityjs/display → display}/group.js +62 -62
- data/src/display/image.js +35 -0
- data/src/display/imgtext.js +102 -0
- data/src/{entityjs/display → display}/rect.js +18 -18
- data/src/display/screen.js +57 -0
- data/src/display/sprite.js +54 -0
- data/src/display/text.js +44 -0
- data/src/{entityjs/input → input}/keyboard.js +152 -150
- data/src/input/mouse.js +111 -0
- data/src/input/pressed.js +41 -0
- data/src/{entityjs/input → input}/touch.js +24 -28
- data/src/math/bisect.js +84 -0
- data/src/math/body.js +70 -0
- data/src/{entityjs/math → math}/drag.js +44 -38
- data/src/math/force.js +143 -0
- data/src/math/hit.js +32 -0
- data/src/math/hitmap.js +167 -0
- data/src/math/limit.js +37 -0
- data/src/math/point.js +40 -0
- data/src/math/tile.js +109 -0
- data/src/media/channel.js +93 -0
- data/src/{entityjs/media → media}/playlist.js +4 -4
- data/src/media/sound.js +114 -0
- data/src/{entityjs/net → net}/socket.js +51 -51
- data/src/pattern/automap.js +133 -0
- data/src/{entityjs/pattern → pattern}/flicker.js +206 -213
- data/src/pattern/timestep.js +31 -0
- data/src/{entityjs/save → save}/database.js +6 -6
- data/src/{entityjs/save → save}/storage.js +47 -56
- data/src/{entityjs/util → util}/log.js +17 -25
- data/src/{entityjs/util → util}/polyfill.js +24 -24
- data/src/util/random.js +20 -0
- data/src/util/scene.js +102 -0
- data/src/util/sheet.js +35 -0
- data/src/{entityjs/util → util}/support.js +109 -132
- data/{examples/keys → templates/arrow_keys/assets/images}/arrow.png +0 -0
- data/templates/arrow_keys/config.yml +22 -0
- data/templates/arrow_keys/readme.txt +9 -0
- data/templates/arrow_keys/scripts/display/arrow.js +69 -0
- data/templates/arrow_keys/scripts/init.js +10 -0
- data/templates/arrow_keys/scripts/input/controls.js +35 -0
- data/templates/arrow_keys/scripts/scenes/home.js +20 -0
- data/templates/arrow_keys/scripts/scenes/load.js +57 -0
- data/templates/arrow_keys/tests/display/arrow_test.js +29 -0
- data/templates/arrow_keys/tests/init_test.js +4 -0
- data/templates/arrow_keys/tests/input/controls_test.js +32 -0
- data/templates/arrow_keys/tests/scenes/home_test.js +0 -0
- data/templates/arrow_keys/tests/scenes/load_test.js +16 -0
- data/templates/blank/config.yml +22 -0
- data/templates/blank/readme.txt +79 -0
- data/templates/platform/assets/images/bit.png +0 -0
- data/templates/platform/assets/images/hero.png +0 -0
- data/templates/platform/assets/images/items.png +0 -0
- data/templates/platform/assets/images/tiles.png +0 -0
- data/templates/platform/assets/levels/level1.tmx +44 -0
- data/templates/platform/assets/sounds/coin.mp3 +0 -0
- data/templates/platform/assets/sounds/coin.ogg +0 -0
- data/templates/platform/config.yml +22 -0
- data/templates/platform/readme.txt +87 -0
- data/templates/platform/scripts/display/bit.js +12 -0
- data/templates/platform/scripts/display/hero.js +77 -0
- data/templates/platform/scripts/display/tile.js +2 -0
- data/templates/platform/scripts/display/tsprite.js +17 -0
- data/templates/platform/scripts/init.js +7 -0
- data/templates/platform/scripts/items/coin.js +27 -0
- data/templates/platform/scripts/items/item.js +41 -0
- data/templates/platform/scripts/items/spring.js +25 -0
- data/templates/platform/scripts/scenes/home.js +10 -0
- data/templates/platform/scripts/scenes/load.js +27 -0
- data/templates/platform/scripts/scenes/play.js +31 -0
- data/templates/platform/scripts/util/counter.js +34 -0
- data/templates/platform/scripts/util/level.js +84 -0
- data/templates/platform/tests/display/bit_test.js +7 -0
- data/templates/platform/tests/display/hero_test.js +73 -0
- data/templates/platform/tests/display/tile_test.js +7 -0
- data/templates/platform/tests/display/tsprite_test.js +8 -0
- data/templates/platform/tests/factories.js +30 -0
- data/templates/platform/tests/items/coin_test.js +28 -0
- data/templates/platform/tests/items/item_test.js +36 -0
- data/templates/platform/tests/items/spring_test.js +21 -0
- data/templates/platform/tests/scenes/home_test.js +9 -0
- data/templates/platform/tests/scenes/load_test.js +11 -0
- data/templates/platform/tests/scenes/play_test.js +15 -0
- data/templates/platform/tests/util/counter_test.js +9 -0
- data/templates/platform/tests/util/level_test.js +29 -0
- metadata +249 -97
- data/build/build_debug.bat +0 -1
- data/build/build_min.bat +0 -1
- data/build/config.php +0 -64
- data/build/debug.php +0 -48
- data/build/files.php +0 -74
- data/build/jsmin.php +0 -376
- data/build/min.php +0 -50
- data/changelog.txt +0 -53
- data/examples/keys/keys.html +0 -59
- data/examples/keys/keys.js +0 -148
- data/examples/mouse/mouse.html +0 -58
- data/examples/mouse/mouse.js +0 -60
- data/examples/scenes/home.png +0 -0
- data/examples/scenes/scenes.html +0 -55
- data/examples/scenes/scenes.js +0 -134
- data/examples/scenes/win.png +0 -0
- data/examples/sounds/sound1.mp3 +0 -0
- data/examples/sounds/sound1.ogg +0 -0
- data/examples/sounds/sounds.html +0 -56
- data/examples/sounds/sounds.js +0 -44
- data/examples/style/background.png +0 -0
- data/examples/style/sheet.css +0 -762
- data/examples/tiles/tiles.html +0 -56
- data/examples/tiles/tiles.js +0 -85
- data/examples/tiles/tiles.png +0 -0
- data/lib/blank/config.js +0 -4
- data/lib/blank/config.yml +0 -21
- data/lib/blank/home.js +0 -11
- data/lib/blank/init.js +0 -7
- data/lib/blank/load.js +0 -21
- data/lib/blank/play.html +0 -29
- data/lib/entity.debug.js +0 -52
- data/lib/entity.min.js +0 -184
- data/lib/entityjs/comp.rb +0 -11
- data/lib/entityjs/game.rb +0 -93
- data/lib/entityjs/min.rb +0 -11
- data/lib/entityjs/refresh.rb +0 -14
- data/spec/lib/entityjs/game_spec.rb +0 -11
- data/src/entityjs/core/component.js +0 -306
- data/src/entityjs/core/entity.js +0 -516
- data/src/entityjs/core/load.js +0 -224
- data/src/entityjs/core/query.js +0 -410
- data/src/entityjs/core/re.js +0 -70
- data/src/entityjs/core/system.js +0 -125
- data/src/entityjs/cycle/draw.js +0 -185
- data/src/entityjs/cycle/ticker.js +0 -27
- data/src/entityjs/display/anchor.js +0 -53
- data/src/entityjs/display/bitfont.js +0 -93
- data/src/entityjs/display/bitmap.js +0 -37
- data/src/entityjs/display/circle.js +0 -30
- data/src/entityjs/display/font.js +0 -41
- data/src/entityjs/display/screen.js +0 -46
- data/src/entityjs/display/sprite.js +0 -37
- data/src/entityjs/input/mouse.js +0 -123
- data/src/entityjs/input/pressed.js +0 -81
- data/src/entityjs/math/bind.js +0 -76
- data/src/entityjs/math/bisect.js +0 -69
- data/src/entityjs/math/body.js +0 -39
- data/src/entityjs/math/hitmap.js +0 -165
- data/src/entityjs/math/hittest.js +0 -26
- data/src/entityjs/math/physics.js +0 -142
- data/src/entityjs/math/point.js +0 -57
- data/src/entityjs/math/tile.js +0 -91
- data/src/entityjs/media/channel.js +0 -93
- data/src/entityjs/media/sound.js +0 -110
- data/src/entityjs/pattern/arraymap.js +0 -89
- data/src/entityjs/pattern/timestep.js +0 -34
- data/src/entityjs/util/random.js +0 -38
- data/src/entityjs/util/scene.js +0 -101
- data/src/entityjs/util/sheet.js +0 -51
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'build' do
|
|
4
|
+
|
|
5
|
+
before(:all) do
|
|
6
|
+
setup_mygame
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
after(:all) do
|
|
10
|
+
teardown_mygame
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'should run' do
|
|
14
|
+
#Entityjs::Command.run('build', []).should == 0
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'should run release1' do
|
|
18
|
+
|
|
19
|
+
Entityjs::Assets.stub(:search_datas).and_return(['level.tmx'])
|
|
20
|
+
|
|
21
|
+
Entityjs::Assets.stub(:file_to_json).and_return(Entityjs::Assets.data_to_json(%q(<?xml version="1.0" encoding="UTF-8"?>
|
|
22
|
+
<map version="1.0" orientation="orthogonal" width="40" height="20" tilewidth="25" tileheight="25">
|
|
23
|
+
<tileset firstgid="1" name="tiles" tilewidth="25" tileheight="25">
|
|
24
|
+
<image source="../images/tiles.png" width="200" height="25"/>
|
|
25
|
+
</tileset>
|
|
26
|
+
<layer name="Tile Layer 1" width="40" height="20">
|
|
27
|
+
<data encoding="csv">
|
|
28
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
29
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
30
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
31
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
32
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
33
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
34
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
35
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
36
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
37
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
38
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
39
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
40
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
41
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
42
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
43
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
44
|
+
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
45
|
+
2,2,2,2,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
46
|
+
1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
47
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
48
|
+
</data>
|
|
49
|
+
</layer>
|
|
50
|
+
<objectgroup name="Hero" width="40" height="20">
|
|
51
|
+
<object name="hero" x="43" y="356"/>
|
|
52
|
+
</objectgroup>
|
|
53
|
+
</map>), 'tmx'))
|
|
54
|
+
|
|
55
|
+
name = "release#{rand(999)}"
|
|
56
|
+
Entityjs::Command.run('b', [name]).should == 0
|
|
57
|
+
|
|
58
|
+
dir = Entityjs::Config.builds_folder+"/"+name
|
|
59
|
+
|
|
60
|
+
Dir.exists?(dir).should == true
|
|
61
|
+
|
|
62
|
+
Dir.chdir(dir) do
|
|
63
|
+
contents = IO.read('game.min.js')
|
|
64
|
+
|
|
65
|
+
contents.should match /Tile Layer 1/i
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'Comp' do
|
|
4
|
+
|
|
5
|
+
before(:all) do
|
|
6
|
+
setup_mygame
|
|
7
|
+
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
after(:all) do
|
|
11
|
+
teardown_mygame
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
before do
|
|
15
|
+
@n = "asdf#{rand(9999999)}"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'should create init.js' do
|
|
19
|
+
|
|
20
|
+
Entityjs::Comp.generate("#{@n}.js").should == 0
|
|
21
|
+
|
|
22
|
+
File.exists?("scripts/#{@n}.js").should == true
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'should create init' do
|
|
26
|
+
|
|
27
|
+
Entityjs::Comp.generate(@n).should == 0
|
|
28
|
+
|
|
29
|
+
File.exists?("scripts/#{@n}.js").should == true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'should create init.js in display' do
|
|
33
|
+
|
|
34
|
+
Entityjs::Comp.generate("display/#{@n}").should == 0
|
|
35
|
+
|
|
36
|
+
File.exists?("scripts/display/#{@n}.js").should == true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'should create init.js and items' do
|
|
40
|
+
|
|
41
|
+
Entityjs::Comp.generate("items/#{@n}.js").should == 0
|
|
42
|
+
File.exists?("scripts/items/#{@n}.js").should == true
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'new' do
|
|
4
|
+
|
|
5
|
+
it 'should generate mygame' do
|
|
6
|
+
|
|
7
|
+
Entityjs::New.generate(['mygame']).should == 0
|
|
8
|
+
Dir.pwd.should match /\/EntityJS$/i
|
|
9
|
+
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it 'should generate mygame with template' do
|
|
13
|
+
Entityjs::New.generate(['mygame', 'blank']).should == 0
|
|
14
|
+
Dir.pwd.should match /\/EntityJS$/i
|
|
15
|
+
|
|
16
|
+
File.exists?('mygame/config.yml').should == true
|
|
17
|
+
File.exists?('mygame/readme.txt').should == true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'test' do
|
|
4
|
+
|
|
5
|
+
before(:all) do
|
|
6
|
+
setup_mygame
|
|
7
|
+
@n = rand(999999999999)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
after(:all) do
|
|
11
|
+
teardown_mygame
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'should create rock' do
|
|
15
|
+
Dir.pwd.should_not match /mygame\/mygame/
|
|
16
|
+
Entityjs::Command.run('test', ["rock#{@n}"]).should == 0
|
|
17
|
+
File.exists?("tests/rock#{@n}_test.js").should == true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'should create rock in items' do
|
|
21
|
+
Entityjs::Command.run('test', ["items/rock#{@n}"]).should == 0
|
|
22
|
+
File.exists?("tests/items/rock#{@n}_test.js").should == true
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'should create test with tests' do
|
|
26
|
+
Entityjs::Command.run('test', ["tess#{@n}", "first", "second", "third"]).should == 0
|
|
27
|
+
|
|
28
|
+
File.exists?("tests/tess#{@n}_test.js").should == true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'dirc' do
|
|
4
|
+
|
|
5
|
+
before(:all) do
|
|
6
|
+
setup_mygame
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
after(:all) do
|
|
10
|
+
teardown_mygame
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'should be game dir' do
|
|
14
|
+
Entityjs::Dirc.game?.should == true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'should not be game dir' do
|
|
18
|
+
Dir.chdir(Dir.pwd+'/..')
|
|
19
|
+
Entityjs::Dirc.game?.should == false
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'should return script urls' do
|
|
23
|
+
Entityjs::Dirc.stub(:find_scripts).and_return(['asdfsdf/scripts/asdf.js', 'sfhs/scripts/sdf.js'])
|
|
24
|
+
|
|
25
|
+
Entityjs::Dirc.find_scripts_url.should be_instance_of Array
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'should ignore and order game scripts' do
|
|
29
|
+
Entityjs::Dirc.stub(:find_scripts).and_return(['asdfsdf/scripts/second.js', 'sfhs/scripts/first.js',
|
|
30
|
+
'sdf/scripts/kill.js','sdf/scripts/kill2.js'])
|
|
31
|
+
|
|
32
|
+
out = Entityjs::Dirc.find_scripts_url(['kill'], ['first'])
|
|
33
|
+
|
|
34
|
+
out.first.should match /first/
|
|
35
|
+
out.each do |i|
|
|
36
|
+
i.should_not match /kill|kill2/
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'should return entity src urls' do
|
|
42
|
+
Entityjs::Dirc.stub(:find_entity_src).and_return(['asdfsdf/src/asdf.js', 'sfhs/src/sdf.js'])
|
|
43
|
+
|
|
44
|
+
u = Entityjs::Dirc.find_entity_src_url
|
|
45
|
+
|
|
46
|
+
u.size.should == 2
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'should be alpha ordered' do
|
|
51
|
+
s = Entityjs::Dirc.find_entity_src
|
|
52
|
+
|
|
53
|
+
s[1].should_not match /socket\.js/
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'should ignore entity scripts' do
|
|
58
|
+
Entityjs::Dirc.stub(:find_entity_src).and_return(['asdfsdf/src/first.js', 'sfhs/src/ignore.js', 'sdfds/src/ignore2.js'])
|
|
59
|
+
|
|
60
|
+
out = Entityjs::Dirc.find_entity_src_url(['ignore', 'ignore2'])
|
|
61
|
+
|
|
62
|
+
out.each do |i|
|
|
63
|
+
i.should_not match /ignore|ignore2/
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it 'should return tests' do
|
|
68
|
+
Dir.stub(:'[]').and_return(['C:/asdfsdf/tests/asdf.js', 'C:/sfhs/tests/sdf.js'])
|
|
69
|
+
|
|
70
|
+
Entityjs::Dirc.find_tests_url.first.should_not match /C:/
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'should ignore tests' do
|
|
75
|
+
Dir.stub(:'[]').and_return(['C:/asdfsdf/tests/asdf.js', 'C:/sfhs/tests/sdf.js'])
|
|
76
|
+
|
|
77
|
+
Entityjs::Dirc.find_tests_url(['asdf']).each do |i|
|
|
78
|
+
i.should_not match(/asdf/)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
RSpec.configure do |config|
|
|
2
|
+
# Use color in STDOUT
|
|
3
|
+
config.color_enabled = true
|
|
4
|
+
|
|
5
|
+
# Use color not only in STDOUT but also in pagers and files
|
|
6
|
+
config.tty = true
|
|
7
|
+
|
|
8
|
+
# Use the specified formatter
|
|
9
|
+
#config.formatter = :documentation # :progress, :html, :textmate
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
root = File.dirname(__FILE__)+'/..'
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Dir[root+'/spec/support/*'].each {|f| require f}
|
|
17
|
+
|
|
18
|
+
require "#{root}/lib/entityjs"
|
|
19
|
+
|
|
20
|
+
Dir[root+"/lib/entityjs/*.rb"].each {|file| require file }
|
|
21
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
def factory(type)
|
|
2
|
+
|
|
3
|
+
case type
|
|
4
|
+
when :assets
|
|
5
|
+
|
|
6
|
+
files = []
|
|
7
|
+
|
|
8
|
+
files.push 'assets/levels/bob.json'
|
|
9
|
+
#files.push 'assets/levels/bob.xml'
|
|
10
|
+
files.push 'assets/images/yep.png'
|
|
11
|
+
files.push 'assets/images/bdd.png'
|
|
12
|
+
files.push 'assets/sounds/bdd.mp3'
|
|
13
|
+
return files
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
return nil
|
|
19
|
+
end
|
data/src/core/comp.js
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Quick way to convert sentences to arrays.
|
|
3
|
+
*/
|
|
4
|
+
var __z = function(n, r){
|
|
5
|
+
this._checkFinal();
|
|
6
|
+
|
|
7
|
+
if(!this[n]){
|
|
8
|
+
this[n] = [];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if(re.is(r, 'string')){
|
|
12
|
+
this[n] = this[n].concat(r.split(' '));
|
|
13
|
+
} else {
|
|
14
|
+
this[n] = this[n].concat(r);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return this;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
If component exists, the component will NOT be overwritten.
|
|
22
|
+
|
|
23
|
+
@return component reference
|
|
24
|
+
*/
|
|
25
|
+
re.comp = re.c = function(title){
|
|
26
|
+
|
|
27
|
+
if(!re._c[title]){
|
|
28
|
+
re._c[title] = new re.c.init(title);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return re._c[title];
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
re.c.init = function(name){
|
|
35
|
+
|
|
36
|
+
this.name = name;
|
|
37
|
+
this._re_signals = {};
|
|
38
|
+
this._re_inherits = {};
|
|
39
|
+
this._re_defines = {};
|
|
40
|
+
this._re_final = false;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
p._re_requiress = null;
|
|
45
|
+
|
|
46
|
+
p._re_init = null;
|
|
47
|
+
|
|
48
|
+
p._re_dispose = null;
|
|
49
|
+
|
|
50
|
+
p._re_asserts = null;
|
|
51
|
+
|
|
52
|
+
p._re_interface = null;
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
re.c.init.prototype = {
|
|
56
|
+
|
|
57
|
+
_checkFinal:function(){
|
|
58
|
+
|
|
59
|
+
if(this._re_final){
|
|
60
|
+
throw this.name+' is final.';
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
global:function(){
|
|
65
|
+
throw 'Deprecated use statics'
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
statics:function(obj, value){
|
|
69
|
+
this._checkFinal();
|
|
70
|
+
|
|
71
|
+
if(arguments.length == 1){
|
|
72
|
+
|
|
73
|
+
for(var type in obj){
|
|
74
|
+
this[type] = obj[type];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
} else {
|
|
78
|
+
this[obj] = value;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return this;
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
require:function(){
|
|
85
|
+
throw 'Deprecated use requires'
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
requires:function(r){
|
|
89
|
+
return __z.call(this, '_re_requires', r);
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
/*
|
|
93
|
+
Upon component init it will throw an error
|
|
94
|
+
if one of the listed components exist.
|
|
95
|
+
|
|
96
|
+
This prevents incompatible components from colliding.
|
|
97
|
+
*/
|
|
98
|
+
asserts:function(r){
|
|
99
|
+
return __z.call(this, '_re_asserts', r);
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
/*
|
|
103
|
+
The implement method checks and enforces implmentation
|
|
104
|
+
of the given keys. This can create interface components
|
|
105
|
+
for organization and query searches.
|
|
106
|
+
|
|
107
|
+
Forcing an interface on components will allow instant
|
|
108
|
+
runtime errors and save time.
|
|
109
|
+
|
|
110
|
+
//reccommended to put an i infront to represent an interface
|
|
111
|
+
re.c('ienemy')
|
|
112
|
+
//create an enemy interface
|
|
113
|
+
.interface('moveTo spawn attack runAway');
|
|
114
|
+
|
|
115
|
+
*/
|
|
116
|
+
interfaces:function(r){
|
|
117
|
+
return __z.call(this, '_re_implements', r);
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
/*
|
|
121
|
+
Creates new names for a component.
|
|
122
|
+
|
|
123
|
+
//create a new alias of draw
|
|
124
|
+
re.c('draw')
|
|
125
|
+
.alias('bob');
|
|
126
|
+
|
|
127
|
+
//remove alias
|
|
128
|
+
re.c('draw')
|
|
129
|
+
.alias('-bob');
|
|
130
|
+
|
|
131
|
+
//aliases can even delete components itself
|
|
132
|
+
re.c('draw').alias('-draw');
|
|
133
|
+
|
|
134
|
+
//add two aliases
|
|
135
|
+
re.c('draw').alias('dr bob');
|
|
136
|
+
|
|
137
|
+
*/
|
|
138
|
+
alias:function(s){
|
|
139
|
+
this._checkFinal();
|
|
140
|
+
|
|
141
|
+
var p = s.split(' ');
|
|
142
|
+
|
|
143
|
+
if(p.length > 1){
|
|
144
|
+
|
|
145
|
+
for(var i in p){
|
|
146
|
+
this.alias(p[i]);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return this;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if(s.charAt(0) == '-'){
|
|
153
|
+
//only remove if its a reference
|
|
154
|
+
if(re._c[s.substr(1)] == this){
|
|
155
|
+
delete re._c[s.substr(1)];
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
|
|
159
|
+
re._c[s] = this;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return this;
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
/*
|
|
166
|
+
Adds bind functionality to components.
|
|
167
|
+
All components will automatically call two signals, init and dispose.
|
|
168
|
+
|
|
169
|
+
Init on entity creation and dispose on entitiy disposition.
|
|
170
|
+
|
|
171
|
+
This is useful for 'watch tower' components that keep a list of
|
|
172
|
+
all entities that have its component. Check the cycle directory.
|
|
173
|
+
|
|
174
|
+
*/
|
|
175
|
+
on:function(){
|
|
176
|
+
return re.e.init.prototype.on.apply(this, arguments);
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
off:function(){
|
|
180
|
+
return re.e.init.prototype.off.apply(this, arguments);
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
trigger:function(){
|
|
184
|
+
return re.e.init.prototype.trigger.apply(this, arguments);
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
inherit:function(){
|
|
188
|
+
throw 'Deprecated use defaults'
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
/*
|
|
192
|
+
Default adds onto but doesn't overwrite values.
|
|
193
|
+
*/
|
|
194
|
+
defaults:function(d, value){
|
|
195
|
+
this._checkFinal();
|
|
196
|
+
|
|
197
|
+
if(arguments.length == 1){
|
|
198
|
+
|
|
199
|
+
for(var k in d){
|
|
200
|
+
this._re_inherits[k] = d[k];
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
} else {
|
|
204
|
+
|
|
205
|
+
this._re_inherits[d] = value;
|
|
206
|
+
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return this;
|
|
210
|
+
},
|
|
211
|
+
|
|
212
|
+
/*
|
|
213
|
+
The namespace method is used to put private component variables
|
|
214
|
+
in its own space. This prevents unwanted overrites.
|
|
215
|
+
|
|
216
|
+
re.c('draw')
|
|
217
|
+
.namespace({
|
|
218
|
+
pos:0,
|
|
219
|
+
type:'none'
|
|
220
|
+
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
//or
|
|
224
|
+
re.c('draw')
|
|
225
|
+
.namespace("pos", 0);
|
|
226
|
+
|
|
227
|
+
//Will cast to
|
|
228
|
+
this.draw_pos = 10;
|
|
229
|
+
this.draw_type = 'none';
|
|
230
|
+
|
|
231
|
+
*/
|
|
232
|
+
namespaces:function(obj, value){
|
|
233
|
+
this._checkFinal();
|
|
234
|
+
var name = this.name+'_';
|
|
235
|
+
|
|
236
|
+
if(arguments.length == 1){
|
|
237
|
+
|
|
238
|
+
for(var k in obj){
|
|
239
|
+
this._re_defines[name+k] = obj[k];
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
} else {
|
|
243
|
+
this._re_defines[name+obj] = value;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return this;
|
|
247
|
+
},
|
|
248
|
+
|
|
249
|
+
extend:function(){
|
|
250
|
+
this.defines.apply(this, arguments);
|
|
251
|
+
re.log('warning extend is deprecated, use defines');
|
|
252
|
+
},
|
|
253
|
+
|
|
254
|
+
/*
|
|
255
|
+
defines overrides everything.
|
|
256
|
+
*/
|
|
257
|
+
defines:function(d, value){
|
|
258
|
+
this._checkFinal();
|
|
259
|
+
|
|
260
|
+
if(arguments.length == 1){
|
|
261
|
+
|
|
262
|
+
for(var k in d){
|
|
263
|
+
this._re_defines[k] = d[k];
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
} else {
|
|
267
|
+
this._re_defines[d] = value;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return this;
|
|
271
|
+
},
|
|
272
|
+
|
|
273
|
+
init:function(method){
|
|
274
|
+
this._checkFinal();
|
|
275
|
+
|
|
276
|
+
this._re_init = method;
|
|
277
|
+
|
|
278
|
+
return this;
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
dispose:function(method){
|
|
282
|
+
this._checkFinal();
|
|
283
|
+
|
|
284
|
+
this._re_dispose = method;
|
|
285
|
+
|
|
286
|
+
return this;
|
|
287
|
+
},
|
|
288
|
+
|
|
289
|
+
/*
|
|
290
|
+
The lock method prevents modification to the component.
|
|
291
|
+
|
|
292
|
+
This is handy to stop unexpected changes to a component.
|
|
293
|
+
*/
|
|
294
|
+
lock:function(){
|
|
295
|
+
this._checkFinal();
|
|
296
|
+
|
|
297
|
+
this._re_final = true;
|
|
298
|
+
|
|
299
|
+
return this;
|
|
300
|
+
},
|
|
301
|
+
|
|
302
|
+
/*
|
|
303
|
+
The run method allows a function to be ran in the context
|
|
304
|
+
of the component.
|
|
305
|
+
|
|
306
|
+
Useful to keep everything in one big component.
|
|
307
|
+
*/
|
|
308
|
+
run:function(method){
|
|
309
|
+
this._checkFinal();
|
|
310
|
+
|
|
311
|
+
//re.ready(function(){
|
|
312
|
+
method.call(this);
|
|
313
|
+
//});
|
|
314
|
+
|
|
315
|
+
return this;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
};
|