this.shareUsersPosition();
//don't send only function because the context will be not this
- this.World = new World((user1 : string, user2 : string) => {
- this.connectedUser(user1, user2);
- }, (user1 : string, user2 : string) => {
- this.disConnectedUser(user1, user2);
+ this.World = new World((user1: string, group: Group) => {
+ this.connectedUser(user1, group);
+ }, (user1: string, group: Group) => {
+ this.disConnectedUser(user1, group);
- });
+ }, MINIMUM_DISTANCE, GROUP_RADIUS);
}
ioConnection() {
import {ExSocketInterface} from "_Model/Websocket/ExSocketInterface";
import {PositionInterface} from "_Model/PositionInterface";
+ export type ConnectCallback = (user: string, group: Group) => void;
+ export type DisconnectCallback = (user: string, group: Group) => void;
+
export class World {
- static readonly MIN_DISTANCE = 160;
+ private minDistance: number;
+ private groupRadius: number;
// Users, sorted by ID
private users: Map<string, UserInterface>;
private groups: Group[];
- private connectCallback: (user1: string, user2: string) => void;
- private disconnectCallback: (user1: string, user2: string) => void;
+ private connectCallback: ConnectCallback;
+ private disconnectCallback: DisconnectCallback;
- constructor(connectCallback: (user1: string, user2: string) => void, disconnectCallback: (user1: string, user2: string) => void,
- constructor(connectCallback: ConnectCallback, disconnectCallback: DisconnectCallback)
++ constructor(connectCallback: ConnectCallback,
++ disconnectCallback: DisconnectCallback,
+ minDistance: number,
+ groupRadius: number)
{
this.users = new Map<string, UserInterface>();
this.groups = [];