much cleaner approach to group lock update
This commit is contained in:
@@ -23,7 +23,6 @@ import {
|
||||
VariableMessage,
|
||||
VariableWithTagMessage,
|
||||
ServerToClientMessage,
|
||||
LockGroupMessage,
|
||||
} from "../Messages/generated/messages_pb";
|
||||
import { ProtobufUtils } from "../Model/Websocket/ProtobufUtils";
|
||||
import { RoomSocket, ZoneSocket } from "src/RoomManager";
|
||||
@@ -550,8 +549,8 @@ export class GameRoom {
|
||||
this.positionNotifier.emitEmoteEvent(user, emoteEventMessage);
|
||||
}
|
||||
|
||||
public emitLockGroupMessage(user: User, lockGroupMessage: LockGroupMessage) {
|
||||
this.positionNotifier.emitLockGroupEvent(user, lockGroupMessage);
|
||||
public emitLockGroupEvent(user: User, groupId: number) {
|
||||
this.positionNotifier.emitLockGroupEvent(user, groupId);
|
||||
}
|
||||
|
||||
public addRoomListener(socket: RoomSocket) {
|
||||
|
||||
@@ -21,7 +21,7 @@ import { Movable } from "_Model/Movable";
|
||||
import { PositionInterface } from "_Model/PositionInterface";
|
||||
import { ZoneSocket } from "../RoomManager";
|
||||
import { User } from "../Model/User";
|
||||
import { EmoteEventMessage, LockGroupMessage, SetPlayerDetailsMessage } from "../Messages/generated/messages_pb";
|
||||
import { EmoteEventMessage, SetPlayerDetailsMessage } from "../Messages/generated/messages_pb";
|
||||
|
||||
interface ZoneDescriptor {
|
||||
i: number;
|
||||
@@ -140,10 +140,10 @@ export class PositionNotifier {
|
||||
zone.emitEmoteEvent(emoteEventMessage);
|
||||
}
|
||||
|
||||
public emitLockGroupEvent(user: User, lockGroupMessage: LockGroupMessage) {
|
||||
public emitLockGroupEvent(user: User, groupId: number) {
|
||||
const zoneDesc = this.getZoneDescriptorFromCoordinates(user.getPosition().x, user.getPosition().y);
|
||||
const zone = this.getZone(zoneDesc.i, zoneDesc.j);
|
||||
zone.emitLockGroupEvent(lockGroupMessage);
|
||||
zone.emitLockGroupEvent(groupId);
|
||||
}
|
||||
|
||||
public *getAllUsersInSquareAroundZone(zone: Zone): Generator<User> {
|
||||
|
||||
@@ -7,14 +7,13 @@ import {
|
||||
EmoteEventMessage,
|
||||
SetPlayerDetailsMessage,
|
||||
PlayerDetailsUpdatedMessage,
|
||||
LockGroupMessage,
|
||||
} from "../Messages/generated/messages_pb";
|
||||
|
||||
export type EntersCallback = (thing: Movable, fromZone: Zone | null, listener: ZoneSocket) => void;
|
||||
export type MovesCallback = (thing: Movable, position: PositionInterface, listener: ZoneSocket) => void;
|
||||
export type LeavesCallback = (thing: Movable, newZone: Zone | null, listener: ZoneSocket) => void;
|
||||
export type EmoteCallback = (emoteEventMessage: EmoteEventMessage, listener: ZoneSocket) => void;
|
||||
export type LockGroupCallback = (lockGroupMessage: LockGroupMessage, listener: ZoneSocket) => void;
|
||||
export type LockGroupCallback = (groupId: number, listener: ZoneSocket) => void;
|
||||
export type PlayerDetailsUpdatedCallback = (
|
||||
playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage,
|
||||
listener: ZoneSocket
|
||||
@@ -111,9 +110,9 @@ export class Zone {
|
||||
}
|
||||
}
|
||||
|
||||
public emitLockGroupEvent(lockGroupMessage: LockGroupMessage) {
|
||||
public emitLockGroupEvent(groupId: number) {
|
||||
for (const listener of this.listeners) {
|
||||
this.onLockGroup(lockGroupMessage, listener);
|
||||
this.onLockGroup(groupId, listener);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ const roomManager: IRoomManagerServer = {
|
||||
message.getFollowabortmessage() as FollowAbortMessage
|
||||
);
|
||||
} else if (message.hasLockgrouppromptmessage()) {
|
||||
socketManager.handleLockGroupMessage(
|
||||
socketManager.handleLockGroupPromptMessage(
|
||||
room,
|
||||
user,
|
||||
message.getLockgrouppromptmessage() as LockGroupPromptMessage
|
||||
|
||||
@@ -39,7 +39,6 @@ import {
|
||||
SetPlayerDetailsMessage,
|
||||
PlayerDetailsUpdatedMessage,
|
||||
GroupUsersUpdateMessage,
|
||||
LockGroupMessage,
|
||||
LockGroupPromptMessage,
|
||||
RoomMessage,
|
||||
} from "../Messages/generated/messages_pb";
|
||||
@@ -287,8 +286,7 @@ export class SocketManager {
|
||||
this.onClientLeave(thing, newZone, listener),
|
||||
(emoteEventMessage: EmoteEventMessage, listener: ZoneSocket) =>
|
||||
this.onEmote(emoteEventMessage, listener),
|
||||
(lockGroupMessage: LockGroupMessage, listener: ZoneSocket) =>
|
||||
this.onLockGroup(lockGroupMessage, listener, roomPromise),
|
||||
(groupId: number, listener: ZoneSocket) => this.onLockGroup(groupId, listener, roomPromise),
|
||||
(playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage, listener: ZoneSocket) =>
|
||||
this.onPlayerDetailsUpdated(playerDetailsUpdatedMessage, listener)
|
||||
)
|
||||
@@ -392,15 +390,11 @@ export class SocketManager {
|
||||
emitZoneMessage(subMessage, client);
|
||||
}
|
||||
|
||||
private async onLockGroup(
|
||||
lockGroupMessage: LockGroupMessage,
|
||||
client: ZoneSocket,
|
||||
roomPromise: PromiseLike<GameRoom> | undefined
|
||||
) {
|
||||
private async onLockGroup(groupId: number, client: ZoneSocket, roomPromise: PromiseLike<GameRoom> | undefined) {
|
||||
if (!roomPromise) {
|
||||
return;
|
||||
}
|
||||
const group = (await roomPromise).getGroupById(lockGroupMessage.getGroupid());
|
||||
const group = (await roomPromise).getGroupById(groupId);
|
||||
if (!group) {
|
||||
return;
|
||||
}
|
||||
@@ -915,10 +909,7 @@ export class SocketManager {
|
||||
return;
|
||||
}
|
||||
group.lock(message.getLock());
|
||||
const lockGroupMessage = new LockGroupMessage();
|
||||
lockGroupMessage.setLock(message.getLock());
|
||||
lockGroupMessage.setGroupid(group.getId());
|
||||
room.emitLockGroupMessage(user, lockGroupMessage);
|
||||
room.emitLockGroupEvent(user, group.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user