sending info about group lock state. wip
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user