summaryrefslogtreecommitdiff
path: root/engine/entities/Entity.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-26 17:55:27 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-26 17:55:27 -0600
commit6ce6946a4401d2ee6fa5cb747fab7d4c658a63c8 (patch)
treee60767dc5295edf379cf421e20171dc418e548b7 /engine/entities/Entity.ts
parent594921352c8d82fe5f1a6201a4d5f9fbd9b719fc (diff)
downloadjumpstorm-6ce6946a4401d2ee6fa5cb747fab7d4c658a63c8.tar.gz
jumpstorm-6ce6946a4401d2ee6fa5cb747fab7d4c658a63c8.zip
add entity updates over network!
Diffstat (limited to 'engine/entities/Entity.ts')
-rw-r--r--engine/entities/Entity.ts32
1 files changed, 25 insertions, 7 deletions
diff --git a/engine/entities/Entity.ts b/engine/entities/Entity.ts
index b016fc0..63fb370 100644
--- a/engine/entities/Entity.ts
+++ b/engine/entities/Entity.ts
@@ -1,12 +1,15 @@
-import { EntityNames, Player } from '.';
-import type { Component } from '../components';
+import { EntityNames, Floor, Player } from '.';
+import { type Component } from '../components';
+
+const randomId = () =>
+ (performance.now() + Math.random() * 10_000_000).toString();
export abstract class Entity {
public id: string;
public components: Map<string, Component>;
public name: string;
- constructor(name: string, id: string = crypto.randomUUID()) {
+ constructor(name: string, id: string = randomId()) {
this.name = name;
this.id = id;
this.components = new Map();
@@ -31,14 +34,29 @@ export abstract class Entity {
return this.components.has(name);
}
- static from(entityName: string, args: any): Entity {
+ public static from(entityName: string, id: string, args: any): Entity {
+ let entity: Entity;
+
switch (entityName) {
case EntityNames.Player:
- const player = new Player(args.playerId);
- player.id = args.id;
- return player;
+ const player = new Player();
+ player.setFrom(args);
+ entity = player;
+ break;
+ case EntityNames.Floor:
+ const floor = new Floor(args.floorWidth);
+ floor.setFrom(args);
+ entity = floor;
+ break;
default:
throw new Error('.from() Entity type not implemented: ' + entityName);
}
+
+ entity.id = id;
+ return entity;
}
+
+ public abstract setFrom(args: Record<string, any>): void;
+
+ public abstract serialize(): Record<string, any>;
}