sending info about group lock state. wip

This commit is contained in:
Hanusiak Piotr
2022-03-01 11:36:45 +01:00
parent 724dbc8efa
commit d43c8d181a
11 changed files with 94 additions and 4 deletions
+1 -1
View File
@@ -418,7 +418,7 @@ export class GameRoom {
});
this.groups.forEach((group: Group) => {
if (group.isFull()) {
if (group.isFull() || group.isLocked()) {
return;
}
const distance = GameRoom.computeDistanceBetweenPositions(user.getPosition(), group.getPosition());
+9
View File
@@ -14,6 +14,7 @@ export class Group implements Movable {
private x!: number;
private y!: number;
private wasDestroyed: boolean = false;
private locked: boolean = false;
private roomId: string;
private currentZone: Zone | null = null;
/**
@@ -141,6 +142,10 @@ export class Group implements Movable {
return this.users.size >= MAX_PER_GROUP;
}
isLocked(): boolean {
return this.locked;
}
isEmpty(): boolean {
return this.users.size <= 1;
}
@@ -167,6 +172,10 @@ export class Group implements Movable {
this.disconnectCallback(user, this);
}
lock(lock: boolean = true): void {
this.locked = lock;
}
/**
* Let's kick everybody out.
* Usually used when there is only one user left.
+8
View File
@@ -29,6 +29,7 @@ import {
WebRtcSignalToServerMessage,
WorldFullWarningToRoomMessage,
ZoneMessage,
LockGroupMessage,
} from "./Messages/generated/messages_pb";
import { sendUnaryData, ServerDuplexStream, ServerUnaryCall, ServerWritableStream } from "grpc";
import { socketManager } from "./Services/SocketManager";
@@ -135,6 +136,11 @@ const roomManager: IRoomManagerServer = {
user,
message.getFollowabortmessage() as FollowAbortMessage
);
} else if (message.hasLockgroupmessage()) {
socketManager.handleLockGroupMessage(
user,
message.getLockgroupmessage() as LockGroupMessage
);
} else if (message.hasSendusermessage()) {
const sendUserMessage = message.getSendusermessage();
socketManager.handleSendUserMessage(user, sendUserMessage as SendUserMessage);
@@ -148,6 +154,8 @@ const roomManager: IRoomManagerServer = {
user,
setPlayerDetailsMessage as SetPlayerDetailsMessage
);
} else if (message.hasLockgroupmessage()) {
console.log("===== GOT LOCK GROUP MESSAGE FROM CLIENT =====");
} else {
throw new Error("Unhandled message type");
}
+7
View File
@@ -39,6 +39,7 @@ import {
SetPlayerDetailsMessage,
PlayerDetailsUpdatedMessage,
GroupUsersUpdateMessage,
LockGroupMessage,
} from "../Messages/generated/messages_pb";
import { User, UserSocket } from "../Model/User";
import { ProtobufUtils } from "../Model/Websocket/ProtobufUtils";
@@ -404,6 +405,7 @@ export class SocketManager {
groupUpdateMessage.setPosition(pointMessage);
groupUpdateMessage.setGroupsize(group.getSize);
groupUpdateMessage.setFromzone(this.toProtoZone(fromZone));
groupUpdateMessage.setLocked(group.isLocked());
const subMessage = new SubToPusherMessage();
subMessage.setGroupupdatezonemessage(groupUpdateMessage);
@@ -889,6 +891,11 @@ export class SocketManager {
leader?.delFollower(user);
}
}
handleLockGroupMessage(user: User, message: LockGroupMessage) {
console.log(`lock group: ${message.getLock()}`);
user.group?.lock(message.getLock());
}
}
export const socketManager = new SocketManager();