diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2023-07-10 23:00:06 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2023-07-10 23:00:06 +0200 |
| commit | 988ca1a3e364aa6e5377e3407c683eceddb88107 (patch) | |
| tree | 77fa3ba168ad0b6c7021ce92ca5a527f78744fc5 /lib/serpentity.js | |
| parent | 3d7e85099e73ff77fbd56515d0538c5a0ab60f1e (diff) | |
Remove dependencies
Diffstat (limited to 'lib/serpentity.js')
| -rw-r--r-- | lib/serpentity.js | 106 |
1 files changed, 3 insertions, 103 deletions
diff --git a/lib/serpentity.js b/lib/serpentity.js index ed233ba..c5c3850 100644 --- a/lib/serpentity.js +++ b/lib/serpentity.js @@ -1,4 +1,3 @@ -// Export submodules export { Component } from './serpentity/component.js'; export { Entity } from './serpentity/entity.js'; export { Node } from './serpentity/node.js'; @@ -7,107 +6,8 @@ export { System } from './serpentity/system.js'; import { NodeCollection } from './serpentity/node_collection.js'; /* -Serpentity is a simple entity framework inspired by Ash. - -Usage: - - import Serpentity from '@serpentity/serpentity'; - -## Instantiating an engine - - const engine = new Serpentity(); - -Add entities or systems, systems are added with a priority (the smaller -the number, the earlier it will be called): - - engine.addEntity(entityFactory()); - engine.addSystem(new GameSystem(), priority); - -Update all systems: - - engine.update(dt); - -Remove entities or systems: - - engine.removeEntity(entityReference); - engine.removeSystem(systemReference); - -## Creating Entities - -Entities are the basic object of Serpentity, and they do nothing. - - import { Entity } from '@serpentity/serpentity'; - const entity = new Entity(); - -All the behavior is added through components - -## Creating Components - -Components define data that we can add to an entity. This data will -eventually be consumed by "Systems" - - import { Component } from '@serpentity/serpentity'; - const PositionComponent = class PositionComponent extends Component { - constructor(config) { - - this.x = 0; - this.y = 0; - - super(config); - } - }; - -You can add components to entities by using the add method: - - entity.addComponent(new PositionComponent()); - - -Systems can refer to entities by requesting nodes. - -## Working with Nodes - -Nodes are sets of components that you define, so your system can require -entities that always follow the API defined in the node. - - import { Node } from '@serpentity/serpentity'; - const MovementNode = class MovementNode extends Node; - MovementNode.position = PositionComponent; - MovementNode.motion = MotionComponent; - -You can then request an array of all the nodes representing entities -that comply with that API - - engine.getNodes(MovementNode); - -## Creating Systems - -Systems are called on every update, and they use components through nodes. - - import { System } from '@serpentity/serpentity'; - const TestSystem = class TestSystem extends System { - added(engine){ - - this.nodeList = engine.getNodes(MovementNode); - } - - removed(engine){ - - this.nodeList = undefined; - } - - update(dt){ - - for (const node of this.nodeList) { - console.log(`Current position is: ${node.position.x},${node.position.y}`); - } - } - }; - -## That's it - -Just run `engine.update(dt)` in your game loop :D - -*/ + * Serpentity is the main engine class + */ export default class Serpentity { constructor(config) { @@ -220,7 +120,7 @@ export default class Serpentity { const position = this._nodeCollectionKeys.indexOf(nodeType); if (position >= 0) { - return this._nodeCollections[position].nodes; + return this._nodeCollections[position]; } const nodeCollection = new NodeCollection({ |