]>
Commit | Line | Data |
---|---|---|
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.addComponent(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.addComponent(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); |