aboutsummaryrefslogtreecommitdiff
path: root/lib/serpentity.js
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2023-07-10 23:00:06 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2023-07-10 23:00:06 +0200
commit988ca1a3e364aa6e5377e3407c683eceddb88107 (patch)
tree77fa3ba168ad0b6c7021ce92ca5a527f78744fc5 /lib/serpentity.js
parent3d7e85099e73ff77fbd56515d0538c5a0ab60f1e (diff)
Remove dependencies
Diffstat (limited to 'lib/serpentity.js')
-rw-r--r--lib/serpentity.js106
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({