UNPKG

vertecs

Version:

A typescript entity-component-system framework

65 lines (53 loc) 2.18 kB
import { assert } from "chai"; import NetworkCounter from "./components/NetworkCounter"; import TestClientNetworkSystem from "./systems/TestClientNetworkSystem"; import TestClientHandler from "./systems/TestClientHandler"; import { EcsManager } from "../../src/core"; import { Entity, IsNetworked, PrefabManager, ServerNetworkSystem, } from "../../src"; import CounterComponent from "../components/CounterComponent"; describe("Prefabs", async () => { const allowedNetworkComponents = [NetworkCounter]; let serverNetworkSystem: ServerNetworkSystem; const serverEcsManager = new EcsManager(); let clientANetworkSystem: TestClientNetworkSystem; const clientAEcsManager = new EcsManager(); before(async () => { const testPrefab = new Entity({ name: "testPrefab" }); testPrefab.addComponent(new NetworkCounter()); PrefabManager.add("testPrefab", testPrefab); serverNetworkSystem = new ServerNetworkSystem( allowedNetworkComponents, TestClientHandler ); await serverEcsManager.addSystem(serverNetworkSystem); const serverTestPrefab = PrefabManager.get("testPrefab"); serverTestPrefab?.addComponent(new IsNetworked()); clientANetworkSystem = new TestClientNetworkSystem( allowedNetworkComponents, "ws://localhost:8080" ); await clientAEcsManager.addSystem(clientANetworkSystem); await serverEcsManager.start(); await clientAEcsManager.start(); }); it("should send prefab to client", async () => { await new Promise((resolve) => setTimeout(resolve, 100)); const newClientEntity = clientANetworkSystem.entities[0]; assert.equal(clientANetworkSystem.entities.length, 1); assert.exists(newClientEntity); assert.equal(newClientEntity.getComponent(CounterComponent)?.count, 0); assert.equal( newClientEntity.getComponent(IsNetworked)?.ownerId, clientANetworkSystem.networkId ); }); after(async () => { await serverEcsManager.stop(); await clientAEcsManager.stop(); }); });