]> git.r.bdr.sh - rbdr/serpentity/blob - bin/test
Proper class based lookup of node collections
[rbdr/serpentity] / bin / test
1 #!/usr/bin/env node
2
3 require("colors");
4 require("serpentity");
5
6 /////////////////
7 // Load the stuff
8 /////////////////
9 console.log("\n## Loading".bold.black)
10 console.log("Serpentity: " + (typeof Serpentity !== "undefined" ? "LOAD OK".green : "FAIL".red));
11 console.log("Serpentity.Entity: " + (typeof Serpentity !== "undefined" && Serpentity.Entity ? "LOAD OK".green : "FAIL".red));
12 console.log("Serpentity.Component: " + (typeof Serpentity !== "undefined" && Serpentity.Component ? "LOAD OK".green : "FAIL".red));
13 console.log("Serpentity.System: " + (typeof Serpentity !== "undefined" && Serpentity.System ? "LOAD OK".green : "FAIL".red));
14 console.log("Serpentity.Node: " + (typeof Serpentity !== "undefined" && Serpentity.Node ? "LOAD OK".green : "FAIL".red));
15 console.log("Serpentity.NodeCollection: " + (typeof Serpentity !== "undefined" && Serpentity.NodeCollection ? "LOAD OK".green : "FAIL".red));
16
17 //////////////////////
18 // Create test classes
19 //////////////////////
20 console.log("\n## Creating Test Classes".bold.black);
21 Class("TestSystem").inherits(Serpentity.System)({
22 prototype : {
23 added : function added(engine) {
24 this.testNodes = engine.getNodes(TestNode);
25 console.log("System added callback: " + "EXEC OK".green);
26 },
27
28 removed : function removed(engine) {
29 this.testNodes = null;
30 console.log("System removed callback: " + "EXEC OK".green);
31 },
32
33 update : function update(dt) {
34 this.testNodes.forEach(function (node) {
35 console.log("Running Node: " + (node.test.testMessage === "test" ? "SYSTEM OK".green : "FAIL".RED));
36 });
37 console.log("System update callback: " + "EXEC OK".green);
38 }
39 }
40 });
41 var testSystem = new TestSystem();
42
43 Class("LowProTestSystem").inherits(Serpentity.System)({
44 prototype : {
45 added : function added(engine) {
46 this.testNodes = engine.getNodes(TestNode);
47 console.log("System added callback: " + "EXEC OK".green);
48 },
49
50 removed : function removed(engine) {
51 this.testNodes = null;
52 console.log("System removed callback: " + "EXEC OK".green);
53 },
54
55 update : function update(dt) {
56 this.testNodes.forEach(function (node) {
57 console.log("Running Low Priority Node: " + (node.test.testMessage === "test" ? "SYSTEM OK".green : "FAIL".RED));
58 });
59 console.log("System update callback: " + "EXEC OK".green);
60 }
61 }
62 });
63 var lowProTestSystem = new LowProTestSystem();
64 console.log("LowProTestSystem: " + "CREATE OK".green)
65
66 Class("MidProTestSystem").inherits(Serpentity.System)({
67 prototype : {
68 added : function added(engine) {
69 this.testNodes = engine.getNodes(TestNode);
70 console.log("System added callback: " + "EXEC OK".green);
71 },
72
73 removed : function removed(engine) {
74 this.testNodes = null;
75 console.log("System removed callback: " + "EXEC OK".green);
76 },
77
78 update : function update(dt) {
79 this.testNodes.forEach(function (node) {
80 console.log("Running Mid Priority Node: " + (node.test.testMessage === "test" ? "SYSTEM OK".green : "FAIL".RED));
81 });
82 console.log("System update callback: " + "EXEC OK".green);
83 }
84 }
85 });
86 var midProTestSystem = new MidProTestSystem();
87 console.log("MidProTestSystem: " + "CREATE OK".green)
88
89
90 Class("TestComponent").inherits(Serpentity.Component)({
91 prototype : {
92 testMessage : "test"
93 }
94 });
95 console.log("TestComponent: " + "CREATE OK".green)
96
97 Class("TestNode").inherits(Serpentity.Node)({
98 types : {
99 test : TestComponent
100 }
101 });
102 console.log("TestNode: " + "CREATE OK".green)
103
104
105 console.log("\n## Adding system to the engine".bold.black)
106
107 var engine = new Serpentity();
108 console.log("engine: " + "CREATE OK".green)
109
110 engine.addSystem(testSystem, 0);
111
112 console.log("\n## Running update without any entities".bold.black)
113 engine.update(10);
114
115 console.log("\n## Adding system to the engine and updating".bold.black)
116 var entity = new Serpentity.Entity();
117 entity.add(new TestComponent());
118 engine.addEntity(entity);
119 engine.update(10);
120
121 console.log("\n## Adding Low Priority System".bold.black)
122 engine.addSystem(lowProTestSystem, 10);
123 engine.update(10);
124
125 console.log("\n## Adding Mid Priority System".bold.black)
126 engine.addSystem(midProTestSystem, 5);
127 engine.update(10);
128
129 console.log("\n## Removing the system and readding".bold.black)
130 engine.removeSystem(testSystem);
131 engine.update(10);
132 engine.addSystem(testSystem, 0);
133 engine.update(10);
134
135 console.log("\n## Adding a second entity".bold.black)
136 var entity = new Serpentity.Entity();
137 entity.add(new TestComponent());
138 engine.addEntity(entity);
139 engine.update(10);
140
141 console.log("\n## Removing entity".bold.black)
142 engine.removeEntity(entity)
143 engine.update(10);
144
145 console.log("\n## Removing system".bold.black)
146 engine.removeSystem(testSystem)
147 engine.update(10);