Wondering what’s next for npm?Check out our public roadmap! »

    lucy-forge

    0.5.1 • Public • Published

    Lucy forge Build Status

    Part of lucidity project.

    Beta software. Until 1.0, API subject to change.

    Entity and component definition tool

    lucy.forge is a minimal 'game' or 'feature composition' engine. It's goal is to foster clean and reusable Javascript code through the extensive use of mixins and conventions.

    Installation

    npm install lucy-forge --save

    Usage example:

    const forge = require ( 'lucy-forge' )
     
    // Define a component
    // for auto-loading, the path for this component should be 'Person.js'
    const Person = forge.Component
    ( 'Person'
      // Class methods
    , { // Setup an entity. 'e' is the entity being initialized.
        setup ( e )
        { e._person = {}
          Person.people.push ( e )
     
          e.bind
          ( 'destroy'
          , function ()
            { Person.peopleCount --
            }
          )
        }
     
        // This is called once on Component creation. It is used to initialize
        // the component (not an entity). 'this' is the component aka 'class'.
        // Here, this === Person.
      , init ()
        { this.peopleCount = 0
        }
     
      , count ()
        { return this.peopleCount
        }
      }
     
      // Methods
    , { person ( name, age )
        { let self = this._person
          self.name = name
          self.age  = age
        }
      }
    )
     
    // Use the component
    let Person = forge.findComponent ( 'Person' )
     
    console.log
    ( Person.count () ) // ==> 0
     
    let player1 = forge.Entity
    ( 'Person'
    , 'Score'
      // #set shortcut
      // same as calling player1.person ( 'John Difool', 34 )
      //                 player1.score  ( 100 )
    , { person: [ 'John Difool', 34 ]  
      , score: 100
      }
    )
     
    console.log
    ( Person.count () ) // ==> 1

    Tests

    npm test 

    Contributing

    Please use 'jessy style'.

    Add unit tests for any new or changed functionality.

    Release History

    • 0.5.1 (2015-09-22) Fixed npm readme page.
    • 0.5.0 (2015-09-22) Better #set method, forge.merge.
    • 0.4.0 (2015-09-09) Renaming init to 'setup'. Init is now called on class.
    • 0.3.0 (2015-09-04) API change for forge.Component with class methods.
    • 0.2.0 (2015-09-03) Adding possibility to replace binding.
    • 0.1.0 (2015-09-02) Initial release.

    Install

    npm i lucy-forge

    DownloadsWeekly Downloads

    0

    Version

    0.5.1

    License

    MIT

    Last publish

    Collaborators

    • avatar