GithubHelp home page GithubHelp logo

cem's Introduction

Component entity manager

Build

npm install
grunt

Test

npm test

Usage

//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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.