#!/usr/bin/env node require("colors"); require("serpentity"); ///////////////// // Load the stuff ///////////////// console.log("\n## Loading".bold.black) console.log("Serpentity: " + (typeof Serpentity !== "undefined" ? "LOAD OK".green : "FAIL".red)); console.log("Serpentity.Entity: " + (typeof Serpentity !== "undefined" && Serpentity.Entity ? "LOAD OK".green : "FAIL".red)); console.log("Serpentity.Component: " + (typeof Serpentity !== "undefined" && Serpentity.Component ? "LOAD OK".green : "FAIL".red)); console.log("Serpentity.System: " + (typeof Serpentity !== "undefined" && Serpentity.System ? "LOAD OK".green : "FAIL".red)); console.log("Serpentity.Node: " + (typeof Serpentity !== "undefined" && Serpentity.Node ? "LOAD OK".green : "FAIL".red)); console.log("Serpentity.NodeCollection: " + (typeof Serpentity !== "undefined" && Serpentity.NodeCollection ? "LOAD OK".green : "FAIL".red)); ////////////////////// // Create test classes ////////////////////// console.log("\n## Creating Test Classes".bold.black); Class("TestSystem").inherits(Serpentity.System)({ prototype : { added : function added(engine) { this.testNodes = engine.getNodes(TestNode); console.log("System added callback: " + "EXEC OK".green); }, removed : function removed(engine) { this.testNodes = null; console.log("System removed callback: " + "EXEC OK".green); }, update : function update(dt) { this.testNodes.forEach(function (node) { console.log("Running Node: " + (node.test.testMessage === "test" ? "SYSTEM OK".green : "FAIL".RED)); }); console.log("System update callback: " + "EXEC OK".green); } } }); var testSystem = new TestSystem(); Class("LowProTestSystem").inherits(Serpentity.System)({ prototype : { added : function added(engine) { this.testNodes = engine.getNodes(TestNode); console.log("System added callback: " + "EXEC OK".green); }, removed : function removed(engine) { this.testNodes = null; console.log("System removed callback: " + "EXEC OK".green); }, update : function update(dt) { this.testNodes.forEach(function (node) { console.log("Running Low Priority Node: " + (node.test.testMessage === "test" ? "SYSTEM OK".green : "FAIL".RED)); }); console.log("System update callback: " + "EXEC OK".green); } } }); var lowProTestSystem = new LowProTestSystem(); console.log("LowProTestSystem: " + "CREATE OK".green) Class("MidProTestSystem").inherits(Serpentity.System)({ prototype : { added : function added(engine) { this.testNodes = engine.getNodes(TestNode); console.log("System added callback: " + "EXEC OK".green); }, removed : function removed(engine) { this.testNodes = null; console.log("System removed callback: " + "EXEC OK".green); }, update : function update(dt) { this.testNodes.forEach(function (node) { console.log("Running Mid Priority Node: " + (node.test.testMessage === "test" ? "SYSTEM OK".green : "FAIL".RED)); }); console.log("System update callback: " + "EXEC OK".green); } } }); var midProTestSystem = new MidProTestSystem(); console.log("MidProTestSystem: " + "CREATE OK".green) Class("TestComponent").inherits(Serpentity.Component)({ prototype : { testMessage : "test" } }); console.log("TestComponent: " + "CREATE OK".green) Class("TestNode").inherits(Serpentity.Node)({ types : { test : TestComponent } }); console.log("TestNode: " + "CREATE OK".green) console.log("\n## Adding system to the engine".bold.black) var engine = new Serpentity(); console.log("engine: " + "CREATE OK".green) engine.addSystem(testSystem, 0); console.log("\n## Running update without any entities".bold.black) engine.update(10); console.log("\n## Adding system to the engine and updating".bold.black) var entity = new Serpentity.Entity(); entity.add(new TestComponent()); engine.addEntity(entity); engine.update(10); console.log("\n## Adding Low Priority System".bold.black) engine.addSystem(lowProTestSystem, 10); engine.update(10); console.log("\n## Adding Mid Priority System".bold.black) engine.addSystem(midProTestSystem, 5); engine.update(10); console.log("\n## Removing the system and readding".bold.black) engine.removeSystem(testSystem); engine.update(10); engine.addSystem(testSystem, 0); engine.update(10); console.log("\n## Adding a second entity".bold.black) var entity = new Serpentity.Entity(); entity.add(new TestComponent()); engine.addEntity(entity); engine.update(10); console.log("\n## Removing entity".bold.black) engine.removeEntity(entity) engine.update(10); console.log("\n## Removing system".bold.black) engine.removeSystem(testSystem) engine.update(10);