summaryrefslogtreecommitdiff
path: root/engine/systems
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-15 18:30:19 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-15 18:30:19 -0600
commit732fe6f4811cc082bf938fed2d28c1f9c8bbd1f6 (patch)
treebf9d2aa160fb3e5564f4ae788ecc86927b716e0b /engine/systems
parent2dc3120831fbcd03b635bbad59213ff0bf1f8879 (diff)
downloadjumpstorm-732fe6f4811cc082bf938fed2d28c1f9c8bbd1f6.tar.gz
jumpstorm-732fe6f4811cc082bf938fed2d28c1f9c8bbd1f6.zip
generate uuids for entities; scaffolding for a server
Diffstat (limited to 'engine/systems')
-rw-r--r--engine/systems/NetworkUpdate.ts36
1 files changed, 34 insertions, 2 deletions
diff --git a/engine/systems/NetworkUpdate.ts b/engine/systems/NetworkUpdate.ts
index dc7be20..6f8acb9 100644
--- a/engine/systems/NetworkUpdate.ts
+++ b/engine/systems/NetworkUpdate.ts
@@ -1,10 +1,42 @@
import { System, SystemNames } from ".";
import { Game } from "../Game";
+import { ComponentNames, NetworkUpdateable } from "../components";
+
+export interface MessageQueueProvider {
+ getNewMessages(): any[];
+ clearMessages(): void;
+}
+
+export interface MessagePublisher {
+ addMessage(message: any): void;
+ publish(): void;
+}
export class NetworkUpdate extends System {
- constructor() {
+ private queueProvider: MessageQueueProvider;
+ private publisher: MessagePublisher;
+
+ constructor(
+ queueProvider: MessageQueueProvider,
+ publisher: MessagePublisher,
+ ) {
super(SystemNames.NetworkUpdate);
+
+ this.queueProvider = queueProvider;
+ this.publisher = publisher;
}
- public update(_dt: number, _game: Game) {}
+ public update(_dt: number, game: Game) {
+ const messages = this.queueProvider.getNewMessages();
+ this.queueProvider.clearMessages();
+
+ game.forEachEntityWithComponent(
+ ComponentNames.NetworkUpdateable,
+ (entity) => {
+ const networkUpdateComponent = entity.getComponent<NetworkUpdateable>(
+ ComponentNames.NetworkUpdateable,
+ );
+ },
+ );
+ }
}