diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-08-15 18:30:19 -0600 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-08-15 18:30:19 -0600 |
commit | 732fe6f4811cc082bf938fed2d28c1f9c8bbd1f6 (patch) | |
tree | bf9d2aa160fb3e5564f4ae788ecc86927b716e0b /engine/systems/NetworkUpdate.ts | |
parent | 2dc3120831fbcd03b635bbad59213ff0bf1f8879 (diff) | |
download | jumpstorm-732fe6f4811cc082bf938fed2d28c1f9c8bbd1f6.tar.gz jumpstorm-732fe6f4811cc082bf938fed2d28c1f9c8bbd1f6.zip |
generate uuids for entities; scaffolding for a server
Diffstat (limited to 'engine/systems/NetworkUpdate.ts')
-rw-r--r-- | engine/systems/NetworkUpdate.ts | 36 |
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, + ); + }, + ); + } } |