update to v2

This commit is contained in:
Soph :3 2024-08-27 20:39:18 +03:00
parent 53ca898b13
commit 4842cc268a
Signed by: sophie
GPG key ID: EDA5D222A0C270F2
6 changed files with 310 additions and 272 deletions

View file

@ -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!);