cem

component-entity manager

Component entity manager

npm install
grunt
npm test
//instantiate new manager
var manager = new CEM.Manager();
 
 
//create some components
manager.c('alive', {
    health: 100,
    dead: false,
    requires: 'evented',
 
    take_damage: function(amount) {
        if(this.health > 0){
            this.health -= amount;
            this.trigger('took_damage', [amount]); //trigger event
            if(this.health <= 0){
                this.die();
            }
        }
    },
 
    event_die: function () {  //explicit event declaration
        this.dead = true;
        console.log('Died!');
    }
});
 
manager.c('fighter', {
    requires: 'object alive',  //base component; includes events
    name: 'Jhon Doe',
    attack_power: 30,
    attack: function(object) {
        if(object.is('alive')) {
            object.take_damage(this.attack_power);
        }
    }
});
 
manager.c('wuss', {
    requires: 'evented',
    on_took_damage_exclaim: function () { //event handler. Starts with "on_[event name]", can have any suffix
        console.log('Ouch!');
    }
});
 
//spawn entities
var bob = manager.e('fighter', {
    name: 'Bob'
});
 
var troll = manager.e('alive', 'wuss', {
    health: 200
});
 
 
//register event handler
troll.on('die', function(){
     console.log('Bob has slain troll!');
});
 
//slay troll
while(!troll.dead) {
    bob.attack(troll);
}
 
 
//and other great features