update to v2
This commit is contained in:
parent
53ca898b13
commit
4842cc268a
6 changed files with 310 additions and 272 deletions
29
client.ts
29
client.ts
|
|
@ -30,7 +30,6 @@ interface Player {
|
|||
y?: number;
|
||||
}
|
||||
|
||||
|
||||
export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvents>) {
|
||||
private ws: WebSocket;
|
||||
me!: Player;
|
||||
|
|
@ -42,6 +41,10 @@ export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvent
|
|||
rooms: proto.ServerMessage_Room[] = [];
|
||||
|
||||
players = new Map<string, proto.Profile>();
|
||||
|
||||
private resolvePingPromise?: (a: number) => void;
|
||||
private lastPing: number = -1;
|
||||
|
||||
move(x: number, y: number) {
|
||||
this.ws.send(
|
||||
new proto.ClientMessage({
|
||||
|
|
@ -53,6 +56,18 @@ export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvent
|
|||
}).toBinary()
|
||||
);
|
||||
}
|
||||
getPing() {
|
||||
this.ws.send(
|
||||
new proto.ClientMessage({
|
||||
event: CEventType.PING,
|
||||
}).toBinary()
|
||||
);
|
||||
this.lastPing = Date.now();
|
||||
|
||||
return new Promise((res, rej) => {
|
||||
this.resolvePingPromise = res;
|
||||
});
|
||||
}
|
||||
message(chat: string) {
|
||||
chat.match(/.{1,200}/gm)?.forEach((z, i) => {
|
||||
setTimeout(() => {
|
||||
|
|
@ -142,16 +157,20 @@ export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvent
|
|||
console.log(data);
|
||||
return;
|
||||
}
|
||||
|
||||
if(decode.event == SEventType.CHOWN) {
|
||||
if (decode.event == SEventType.PONG) {
|
||||
if (this.resolvePingPromise)
|
||||
this.resolvePingPromise(Date.now() - this.lastPing);
|
||||
}
|
||||
|
||||
if (decode.event == SEventType.CHOWN) {
|
||||
this.room.owner = decode.chown;
|
||||
this.emit("chown");
|
||||
}
|
||||
if(decode.event == SEventType.MESSAGE) {
|
||||
if (decode.event == SEventType.MESSAGE) {
|
||||
this.emit("serverMessage", decode.message);
|
||||
}
|
||||
if (decode.event == SEventType.RATELIMIT) {
|
||||
console.log("Ratelimit reached! Time left: " + decode.rateLimit);
|
||||
console.log("Ratelimit reached! Time left: " + decode.ratelimit);
|
||||
}
|
||||
if (decode.event == SEventType.JOIN) {
|
||||
this.players.set(decode.join!.id, decode.join!);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue