partey_workadventure/back/src/Model/User.ts

35 lines
1.1 KiB
TypeScript
Raw Normal View History

2020-09-16 16:06:43 +02:00
import { Group } from "./Group";
import { PointInterface } from "./Websocket/PointInterface";
import {Zone} from "_Model/Zone";
import {Movable} from "_Model/Movable";
import {PositionInterface} from "_Model/PositionInterface";
import {PositionNotifier} from "_Model/PositionNotifier";
2020-09-29 16:01:22 +02:00
import {ExSocketInterface} from "_Model/Websocket/ExSocketInterface";
2020-09-16 16:06:43 +02:00
export class User implements Movable {
public listenedZones: Set<Zone>;
public group?: Group;
public constructor(
public id: number,
private position: PointInterface,
2020-09-16 16:06:43 +02:00
public silent: boolean,
2020-09-29 16:01:22 +02:00
private positionNotifier: PositionNotifier,
public readonly socket: ExSocketInterface
2020-09-16 16:06:43 +02:00
) {
this.listenedZones = new Set<Zone>();
this.positionNotifier.enter(this);
2020-09-16 16:06:43 +02:00
}
public getPosition(): PointInterface {
2020-09-16 16:06:43 +02:00
return this.position;
}
public setPosition(position: PointInterface): void {
const oldPosition = this.position;
this.position = position;
this.positionNotifier.updatePosition(this, position, oldPosition);
}
2020-09-16 16:06:43 +02:00
}