entityjs 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -3,11 +3,15 @@ An HTML5 javascript game engine utlizing the entity-component design. Write high
3
3
 
4
4
  [EntityJS Website](http://entityjs.com) | [Demos](http://entityjs.com/demos) | [Tutorials](http://entityjs.com/tutorials) | [API](http://entityjs.com/api)
5
5
 
6
- ## Version 0.3.2
6
+ ## Version 0.4.2
7
7
 
8
- * Coffeescript is now supported.
9
- * Assets directory is now used for external loading only.
10
- * Scripts directory now accepts, tmx, xml, json and coffee files.
8
+ * Stylesheets are now automatically included. Place css in the styles folder.
9
+ * Factory method added to comp.
10
+ * El comp can place elements on top of canvas.
11
+ * Converted config.yml to game.json.
12
+ * Attributes inside game.json are available in js.
13
+ * Use `entityjs html` make changes to the html.
14
+ * Builds folder removed and replaced with a single build.
11
15
 
12
16
  ## API
13
17
  Currently the [API](http://entityjs.com/api) is out of date. It will slowly be updated everyday.
@@ -83,7 +87,7 @@ To play visit:
83
87
  `localhost:2345`
84
88
 
85
89
  To run tests visit:
86
- `localhost:2345/tests`
90
+ `localhost:2345/test`
87
91
 
88
92
  Assets are located here:
89
93
  `localhost:2345/assets/*name`
@@ -96,24 +100,16 @@ View [all commands](/bendangelo/EntityJS/wiki/commands)
96
100
  * Images - Add any images here and retrieve them with `re.assets.images`
97
101
  * Sounds - Add any sounds and retrieve them with `re.assets.sounds`
98
102
 
99
- * Builds - Contains all finished builds
103
+ * Build - Contains built game
100
104
 
101
105
  * Scripts - Contains all js, coffee sources. Xml, tmx and json files will be converted into js.
102
106
  * Plugins - Contains minified scripts for plugin play.
103
107
 
104
108
  * Tests - Contains test files to run in [QUnit](http://docs.jquery.com/QUnit)
105
109
 
106
- * config.yml - Optional, simple configuration.
107
- * readme.txt - Optional, simple description of the game.
108
-
109
- ## Changes In V0.3
110
-
111
- * `Inherit()` is now `defaults()`
112
- * `Extend()` is now `defines()`
113
- * `Inherit()` on entities is now `def()`
114
- * `Extend()` on entities is now `attr()`
110
+ * Styles - Contains all css to be included. Will support sass and others later on.
115
111
 
116
- There are many more name changes, make sure to read the component source code for help. Most components have a usage example to help you along while the API / tutorials get up to date.
112
+ * game.json - Optional, configurate scripts order, ignore certain files, etc
117
113
 
118
114
  ### Short getters and setters
119
115
 
@@ -131,11 +127,35 @@ There are many more name changes, make sure to read the component source code fo
131
127
  //or
132
128
  tile.attr('tile', [1,2]); //samething
133
129
 
134
- ### Signals Changed to on/off
130
+ ### Factories in 0.4.2
131
+
132
+ All components now have a factory method which can be used to create complex entities.
133
+
134
+ re.c("button")
135
+ .factory(function(label, click){
136
+ this.label = label;
137
+
138
+ if(click){
139
+ this.on('click', click);
140
+ }
141
+ });
142
+
143
+ re.button("Hello", function(){
144
+ alert(this.label+" clicked!");
145
+ });
146
+
147
+ //Can be overwritten using the `method` function. A singleton is created below.
148
+
149
+ re.c("player")
150
+ .method(function(){
151
+ if(!this.instance){
152
+ this.instance = re.e('player');
153
+ }
154
+ return this.instance;
155
+ });
135
156
 
136
- * `addSignal()` is now `on()`
137
- * `removeSignal()` is now `off()`
138
- * `signal()` is now `trigger()`
157
+ //get player
158
+ re.player();
139
159
 
140
160
  ## QUnit Testing
141
161
 
data/entityjs.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "rspec"
24
24
  s.add_development_dependency "jasmine"
25
25
 
26
- s.add_dependency "sinatra", ">= 1.0"
26
+ s.add_dependency "sinatra", ">= 1.3.0"
27
27
  s.add_dependency "coffee-script"
28
28
  s.add_dependency 'uglifier'
29
29
  s.add_dependency 'json'
@@ -19,6 +19,7 @@ module Entityjs
19
19
  images_folder = Config.images_folder
20
20
  sounds_folder = Config.sounds_folder
21
21
  scripts_folder = Config.scripts_folder
22
+ styles_folder = Config.instance.build_styles_path
22
23
 
23
24
  final_name = Config.instance.build_name+'.js'
24
25
  html_name = 'play.html'
@@ -60,7 +61,9 @@ module Entityjs
60
61
  end
61
62
 
62
63
  #save css
63
- File.open(Config.instance.build_styles_path+"/"+Config.instance.build_styles_name+'.css', 'w') do |f|
64
+ Dirc.create_dir(styles_folder)
65
+
66
+ File.open(styles_folder+"/"+Config.instance.build_styles_name+'.css', 'w') do |f|
64
67
  f.write(css)
65
68
  end
66
69
 
@@ -98,7 +101,7 @@ module Entityjs
98
101
 
99
102
  puts "Build Complete!"
100
103
  puts "Build is at"
101
- puts " #{File.expand_path(build_folder)}"
104
+ puts " #{build_folder}"
102
105
 
103
106
  Dirc.to_game_root
104
107
 
@@ -14,7 +14,7 @@ module Entityjs
14
14
  puts " http://localhost:2345/"
15
15
  puts ""
16
16
  puts "Your tests are here:"
17
- puts " http://localhost:2345/tests"
17
+ puts " http://localhost:2345/test"
18
18
  puts ""
19
19
 
20
20
  Entityjs::Server.run! :port=>2345
@@ -72,4 +72,4 @@ module Entityjs
72
72
 
73
73
  end
74
74
 
75
- end
75
+ end
@@ -94,7 +94,7 @@ module Entityjs
94
94
  end
95
95
 
96
96
  def scripts_order
97
- return split_attr('order')
97
+ return split_attr('scripts-order')
98
98
  end
99
99
 
100
100
  def tests_ignore
@@ -1,3 +1,3 @@
1
1
  module Entityjs
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3" unless const_defined? :VERSION
3
3
  end
@@ -30,6 +30,16 @@ describe('comp', function(){
30
30
  eq(re[k.name](val).ref, val);
31
31
 
32
32
  });
33
+
34
+ it('should overwrite method', function(){
35
+
36
+
37
+ k.method(function(){
38
+ eq(this, re[k.name]);
39
+ });
40
+
41
+ re[k.name]();
42
+ });
33
43
 
34
44
  it('should add events', function(){
35
45
  k.events('mouseup', function(){})
@@ -3,7 +3,7 @@ describe('load', function(){
3
3
  it('load', function(){
4
4
  //add images
5
5
  re.load.path = '__spec__/'
6
- var img = 'helpers/accept.png'
6
+ var img = '/__spec__/helpers/accept.png'
7
7
  var sfx = 'helpers/alligator.mp3'
8
8
  var sfx2 = 'helpers/alligator.ogg'
9
9
 
@@ -325,6 +325,7 @@ describe('query', function(){
325
325
  eq(e, this)
326
326
  return t == 10;
327
327
  }), 10);
328
+
328
329
  })
329
330
 
330
331
  it('isEmpty', function(){
@@ -14,7 +14,7 @@ describe('bisect', function(){
14
14
  });
15
15
 
16
16
  it('static biToY', function(){
17
- eq(re.bisect.toY(1, 160, 60), 0)
17
+ eq(re.bisect.toY(1, 160, 60, 60), 0)
18
18
 
19
19
  });
20
20
 
@@ -13,7 +13,7 @@ describe 'new' do
13
13
  Entityjs::New.generate(['mygame', 'blank']).should == 0
14
14
  Dir.pwd.should match /\/EntityJS$/i
15
15
 
16
- File.exists?('mygame/config.yml').should == true
16
+ File.exists?('mygame/game.json').should == true
17
17
  File.exists?('mygame/readme.txt').should == true
18
18
  end
19
19
 
@@ -12,5 +12,5 @@ def setup_mygame
12
12
  end
13
13
 
14
14
  def teardown_mygame
15
- Dir.chdir('..')
15
+ Dir.chdir('..') if Entityjs::Dirc.game?
16
16
  end
data/src/core/comp.js CHANGED
@@ -71,6 +71,14 @@ re.c.init.prototype = {
71
71
  }
72
72
  },
73
73
 
74
+ //turns global method into a singleton
75
+ singleton:function(){
76
+ this._re_method = function(){
77
+ return this._ || (this._ = re.e(this.name));
78
+ }
79
+ return this;
80
+ },
81
+
74
82
  statics:function(obj, value){
75
83
  this._checkFinal();
76
84
 
@@ -126,10 +134,10 @@ re.c.init.prototype = {
126
134
  },
127
135
 
128
136
  _re_method:function(){
129
- var e = re.e(this.name);
137
+ var e = re.e(this.name), f = this._re_factory;
130
138
 
131
- if(this._re_factory)
132
- this._re_factory.apply(e, arguments);
139
+ if(f)
140
+ f.apply(e, arguments);
133
141
 
134
142
  return e;
135
143
  },
@@ -146,7 +154,7 @@ re.c.init.prototype = {
146
154
 
147
155
  */
148
156
  method:function(f){
149
- this._re_method = f;
157
+ this._re_method = f.bind(re[this.name]);
150
158
  return this;
151
159
  },
152
160
 
data/src/core/load.js CHANGED
@@ -5,6 +5,10 @@
5
5
  }
6
6
 
7
7
  b.path = "";
8
+ //returns file name of path
9
+ b.file = function(name){
10
+ return name.split('/').pop().split('?').shift();
11
+ };
8
12
 
9
13
  b.imageExt = 'img';
10
14
  b.soundExt = 'sfx';
@@ -74,13 +78,10 @@
74
78
  a = this.assets[i];
75
79
 
76
80
  //copy full source path
77
- var s = a;
78
-
81
+ var s = (a.charAt(0)=='/')?a:re.load.path+a;
82
+
79
83
  //remove directories
80
- var d = a.lastIndexOf('/');
81
- if(d != -1){
82
- a = a.substr(d+1, a.length);
83
- }
84
+ a = re.load.file(a);
84
85
 
85
86
  //find file extension
86
87
  var j = a.lastIndexOf('.')+1;
@@ -154,7 +155,7 @@
154
155
 
155
156
  };
156
157
 
157
- img.src = re.load.path+src;
158
+ img.src = src;
158
159
 
159
160
  return this;
160
161
  };
@@ -189,7 +190,7 @@
189
190
 
190
191
  s = soundManager.createSound({
191
192
  id:a,
192
- url:re.load.path+src,
193
+ url:src,
193
194
  autoLoad:true,
194
195
  onload:function(){
195
196
  that._loaded();
@@ -201,8 +202,8 @@
201
202
  });
202
203
 
203
204
  } else {
204
- s = new Audio(re.load.path+src);
205
- s.src = re.load.path+src;
205
+ s = new Audio(src);
206
+ s.src = src;
206
207
  s.preload = "auto";
207
208
  s.load();
208
209
 
data/src/core/query.js CHANGED
@@ -367,6 +367,15 @@
367
367
 
368
368
  return val;
369
369
  }
370
+
371
+ p.sum = function(method, context){
372
+ var val = 0;
373
+
374
+ this.each(function(e, i, l){
375
+ val += method.call(context || this, e, i, l);
376
+ });
377
+ return val;
378
+ }
370
379
 
371
380
  //without this filter would return a normal array.
372
381
  p.filter = function(){
@@ -13,7 +13,7 @@ re.c('circle')
13
13
  c.fillStyle = this.color;
14
14
 
15
15
  c.beginPath();
16
- var r = this.radius();
16
+ var r = this.radius;
17
17
 
18
18
  c.arc(-this.regX + r , -this.regY + r , r, 0, Math.PI*2, true);
19
19
 
@@ -31,4 +31,4 @@ re.c('circle')
31
31
  return this.sizeX * 0.5;
32
32
  }
33
33
 
34
- });
34
+ });
data/src/display/el.js CHANGED
@@ -2,7 +2,7 @@
2
2
  The element comp creates and displays DOM elements. This can be used to display buttons,
3
3
  images, icons etc. on top of the canvas element.
4
4
 
5
- re.e('el:a').$el //jquery element refence
5
+ re.e('el:a').$el //jquery element reference
6
6
 
7
7
  Jquery must be available to work!
8
8
 
@@ -13,7 +13,8 @@ re.c('el')
13
13
 
14
14
  posX:function(x){
15
15
  if(re.is(x)){
16
- return this.$el.css('left', x);
16
+ this.$el.css('left', x);
17
+ return this;
17
18
  }
18
19
 
19
20
  return this.$el.position().left;
@@ -21,7 +22,8 @@ re.c('el')
21
22
 
22
23
  posY:function(y){
23
24
  if(re.is(y)){
24
- return this.$el.css('top', y);
25
+ this.$el.css('top', y);
26
+ return this;
25
27
  }
26
28
  return this.$el.position().top;
27
29
  },
@@ -38,7 +40,6 @@ re.c('el')
38
40
  var that = this;
39
41
  this.$el.click(function(e){
40
42
  f.call(that,e);
41
- return false;
42
43
  });
43
44
  return this;
44
45
  },
@@ -48,7 +49,7 @@ re.c('el')
48
49
  },
49
50
 
50
51
  setEl:function(el){
51
- this.remove();
52
+ this.removeEl();
52
53
 
53
54
  this.el = el;
54
55
  this.$el = $(el).addClass('el');
@@ -67,15 +68,16 @@ re.c('el')
67
68
  },
68
69
 
69
70
  //places element to parent of canvas
70
- place:function(){
71
- $(re.sys.canvas).parent().append(this.el);
71
+ addEl:function(targ){
72
+ targ = targ || $(re.sys.canvas).parent();
73
+
74
+ targ.append(this.el);
72
75
  return this;
73
76
  },
74
77
 
75
- remove:function(){
78
+ removeEl:function(){
76
79
  if(this.$el){
77
80
  this.$el.remove();
78
- this.$el = this.el = null;
79
81
  }
80
82
  return this;
81
83
  },
@@ -95,5 +97,5 @@ re.c('el')
95
97
  if(e) this.setEl(re.$new(e));
96
98
  })
97
99
  .dispose(function(){
98
- this.remove();
100
+ this.removeEl();
99
101
  });
data/src/display/image.js CHANGED
@@ -10,7 +10,7 @@ re.c('image')
10
10
 
11
11
  image:function(b){
12
12
  if(re.is(b)){
13
- this.attr({_image:b, sizeX:b.width, sizeY:b.height});
13
+ this.attr({_image:b, sizeX:b.width, sizeY:b.height, bisect:b.width});
14
14
  return this;
15
15
  }
16
16
  return this._image;
data/src/math/bisect.js CHANGED
@@ -23,9 +23,9 @@ re.c('bisect')
23
23
  return this.toTileX(bi, width, size) * size;
24
24
  },
25
25
 
26
- toY:function(bi, width, size){
26
+ toY:function(bi, width, sizeX, sizeY){
27
27
 
28
- return this.toTileY(bi, width, size) * size;
28
+ return this.toTileY(bi, width, sizeX) * sizeY;
29
29
  },
30
30
 
31
31
  toTileX:function(bi, width, size){
@@ -56,7 +56,7 @@ re.c('bisect')
56
56
 
57
57
  biToY:function(bi){
58
58
 
59
- return re.bisect.toY(bi, this.bisect, this.sizeX);
59
+ return re.bisect.toY(bi, this.bisect, this.sizeX, this.sizeY);
60
60
  },
61
61
 
62
62
  biToTileX:function(bi){
@@ -50,21 +50,21 @@ re.c('flicker')
50
50
 
51
51
  change:function(){
52
52
 
53
- //check if over
54
- if(this.flicker_frame == this.flicker_frames.length){
55
-
56
- if(this.flicker_loops == -1 || --this.flicker_loops >= 1){
57
- //loop again
58
-
59
- this.flicker_frame = 0;
53
+ //check if over
54
+ if(this.flicker_frame == this.flicker_frames.length){
60
55
 
61
- } else {
62
- //done flickering
63
-
64
- this.flicker_stop();
65
- return;
56
+ if(this.flicker_loops == -1 || --this.flicker_loops >= 1){
57
+ //loop again
58
+
59
+ this.flicker_frame = 0;
60
+
61
+ } else {
62
+ //done flickering
63
+
64
+ this.flicker_stop();
65
+ return;
66
+ }
66
67
  }
67
- }
68
68
 
69
69
  this.flicker_run();
70
70
  },
@@ -62,7 +62,7 @@ re.c('pathfind')
62
62
  })
63
63
  .defines({
64
64
 
65
- pathfind_max:100,
65
+ pathfind_max:50,
66
66
 
67
67
  pathfind:function(x, y, targetX, targetY, onCheck, onTile){
68
68
  this.targetX = targetX;
@@ -12,5 +12,5 @@
12
12
  "tests-scripts-ignore":"init.js",
13
13
 
14
14
  //order scripts
15
- "order": null
15
+ "scripts-order": null
16
16
  }
@@ -2,5 +2,5 @@
2
2
  "build-scripts-ignore":"plugins/*",
3
3
  "title":"DOM Elements",
4
4
  "ver":"1.0",
5
- "order":"plugins/*"
5
+ "scripts-order":"plugins/*"
6
6
  }
@@ -1,5 +1,5 @@
1
1
  re.c('btn')
2
- .requires('el:button')
3
2
  .factory(function(text, click){
3
+ this.comp('el:button contain');
4
4
  this.click(click).text(text);
5
- })
5
+ })
@@ -12,5 +12,5 @@
12
12
  "tests-scripts-ignore":"init.js",
13
13
 
14
14
  //order scripts
15
- "order": null
15
+ "scripts-order": null
16
16
  }
@@ -14,5 +14,5 @@
14
14
  "tests-scripts-ignore":"init.js",
15
15
 
16
16
  //this makes all .tmx files last
17
- "order":".*/.js"
17
+ "scripts-order":".*/.js"
18
18
  }
@@ -12,5 +12,5 @@
12
12
  "tests-scripts-ignore":"init.js",
13
13
 
14
14
  //order scripts
15
- "order": null
15
+ "scripts-order": null
16
16
  }
@@ -12,5 +12,5 @@
12
12
  "tests-scripts-ignore":"init.js",
13
13
 
14
14
  //order scripts
15
- "order": "/tile.js$"
15
+ "scripts-order": "/tile.js$"
16
16
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entityjs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-15 00:00:00.000000000 Z
12
+ date: 2012-07-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &23146660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
24
+ version_requirements: *23146660
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: jasmine
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &23146240 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ! '>='
@@ -37,31 +32,21 @@ dependencies:
37
32
  version: '0'
38
33
  type: :development
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
35
+ version_requirements: *23146240
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: sinatra
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &23145740 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ! '>='
52
42
  - !ruby/object:Gem::Version
53
- version: '1.0'
43
+ version: 1.3.0
54
44
  type: :runtime
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '1.0'
46
+ version_requirements: *23145740
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: coffee-script
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &23145320 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ! '>='
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: '0'
70
55
  type: :runtime
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
57
+ version_requirements: *23145320
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: uglifier
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &23144860 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ! '>='
@@ -85,15 +65,10 @@ dependencies:
85
65
  version: '0'
86
66
  type: :runtime
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
68
+ version_requirements: *23144860
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: json
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &23144440 !ruby/object:Gem::Requirement
97
72
  none: false
98
73
  requirements:
99
74
  - - ! '>='
@@ -101,15 +76,10 @@ dependencies:
101
76
  version: '0'
102
77
  type: :runtime
103
78
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
79
+ version_requirements: *23144440
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: cobravsmongoose
112
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &23144020 !ruby/object:Gem::Requirement
113
83
  none: false
114
84
  requirements:
115
85
  - - ! '>='
@@ -117,15 +87,10 @@ dependencies:
117
87
  version: '0'
118
88
  type: :runtime
119
89
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
90
+ version_requirements: *23144020
126
91
  - !ruby/object:Gem::Dependency
127
92
  name: cssmin
128
- requirement: !ruby/object:Gem::Requirement
93
+ requirement: &23143600 !ruby/object:Gem::Requirement
129
94
  none: false
130
95
  requirements:
131
96
  - - ! '>='
@@ -133,12 +98,7 @@ dependencies:
133
98
  version: '0'
134
99
  type: :runtime
135
100
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
101
+ version_requirements: *23143600
142
102
  description: HTML5 Javascript game engine, quickly create robust, flexible and reusable
143
103
  games.
144
104
  email:
@@ -459,7 +419,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
459
419
  version: '0'
460
420
  requirements: []
461
421
  rubyforge_project: entityjs
462
- rubygems_version: 1.8.24
422
+ rubygems_version: 1.8.15
463
423
  signing_key:
464
424
  specification_version: 3
465
425
  summary: Create HTML5 javascript games in EntityJS.