summaryrefslogtreecommitdiff
path: root/engine/systems/NetworkUpdate.ts
diff options
context:
space:
mode:
Diffstat (limited to 'engine/systems/NetworkUpdate.ts')
-rw-r--r--engine/systems/NetworkUpdate.ts31
1 files changed, 16 insertions, 15 deletions
diff --git a/engine/systems/NetworkUpdate.ts b/engine/systems/NetworkUpdate.ts
index cdd6de7..6c1d3e4 100644
--- a/engine/systems/NetworkUpdate.ts
+++ b/engine/systems/NetworkUpdate.ts
@@ -1,43 +1,44 @@
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;
-}
+import {
+ type MessageQueueProvider,
+ type MessagePublisher,
+ type MessageProcessor,
+} from "../network";
export class NetworkUpdate extends System {
private queueProvider: MessageQueueProvider;
private publisher: MessagePublisher;
+ private messageProcessor: MessageProcessor;
constructor(
queueProvider: MessageQueueProvider,
- publisher: MessagePublisher
+ publisher: MessagePublisher,
+ messageProcessor: MessageProcessor,
) {
super(SystemNames.NetworkUpdate);
this.queueProvider = queueProvider;
this.publisher = publisher;
+ this.messageProcessor = messageProcessor;
}
public update(_dt: number, game: Game) {
- const messages = this.queueProvider.getNewMessages();
- if (messages.length) console.log(messages);
+ this.queueProvider
+ .getNewMessages()
+ .forEach((message) => this.messageProcessor.process(message));
this.queueProvider.clearMessages();
game.forEachEntityWithComponent(
ComponentNames.NetworkUpdateable,
(entity) => {
const networkUpdateComponent = entity.getComponent<NetworkUpdateable>(
- ComponentNames.NetworkUpdateable
+ ComponentNames.NetworkUpdateable,
);
- }
+ },
);
+
+ this.publisher.publish();
}
}