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.
Files changed (264) hide show
  1. data/.gitignore +7 -6
  2. data/.rspec +2 -0
  3. data/README.md +170 -49
  4. data/Rakefile +9 -0
  5. data/bin/entityjs +24 -14
  6. data/entityjs.gemspec +15 -9
  7. data/lib/entityjs/assets.rb +167 -0
  8. data/lib/entityjs/command.rb +52 -27
  9. data/lib/entityjs/commands/build.rb +128 -0
  10. data/lib/entityjs/commands/comp.rb +74 -0
  11. data/lib/entityjs/commands/font.rb +73 -0
  12. data/lib/entityjs/commands/new.rb +59 -0
  13. data/lib/entityjs/commands/server.rb +54 -0
  14. data/lib/entityjs/commands/templates.rb +28 -0
  15. data/lib/entityjs/commands/test.rb +69 -0
  16. data/lib/entityjs/config.rb +130 -0
  17. data/lib/entityjs/dirc.rb +184 -0
  18. data/lib/entityjs/parsers/parse_tmx.rb +41 -0
  19. data/lib/entityjs/parsers/parse_xml.rb +39 -0
  20. data/lib/entityjs/version.rb +1 -1
  21. data/lib/entityjs.rb +53 -0
  22. data/license.txt +1 -1
  23. data/public/play.html +122 -0
  24. data/public/qunit/qunit.css +226 -0
  25. data/public/qunit/qunit.entity.js +190 -0
  26. data/public/qunit/qunit.input.js +200 -0
  27. data/public/qunit/qunit.js +1598 -0
  28. data/public/qunit/qunit.mock.js +97 -0
  29. data/public/tests.html +45 -0
  30. data/spec/javascripts/helpers/accept.png +0 -0
  31. data/spec/javascripts/helpers/alligator.mp3 +0 -0
  32. data/spec/javascripts/helpers/alligator.ogg +0 -0
  33. data/spec/javascripts/helpers/canvas.js +15 -0
  34. data/spec/javascripts/helpers/entityunit.js +50 -0
  35. data/spec/javascripts/helpers/factories.js +11 -0
  36. data/spec/javascripts/helpers/jquery-1.7.1.min.js +4 -0
  37. data/spec/javascripts/src/core/comp_spec.js +145 -0
  38. data/spec/javascripts/src/core/entity_spec.js +324 -0
  39. data/spec/javascripts/src/core/load_spec.js +71 -0
  40. data/spec/javascripts/src/core/query_spec.js +157 -0
  41. data/spec/javascripts/src/core/re_spec.js +61 -0
  42. data/spec/javascripts/src/core/system_spec.js +41 -0
  43. data/spec/javascripts/src/cycle/draw_spec.js +106 -0
  44. data/spec/javascripts/src/cycle/tick_spec.js +20 -0
  45. data/spec/javascripts/src/cycle/update_spec.js +86 -0
  46. data/spec/javascripts/src/display/align_spec.js +43 -0
  47. data/spec/javascripts/src/display/circle_spec.js +26 -0
  48. data/spec/javascripts/src/display/group_spec.js +7 -0
  49. data/spec/javascripts/src/display/image_spec.js +32 -0
  50. data/spec/javascripts/src/display/imgtext_spec.js +32 -0
  51. data/spec/javascripts/src/display/rect_spec.js +13 -0
  52. data/spec/javascripts/src/display/screen_spec.js +47 -0
  53. data/spec/javascripts/src/display/sprite_spec.js +28 -0
  54. data/spec/javascripts/src/display/text_spec.js +30 -0
  55. data/spec/javascripts/src/input/keyboard_spec.js +67 -0
  56. data/spec/javascripts/src/input/mouse_spec.js +133 -0
  57. data/spec/javascripts/src/input/pressed_spec.js +31 -0
  58. data/spec/javascripts/src/math/bisect_spec.js +59 -0
  59. data/spec/javascripts/src/math/body_spec.js +30 -0
  60. data/spec/javascripts/src/math/drag_spec.js +38 -0
  61. data/spec/javascripts/src/math/force_spec.js +134 -0
  62. data/spec/javascripts/src/math/hit_spec.js +28 -0
  63. data/spec/javascripts/src/math/hitmap_spec.js +52 -0
  64. data/spec/javascripts/src/math/limit_spec.js +35 -0
  65. data/spec/javascripts/src/math/point_spec.js +57 -0
  66. data/spec/javascripts/src/math/tile_spec.js +78 -0
  67. data/spec/javascripts/src/media/sound_spec.js +40 -0
  68. data/spec/javascripts/src/pattern/automap_spec.js +93 -0
  69. data/spec/javascripts/src/pattern/flicker_spec.js +66 -0
  70. data/spec/javascripts/src/pattern/timestep_spec.js +23 -0
  71. data/spec/javascripts/src/save/storage_spec.js +37 -0
  72. data/spec/javascripts/src/util/log_spec.js +9 -0
  73. data/spec/javascripts/src/util/polyfill_spec.js +13 -0
  74. data/spec/javascripts/src/util/random_spec.js +33 -0
  75. data/spec/javascripts/src/util/scene_spec.js +52 -0
  76. data/spec/javascripts/src/util/sheet_spec.js +25 -0
  77. data/spec/javascripts/src/util/support_spec.js +17 -0
  78. data/spec/javascripts/support/jasmine.yml +76 -0
  79. data/spec/javascripts/support/jasmine_config.rb +32 -0
  80. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  81. data/spec/lib/entityjs/assets_spec.rb +216 -0
  82. data/spec/lib/entityjs/command_spec.rb +53 -0
  83. data/spec/lib/entityjs/commands/build_spec.rb +69 -0
  84. data/spec/lib/entityjs/commands/comp_spec.rb +45 -0
  85. data/spec/lib/entityjs/commands/font_spec.rb +7 -0
  86. data/spec/lib/entityjs/commands/new_spec.rb +20 -0
  87. data/spec/lib/entityjs/commands/templates_spec.rb +9 -0
  88. data/spec/lib/entityjs/commands/test_spec.rb +31 -0
  89. data/spec/lib/entityjs/config_spec.rb +19 -0
  90. data/spec/lib/entityjs/dirc_spec.rb +83 -0
  91. data/spec/lib/entityjs/version_spec.rb +9 -0
  92. data/spec/spec_helper.rb +21 -3
  93. data/spec/support/factories.rb +19 -0
  94. data/spec/support/mygame.rb +11 -0
  95. data/src/core/comp.js +318 -0
  96. data/src/core/entity.js +549 -0
  97. data/src/core/load.js +242 -0
  98. data/src/core/query.js +354 -0
  99. data/src/core/re.js +74 -0
  100. data/src/core/system.js +121 -0
  101. data/src/cycle/draw.js +178 -0
  102. data/src/cycle/tick.js +25 -0
  103. data/src/{entityjs/cycle → cycle}/tween.js +60 -60
  104. data/src/{entityjs/cycle → cycle}/update.js +86 -85
  105. data/src/{entityjs/cycle → cycle}/wait.js +22 -21
  106. data/src/{entityjs/cycle → cycle}/worker.js +8 -8
  107. data/src/display/align.js +45 -0
  108. data/src/display/circle.js +33 -0
  109. data/src/{entityjs/display → display}/group.js +62 -62
  110. data/src/display/image.js +35 -0
  111. data/src/display/imgtext.js +102 -0
  112. data/src/{entityjs/display → display}/rect.js +18 -18
  113. data/src/display/screen.js +57 -0
  114. data/src/display/sprite.js +54 -0
  115. data/src/display/text.js +44 -0
  116. data/src/{entityjs/input → input}/keyboard.js +152 -150
  117. data/src/input/mouse.js +111 -0
  118. data/src/input/pressed.js +41 -0
  119. data/src/{entityjs/input → input}/touch.js +24 -28
  120. data/src/math/bisect.js +84 -0
  121. data/src/math/body.js +70 -0
  122. data/src/{entityjs/math → math}/drag.js +44 -38
  123. data/src/math/force.js +143 -0
  124. data/src/math/hit.js +32 -0
  125. data/src/math/hitmap.js +167 -0
  126. data/src/math/limit.js +37 -0
  127. data/src/math/point.js +40 -0
  128. data/src/math/tile.js +109 -0
  129. data/src/media/channel.js +93 -0
  130. data/src/{entityjs/media → media}/playlist.js +4 -4
  131. data/src/media/sound.js +114 -0
  132. data/src/{entityjs/net → net}/socket.js +51 -51
  133. data/src/pattern/automap.js +133 -0
  134. data/src/{entityjs/pattern → pattern}/flicker.js +206 -213
  135. data/src/pattern/timestep.js +31 -0
  136. data/src/{entityjs/save → save}/database.js +6 -6
  137. data/src/{entityjs/save → save}/storage.js +47 -56
  138. data/src/{entityjs/util → util}/log.js +17 -25
  139. data/src/{entityjs/util → util}/polyfill.js +24 -24
  140. data/src/util/random.js +20 -0
  141. data/src/util/scene.js +102 -0
  142. data/src/util/sheet.js +35 -0
  143. data/src/{entityjs/util → util}/support.js +109 -132
  144. data/{examples/keys → templates/arrow_keys/assets/images}/arrow.png +0 -0
  145. data/templates/arrow_keys/config.yml +22 -0
  146. data/templates/arrow_keys/readme.txt +9 -0
  147. data/templates/arrow_keys/scripts/display/arrow.js +69 -0
  148. data/templates/arrow_keys/scripts/init.js +10 -0
  149. data/templates/arrow_keys/scripts/input/controls.js +35 -0
  150. data/templates/arrow_keys/scripts/scenes/home.js +20 -0
  151. data/templates/arrow_keys/scripts/scenes/load.js +57 -0
  152. data/templates/arrow_keys/tests/display/arrow_test.js +29 -0
  153. data/templates/arrow_keys/tests/init_test.js +4 -0
  154. data/templates/arrow_keys/tests/input/controls_test.js +32 -0
  155. data/templates/arrow_keys/tests/scenes/home_test.js +0 -0
  156. data/templates/arrow_keys/tests/scenes/load_test.js +16 -0
  157. data/templates/blank/config.yml +22 -0
  158. data/templates/blank/readme.txt +79 -0
  159. data/templates/platform/assets/images/bit.png +0 -0
  160. data/templates/platform/assets/images/hero.png +0 -0
  161. data/templates/platform/assets/images/items.png +0 -0
  162. data/templates/platform/assets/images/tiles.png +0 -0
  163. data/templates/platform/assets/levels/level1.tmx +44 -0
  164. data/templates/platform/assets/sounds/coin.mp3 +0 -0
  165. data/templates/platform/assets/sounds/coin.ogg +0 -0
  166. data/templates/platform/config.yml +22 -0
  167. data/templates/platform/readme.txt +87 -0
  168. data/templates/platform/scripts/display/bit.js +12 -0
  169. data/templates/platform/scripts/display/hero.js +77 -0
  170. data/templates/platform/scripts/display/tile.js +2 -0
  171. data/templates/platform/scripts/display/tsprite.js +17 -0
  172. data/templates/platform/scripts/init.js +7 -0
  173. data/templates/platform/scripts/items/coin.js +27 -0
  174. data/templates/platform/scripts/items/item.js +41 -0
  175. data/templates/platform/scripts/items/spring.js +25 -0
  176. data/templates/platform/scripts/scenes/home.js +10 -0
  177. data/templates/platform/scripts/scenes/load.js +27 -0
  178. data/templates/platform/scripts/scenes/play.js +31 -0
  179. data/templates/platform/scripts/util/counter.js +34 -0
  180. data/templates/platform/scripts/util/level.js +84 -0
  181. data/templates/platform/tests/display/bit_test.js +7 -0
  182. data/templates/platform/tests/display/hero_test.js +73 -0
  183. data/templates/platform/tests/display/tile_test.js +7 -0
  184. data/templates/platform/tests/display/tsprite_test.js +8 -0
  185. data/templates/platform/tests/factories.js +30 -0
  186. data/templates/platform/tests/items/coin_test.js +28 -0
  187. data/templates/platform/tests/items/item_test.js +36 -0
  188. data/templates/platform/tests/items/spring_test.js +21 -0
  189. data/templates/platform/tests/scenes/home_test.js +9 -0
  190. data/templates/platform/tests/scenes/load_test.js +11 -0
  191. data/templates/platform/tests/scenes/play_test.js +15 -0
  192. data/templates/platform/tests/util/counter_test.js +9 -0
  193. data/templates/platform/tests/util/level_test.js +29 -0
  194. metadata +249 -97
  195. data/build/build_debug.bat +0 -1
  196. data/build/build_min.bat +0 -1
  197. data/build/config.php +0 -64
  198. data/build/debug.php +0 -48
  199. data/build/files.php +0 -74
  200. data/build/jsmin.php +0 -376
  201. data/build/min.php +0 -50
  202. data/changelog.txt +0 -53
  203. data/examples/keys/keys.html +0 -59
  204. data/examples/keys/keys.js +0 -148
  205. data/examples/mouse/mouse.html +0 -58
  206. data/examples/mouse/mouse.js +0 -60
  207. data/examples/scenes/home.png +0 -0
  208. data/examples/scenes/scenes.html +0 -55
  209. data/examples/scenes/scenes.js +0 -134
  210. data/examples/scenes/win.png +0 -0
  211. data/examples/sounds/sound1.mp3 +0 -0
  212. data/examples/sounds/sound1.ogg +0 -0
  213. data/examples/sounds/sounds.html +0 -56
  214. data/examples/sounds/sounds.js +0 -44
  215. data/examples/style/background.png +0 -0
  216. data/examples/style/sheet.css +0 -762
  217. data/examples/tiles/tiles.html +0 -56
  218. data/examples/tiles/tiles.js +0 -85
  219. data/examples/tiles/tiles.png +0 -0
  220. data/lib/blank/config.js +0 -4
  221. data/lib/blank/config.yml +0 -21
  222. data/lib/blank/home.js +0 -11
  223. data/lib/blank/init.js +0 -7
  224. data/lib/blank/load.js +0 -21
  225. data/lib/blank/play.html +0 -29
  226. data/lib/entity.debug.js +0 -52
  227. data/lib/entity.min.js +0 -184
  228. data/lib/entityjs/comp.rb +0 -11
  229. data/lib/entityjs/game.rb +0 -93
  230. data/lib/entityjs/min.rb +0 -11
  231. data/lib/entityjs/refresh.rb +0 -14
  232. data/spec/lib/entityjs/game_spec.rb +0 -11
  233. data/src/entityjs/core/component.js +0 -306
  234. data/src/entityjs/core/entity.js +0 -516
  235. data/src/entityjs/core/load.js +0 -224
  236. data/src/entityjs/core/query.js +0 -410
  237. data/src/entityjs/core/re.js +0 -70
  238. data/src/entityjs/core/system.js +0 -125
  239. data/src/entityjs/cycle/draw.js +0 -185
  240. data/src/entityjs/cycle/ticker.js +0 -27
  241. data/src/entityjs/display/anchor.js +0 -53
  242. data/src/entityjs/display/bitfont.js +0 -93
  243. data/src/entityjs/display/bitmap.js +0 -37
  244. data/src/entityjs/display/circle.js +0 -30
  245. data/src/entityjs/display/font.js +0 -41
  246. data/src/entityjs/display/screen.js +0 -46
  247. data/src/entityjs/display/sprite.js +0 -37
  248. data/src/entityjs/input/mouse.js +0 -123
  249. data/src/entityjs/input/pressed.js +0 -81
  250. data/src/entityjs/math/bind.js +0 -76
  251. data/src/entityjs/math/bisect.js +0 -69
  252. data/src/entityjs/math/body.js +0 -39
  253. data/src/entityjs/math/hitmap.js +0 -165
  254. data/src/entityjs/math/hittest.js +0 -26
  255. data/src/entityjs/math/physics.js +0 -142
  256. data/src/entityjs/math/point.js +0 -57
  257. data/src/entityjs/math/tile.js +0 -91
  258. data/src/entityjs/media/channel.js +0 -93
  259. data/src/entityjs/media/sound.js +0 -110
  260. data/src/entityjs/pattern/arraymap.js +0 -89
  261. data/src/entityjs/pattern/timestep.js +0 -34
  262. data/src/entityjs/util/random.js +0 -38
  263. data/src/entityjs/util/scene.js +0 -101
  264. data/src/entityjs/util/sheet.js +0 -51
@@ -0,0 +1,128 @@
1
+
2
+
3
+ require 'fileutils'
4
+
5
+ module Entityjs
6
+
7
+ class Build
8
+
9
+ def self.generate(name=nil)
10
+
11
+ if !Dirc.game?
12
+ return 2
13
+ end
14
+
15
+ Config.instance.reload
16
+
17
+ license = Config.instance.license
18
+
19
+ if name.nil? || name.empty?
20
+ date = Time.now.strftime('%s')
21
+ name = "build-#{date}"
22
+ else
23
+ name = name.first
24
+ end
25
+
26
+ builds_folder = Config.builds_folder
27
+ assets_folder = Config.assets_folder
28
+ images_folder = Config.images_folder
29
+ sounds_folder = Config.sounds_folder
30
+ scripts_folder = Config.scripts_folder
31
+
32
+ #build if it doesn't exist
33
+ Dirc.create_dir('builds', true)
34
+
35
+ #create new directory
36
+ if Dir.exists?(name)
37
+ return 3
38
+ end
39
+
40
+ assets_root = Dirc.game_root+'/'
41
+
42
+ Dir.mkdir(name)
43
+ Dir.chdir(name)
44
+
45
+ #copy images and sounds into assets
46
+ Dirc.create_dir(assets_folder)
47
+ Dir.chdir(assets_folder) do
48
+
49
+ if Dir.exists? assets_root+images_folder
50
+ puts "Copying images"
51
+ FileUtils.cp_r assets_root+images_folder, 'images'
52
+ end
53
+
54
+ if Dir.exists? assets_root+sounds_folder
55
+ puts "Copying sounds"
56
+ FileUtils.cp_r assets_root+sounds_folder, 'sounds'
57
+ end
58
+
59
+ end
60
+
61
+ #append all files into one big file
62
+ puts "Compiling code"
63
+ out = ''
64
+
65
+ scripts = Dirc.find_scripts(Config.instance.scripts_ignore, Config.instance.scripts_order)
66
+ entities = Dirc.find_entity_src(Config.instance.entity_ignore)
67
+
68
+ entities.each do |i|
69
+ out += "\n"
70
+ out += IO.read(i)
71
+ out += "\n"
72
+ end
73
+
74
+ #add version
75
+ out = out.gsub(/\$VERSION/, Entityjs::VERSION)
76
+
77
+ scripts.each do |i|
78
+ out += "\n"
79
+ out += IO.read(i)
80
+ out += "\n"
81
+ end
82
+
83
+ #add levels, animations etc data
84
+ out += Assets.to_js
85
+
86
+
87
+ #minify
88
+ puts "Almost done..."
89
+
90
+ #save
91
+ File.open('game.min.js', 'w') do |f|
92
+ f.write(license)
93
+
94
+ f.write(Uglifier.compile(out, :copyright=>false))
95
+
96
+ f.close
97
+ end
98
+
99
+
100
+ #create play.html
101
+ puts "Creating play page"
102
+
103
+ File.open('play.html', 'w') do |f|
104
+ f.write(%Q(<!DOCTYPE html>
105
+ <html>
106
+ <head>
107
+ <script src='game.min.js' type='text/javascript'></script>
108
+ </head>
109
+ <body>
110
+ <canvas id='#{Config.instance.canvas_id}' width='#{Config.instance.width}' height='#{Config.instance.height}'>Error browser does not support canvas element.</canvas>
111
+ </body>
112
+ </html>
113
+ ))
114
+ f.close
115
+ end
116
+
117
+ puts "Successfully built!"
118
+ puts "Build is at"
119
+ puts " #{builds_folder}/#{name}"
120
+
121
+ Dirc.to_game_root
122
+
123
+ return 0
124
+ end
125
+
126
+ end
127
+
128
+ end
@@ -0,0 +1,74 @@
1
+ module Entityjs
2
+
3
+ class Comp
4
+
5
+ def self.generate(name)
6
+ if !Dirc.game?
7
+ return 2
8
+ end
9
+
10
+ if name.class == Array
11
+ name = name.first
12
+ end
13
+
14
+ #remove extra slash
15
+ if name[0] == '/'
16
+ name = name[1..-1]
17
+ end
18
+
19
+ filename = name
20
+ if name.index('.').nil?
21
+ filename += '.js'
22
+ end
23
+
24
+ dir = Config.scripts_folder
25
+
26
+ Dirc.create_dir(dir, true)
27
+
28
+ #create folder if they don't exist
29
+ folders = filename.split('/')
30
+ filename = folders.pop
31
+
32
+ if folders.size > 0
33
+ folders.each do |i|
34
+ Dirc.create_dir(i, true)
35
+ end
36
+
37
+ end
38
+
39
+ if File.exists?(filename)
40
+ return 3
41
+ end
42
+
43
+ comp_name = filename.split('.').shift
44
+
45
+ File.open(filename, 'w') do |f|
46
+
47
+ f.write(%Q(re.c\('#{comp_name}'\)
48
+ .requires\(''\)
49
+ .defines\({
50
+
51
+ }\)
52
+ .init\(function\(\){
53
+
54
+ }\)
55
+ .dispose\(function\(\){
56
+
57
+ }\);
58
+ ))
59
+
60
+ f.close
61
+ end
62
+
63
+ puts "Created comp: #{dir}/#{filename}"
64
+
65
+ Dir.chdir(Dirc.game_root)
66
+
67
+ Entityjs::Command.run('test', [name])
68
+
69
+ return 0
70
+ end
71
+
72
+ end
73
+
74
+ end
@@ -0,0 +1,73 @@
1
+ module Entityjs
2
+
3
+ class Font
4
+
5
+ def self.generate(name)
6
+ if !Dirc.game?
7
+ return 2
8
+ end
9
+ puts 'not implemented yet'
10
+ return 0
11
+
12
+ tests = []
13
+
14
+ if name.class == Array
15
+ tests = name[1..-1]
16
+
17
+ name = name.first
18
+ end
19
+
20
+ #remove extra slash
21
+ if name[0] == '/'
22
+ name = name[1..-1]
23
+ end
24
+
25
+ filename = name
26
+ if name.index('.').nil?
27
+ filename += '_test.js'
28
+ end
29
+
30
+ dir = Config.tests_folder
31
+
32
+ Dirc.change_dir(dir)
33
+
34
+ #create folder if they don't exist
35
+ folders = filename.split('/')
36
+ filename = folders.pop
37
+
38
+ if folders.size > 0
39
+ folders.each do |i|
40
+ if !Dir.exists?(i)
41
+ Dir.mkdir(i)
42
+ end
43
+
44
+ Dirc.change_dir(i)
45
+ end
46
+
47
+ end
48
+
49
+ if File.exists?(filename)
50
+ return 3
51
+ end
52
+
53
+ File.open(filename, 'w') do |f|
54
+
55
+ f.write("module('#{name}');")
56
+
57
+ tests.each do |i|
58
+ f.write("\n\ntest('#{i}', function(){\n\t\n\t\n\t\n});")
59
+ end
60
+
61
+ f.close
62
+ end
63
+
64
+ puts "Created test: tests/#{filename}"
65
+
66
+ Dir.chdir(Dirc.game_root)
67
+
68
+ return 0
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -0,0 +1,59 @@
1
+ require 'fileutils'
2
+
3
+ module Entityjs
4
+
5
+ class New
6
+
7
+ def self.generate(args)
8
+ name = args.first || 'entityjs_game'
9
+ template_name = args[1] || Entityjs::default_template
10
+
11
+ template = Entityjs::template_path(template_name)
12
+
13
+ if template.nil?
14
+ template = Entityjs::template_path(Entityjs::default_template)
15
+ puts "Template #{template_name} not found!"
16
+ puts "Using default #{Entityjs::default_template} template"
17
+ end
18
+
19
+ Dirc.create_dir(name)
20
+
21
+ #copy template contents
22
+ FileUtils.cp_r template, name
23
+
24
+ puts "Created: #{name}"
25
+ puts "Template: #{template_name}"
26
+ puts "Path: ./#{name}"
27
+ puts "Version: #{Entityjs::VERSION}"
28
+ puts "Website: http://entityjs.com"
29
+ puts ""
30
+
31
+ Dirc.change_dir(name)
32
+
33
+ #assets
34
+ Dirc.create_dir('assets',true)
35
+ Dirc.create_dir('images')
36
+ Dirc.create_dir('sounds')
37
+ Dirc.change_dir('..')
38
+
39
+ #builds
40
+ Dirc.create_dir('builds')
41
+
42
+ #scripts
43
+ Dirc.create_dir('scripts', true)
44
+
45
+ Dirc.create_dir('plugins')
46
+ Dirc.change_dir('..')
47
+
48
+ #tests
49
+ Dirc.create_dir('tests')
50
+
51
+ #move back to root
52
+ Dirc.change_dir('..')
53
+
54
+ return 0
55
+ end
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,54 @@
1
+ module Entityjs
2
+
3
+ class Server < Sinatra::Base
4
+
5
+ def self.run(args)
6
+
7
+ if !Dirc.game?
8
+ return 2
9
+ end
10
+
11
+ set :public_folder, Dirc.game_root
12
+
13
+ puts "Your game is here:"
14
+ puts " http://localhost:2345/"
15
+ puts ""
16
+ puts "Your tests are here:"
17
+ puts " http://localhost:2345/tests"
18
+ puts ""
19
+
20
+ Entityjs::Server.run! :port=>2345
21
+ end
22
+
23
+ get '/' do
24
+
25
+ Assets.set_vars(IO.read("#{Entityjs::root}/public/play.html"))
26
+
27
+ end
28
+
29
+ get '/tests' do
30
+
31
+ Assets.set_vars(IO.read("#{Entityjs::root}/public/tests.html"), true)
32
+
33
+ end
34
+
35
+ get '/entityjs/*' do
36
+ content_type 'text/javascript'
37
+ IO.read(Entityjs::root+'/src/'+params[:splat].first)
38
+ end
39
+
40
+ get '/qunit/*' do
41
+ file = params[:splat].first
42
+ if file.match /\.js$/
43
+ content_type 'text/javascript'
44
+ else
45
+ content_type 'text/css'
46
+ end
47
+
48
+ IO.read(Entityjs::root+"/public/qunit/#{file}")
49
+ end
50
+
51
+
52
+ end
53
+
54
+ end
@@ -0,0 +1,28 @@
1
+ module Entityjs
2
+
3
+ class Templates
4
+
5
+ def self.generate(args)
6
+
7
+ puts "Available Templates:"
8
+ temps = Dir[Entityjs::root+'/templates/*'].sort
9
+
10
+ temps.each do |i|
11
+ k = i.split('/').pop
12
+ default = ''
13
+
14
+ if k == Entityjs::default_template
15
+ default = " -default"
16
+ end
17
+ puts " #{k}#{default}"
18
+ end
19
+
20
+ puts ""
21
+ puts "Run 'entityjs new [name] [template]'"
22
+
23
+ return 0
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,69 @@
1
+ module Entityjs
2
+
3
+ class Test
4
+
5
+ def self.generate(name)
6
+ if !Dirc.game?
7
+ return 2
8
+ end
9
+
10
+ tests = []
11
+
12
+ if name.class == Array
13
+ tests = name[1..-1]
14
+
15
+ name = name.first
16
+ end
17
+
18
+ #remove extra slash
19
+ if name[0] == '/'
20
+ name = name[1..-1]
21
+ end
22
+
23
+ filename = name
24
+ if name.index('.').nil?
25
+ filename += '_test.js'
26
+ end
27
+
28
+ dir = Config.tests_folder
29
+
30
+ Dirc.create_dir(dir, true)
31
+
32
+ #create folder if they don't exist
33
+ folders = filename.split('/')
34
+ filename = folders.pop
35
+
36
+ if folders.size > 0
37
+ folders.each do |i|
38
+ Dirc.create_dir(i, true)
39
+ end
40
+
41
+ end
42
+
43
+ if File.exists?(filename)
44
+ return 3
45
+ end
46
+
47
+ test_name = filename.split('_test.').shift
48
+
49
+ File.open(filename, 'w') do |f|
50
+
51
+ f.write("module('#{test_name}');")
52
+
53
+ tests.each do |i|
54
+ f.write("\n\ntest('#{i}', function(){\n\t\n\t\n\t\n});")
55
+ end
56
+
57
+ f.close
58
+ end
59
+
60
+ puts "Created test: tests/#{filename}"
61
+
62
+ Dir.chdir(Dirc.game_root)
63
+
64
+ return 0
65
+ end
66
+
67
+ end
68
+
69
+ end
@@ -0,0 +1,130 @@
1
+ require 'yaml'
2
+
3
+ module Entityjs
4
+
5
+ class Config
6
+
7
+ def self.file_name
8
+ 'config.yml'
9
+ end
10
+
11
+ def self.assets_folder
12
+ return 'assets'
13
+ end
14
+
15
+ def self.tests_folder
16
+ 'tests'
17
+ end
18
+
19
+ def self.scripts_folder
20
+ return 'scripts'
21
+ end
22
+
23
+ def self.builds_folder
24
+ return 'builds'
25
+ end
26
+
27
+ def self.sounds_folder
28
+ self.assets_folder+'/sounds'
29
+ end
30
+
31
+ def self.images_folder
32
+ self.assets_folder+'/images'
33
+ end
34
+
35
+ def self.instance
36
+ if @instance.nil?
37
+ @instance = Config.new
38
+ end
39
+
40
+ return @instance
41
+ end
42
+
43
+ def reload
44
+ if File.exists?(Config.file_name)
45
+ @yml = YAML::load(File.open(Config.file_name))
46
+ end
47
+ end
48
+
49
+ def initialize
50
+ self.reload
51
+ end
52
+
53
+ def width
54
+ if @yml.nil?
55
+ return 500
56
+ end
57
+ @yml['width']
58
+ end
59
+
60
+ def height
61
+ if @yml.nil?
62
+ return 400
63
+ end
64
+ @yml['height']
65
+ end
66
+
67
+ def scripts_ignore
68
+ if @yml.nil?
69
+ return []
70
+ end
71
+
72
+ y = @yml['scripts-ignore']
73
+ if !y.nil?
74
+ y.split(" ")
75
+ end
76
+ end
77
+
78
+ def scripts_order
79
+ if @yml.nil?
80
+ return []
81
+ end
82
+
83
+ y = @yml['order']
84
+ if !y.nil?
85
+ y.split(" ")
86
+ end
87
+ end
88
+
89
+ def tests_ignore
90
+ if @yml.nil?
91
+ return []
92
+ end
93
+
94
+ y = @yml['tests-ignore']
95
+ if !y.nil?
96
+ y.split(" ")
97
+ end
98
+ end
99
+
100
+ def entity_ignore
101
+ if @yml.nil?
102
+ return []
103
+ end
104
+
105
+ y = @yml['entity-ignore']
106
+ if !y.nil?
107
+ y.split(" ")
108
+ end
109
+ end
110
+
111
+ def canvas_id
112
+ if @yml.nil?
113
+ return 'game-canvas'
114
+ end
115
+
116
+ @yml['canvas-id']
117
+ end
118
+
119
+ def license
120
+ contents = IO.read(Entityjs::root+'/license.txt')
121
+
122
+ contents = contents.sub(/\$VERSION/, Entityjs::VERSION)
123
+
124
+ return contents+"\n"
125
+ end
126
+
127
+
128
+ end
129
+
130
+ end