From: Ben Beltran Date: Wed, 13 Aug 2014 00:25:52 +0000 (-0500) Subject: Components extend without having to define init X-Git-Tag: v0.1.6^0 X-Git-Url: https://git.r.bdr.sh/rbdr/serpentity/commitdiff_plain/60a6915a0b24975e28a02b28e43d34f6dbb15625?ds=sidebyside;hp=--cc Components extend without having to define init --- 60a6915a0b24975e28a02b28e43d34f6dbb15625 diff --git a/bower.json b/bower.json index 5e5d89c..67ade91 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "serpentity", - "version": "0.1.5", + "version": "0.1.6", "homepage": "https://github.com/benbeltran/serpentity", "authors": [ "Ben Beltran " diff --git a/dist/serpentity.js b/dist/serpentity.js index 2f91c25..3522b06 100644 --- a/dist/serpentity.js +++ b/dist/serpentity.js @@ -472,7 +472,19 @@ Class(Serpentity, "NodeCollection")({ * components can be any class whatsoever. */ Class(Serpentity, "Component")({ + prototype : { + init : function init(config) { + var property; + config = config || {}; + + for (property in config) { + if (config.hasOwnProperty(property)) { + this[property] = config[property]; + } + } + } + } }); /* diff --git a/dist/serpentity.min.js b/dist/serpentity.min.js index 2950427..12aa23f 100644 --- a/dist/serpentity.min.js +++ b/dist/serpentity.min.js @@ -2,5 +2,5 @@ Class(Serpentity,"Entity")({prototype:{_components:null,_componentKeys:null,init:function(n){var t;this._componentKeys=[],this._components=[];for(t in n)n.hasOwnProperty(t)&&(this[t]=n[t])},add:function(n){return this._componentKeys.indexOf(n.constructor)>=0?!1:(this._componentKeys.push(n.constructor),this._components.push(n),!0)},hasComponent:function(n){return this._componentKeys.indexOf(n)>=0?!0:!1},getComponent:function(n){var t;return t=this._componentKeys.indexOf(n),t>=0?this._components[t]:void 0}}}); Class(Serpentity,"Node")({matches:function(t){var s,r,n;n=this.types;for(s in this.types)if(this.types.hasOwnProperty(s)&&(r=!1,t.hasComponent(n[s])&&(r=!0),!r))return!1;return!0},prototype:{types:null,init:function(){var t;this.types={};for(t in this.constructor)this.constructor.hasOwnProperty(t)&&(this.types[t]=this.constructor[t])}}}); Class(Serpentity,"NodeCollection")({prototype:{type:null,nodes:null,init:function(t){var n;t=t||{},this.nodes=[];for(n in t)t.hasOwnProperty(n)&&(this[n]=t[n])},add:function(t){var n,e,i;if(this.type.matches(t)&&!this._entityExists(t)){n=new this.type({}),n.entity=t,e=this.type.types;for(i in e)e.hasOwnProperty(i)&&(n[i]=t.getComponent(e[i]));return this.nodes.push(n),!0}return!1},remove:function(t){var n;return n=-1,this.nodes.forEach(function(e,i){e.entity===t&&(n=i)}),n>=0?(this.nodes.splice(n,1),!0):!1},_entityExists:function(t){var n;return n=!1,this.nodes.forEach(function(e){e.entity===t&&(n=!0)}),n}}}); -Class(Serpentity,"Component")({}); +Class(Serpentity,"Component")({prototype:{init:function(t){var n;t=t||{};for(n in t)t.hasOwnProperty(n)&&(this[n]=t[n])}}}); Class(Serpentity,"System")({prototype:{added:function(){},removed:function(){},update:function(){}}}); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index f1fb5e6..dcbfdc7 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -12,6 +12,17 @@ gulp.task('build', function() { 'lib/serpentity/system.js', ]) .pipe(uglify()) + .pipe(concat('serpentity.min.js')) + .pipe(gulp.dest('dist')) + + gulp.src([ + 'lib/serpentity/serpentity.js', + 'lib/serpentity/entity.js', + 'lib/serpentity/node.js', + 'lib/serpentity/node_collection.js', + 'lib/serpentity/component.js', + 'lib/serpentity/system.js', + ]) .pipe(concat('serpentity.js')) .pipe(gulp.dest('dist')) }); diff --git a/lib/serpentity/component.js b/lib/serpentity/component.js index 0204e30..0018a88 100644 --- a/lib/serpentity/component.js +++ b/lib/serpentity/component.js @@ -5,5 +5,17 @@ * components can be any class whatsoever. */ Class(Serpentity, "Component")({ + prototype : { + init : function init(config) { + var property; + config = config || {}; + + for (property in config) { + if (config.hasOwnProperty(property)) { + this[property] = config[property]; + } + } + } + } }); diff --git a/package.json b/package.json index 06ed1b9..642de3e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "serpentity", "description": "A simple entity framework inspired by ash", - "version": "0.1.5", + "version": "0.1.6", "contributors": [ { "name": "Ben Beltran",