0.5.1 • Published 9 years ago
lucy-forge v0.5.1
Lucy forge
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.