listening to lockGroupMessage on front

This commit is contained in:
Hanusiak Piotr
2022-03-02 10:44:26 +01:00
parent d43c8d181a
commit ef22d4ba20
12 changed files with 145 additions and 23 deletions
+12
View File
@@ -6,6 +6,7 @@ import {
EmoteCallback,
EntersCallback,
LeavesCallback,
LockGroupCallback,
MovesCallback,
PlayerDetailsUpdatedCallback,
} from "_Model/Zone";
@@ -22,6 +23,7 @@ import {
VariableMessage,
VariableWithTagMessage,
ServerToClientMessage,
LockGroupMessage,
} from "../Messages/generated/messages_pb";
import { ProtobufUtils } from "../Model/Websocket/ProtobufUtils";
import { RoomSocket, ZoneSocket } from "src/RoomManager";
@@ -66,6 +68,7 @@ export class GameRoom {
onMoves: MovesCallback,
onLeaves: LeavesCallback,
onEmote: EmoteCallback,
onLockGroup: LockGroupCallback,
onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback
) {
// A zone is 10 sprites wide.
@@ -76,6 +79,7 @@ export class GameRoom {
onMoves,
onLeaves,
onEmote,
onLockGroup,
onPlayerDetailsUpdated
);
}
@@ -90,6 +94,7 @@ export class GameRoom {
onMoves: MovesCallback,
onLeaves: LeavesCallback,
onEmote: EmoteCallback,
onLockGroup: LockGroupCallback,
onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback
): Promise<GameRoom> {
const mapDetails = await GameRoom.getMapDetails(roomUrl);
@@ -105,6 +110,7 @@ export class GameRoom {
onMoves,
onLeaves,
onEmote,
onLockGroup,
onPlayerDetailsUpdated
);
@@ -544,6 +550,12 @@ export class GameRoom {
this.positionNotifier.emitEmoteEvent(user, emoteEventMessage);
}
public emitLockGroupMessage(user: User, lockGroupMessage: LockGroupMessage) {
console.log("D2 GAME ROOM EMIT LOCK GROUP MESSAGE");
console.log(lockGroupMessage.getGroupid());
this.positionNotifier.emitLockGroupEvent(user, lockGroupMessage);
}
public addRoomListener(socket: RoomSocket) {
this.roomListeners.add(socket);
}
+12 -1
View File
@@ -12,6 +12,7 @@ import {
EmoteCallback,
EntersCallback,
LeavesCallback,
LockGroupCallback,
MovesCallback,
PlayerDetailsUpdatedCallback,
Zone,
@@ -20,7 +21,7 @@ import { Movable } from "_Model/Movable";
import { PositionInterface } from "_Model/PositionInterface";
import { ZoneSocket } from "../RoomManager";
import { User } from "../Model/User";
import { EmoteEventMessage, SetPlayerDetailsMessage } from "../Messages/generated/messages_pb";
import { EmoteEventMessage, LockGroupMessage, SetPlayerDetailsMessage } from "../Messages/generated/messages_pb";
interface ZoneDescriptor {
i: number;
@@ -50,6 +51,7 @@ export class PositionNotifier {
private onUserMoves: MovesCallback,
private onUserLeaves: LeavesCallback,
private onEmote: EmoteCallback,
private onLockGroup: LockGroupCallback,
private onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback
) {}
@@ -111,6 +113,7 @@ export class PositionNotifier {
this.onUserMoves,
this.onUserLeaves,
this.onEmote,
this.onLockGroup,
this.onPlayerDetailsUpdated,
i,
j
@@ -137,6 +140,14 @@ export class PositionNotifier {
zone.emitEmoteEvent(emoteEventMessage);
}
public emitLockGroupEvent(user: User, lockGroupMessage: LockGroupMessage) {
const zoneDesc = this.getZoneDescriptorFromCoordinates(user.getPosition().x, user.getPosition().y);
const zone = this.getZone(zoneDesc.i, zoneDesc.j);
console.log("D3 emit from ZONE");
console.log(lockGroupMessage.getGroupid());
zone.emitLockGroupEvent(lockGroupMessage);
}
public *getAllUsersInSquareAroundZone(zone: Zone): Generator<User> {
const zoneDescriptor = this.getZoneDescriptorFromCoordinates(zone.x, zone.y);
for (const d of getNearbyDescriptorsMatrix(zoneDescriptor)) {
+10
View File
@@ -7,12 +7,14 @@ 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 PlayerDetailsUpdatedCallback = (
playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage,
listener: ZoneSocket
@@ -27,6 +29,7 @@ export class Zone {
private onMoves: MovesCallback,
private onLeaves: LeavesCallback,
private onEmote: EmoteCallback,
private onLockGroup: LockGroupCallback,
private onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback,
public readonly x: number,
public readonly y: number
@@ -108,6 +111,13 @@ export class Zone {
}
}
public emitLockGroupEvent(lockGroupMessage: LockGroupMessage) {
console.log("D4 ZONE ON LOCK GROUP CALLBACK");
for (const listener of this.listeners) {
this.onLockGroup(lockGroupMessage, listener);
}
}
public updatePlayerDetails(user: User, playerDetails: SetPlayerDetailsMessage) {
const playerDetailsUpdatedMessage = new PlayerDetailsUpdatedMessage();
playerDetailsUpdatedMessage.setUserid(user.id);
+1
View File
@@ -138,6 +138,7 @@ const roomManager: IRoomManagerServer = {
);
} else if (message.hasLockgroupmessage()) {
socketManager.handleLockGroupMessage(
room,
user,
message.getLockgroupmessage() as LockGroupMessage
);
+23 -3
View File
@@ -285,6 +285,8 @@ export class SocketManager {
this.onClientLeave(thing, newZone, listener),
(emoteEventMessage: EmoteEventMessage, listener: ZoneSocket) =>
this.onEmote(emoteEventMessage, listener),
(lockGroupMessage: LockGroupMessage, listener: ZoneSocket) =>
this.onLockGroup(lockGroupMessage, listener),
(playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage, listener: ZoneSocket) =>
this.onPlayerDetailsUpdated(playerDetailsUpdatedMessage, listener)
)
@@ -388,6 +390,16 @@ export class SocketManager {
emitZoneMessage(subMessage, client);
}
private onLockGroup(lockGroupMessage: LockGroupMessage, client: ZoneSocket) {
const subMessage = new SubToPusherMessage();
subMessage.setLockgroupmessage(lockGroupMessage);
console.log("D5 SOCKET MANAGER ON LOCK GROUP");
console.log(lockGroupMessage.getGroupid());
console.log(lockGroupMessage.getLock());
emitZoneMessage(subMessage, client);
}
private onPlayerDetailsUpdated(playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage, client: ZoneSocket) {
const subMessage = new SubToPusherMessage();
subMessage.setPlayerdetailsupdatedmessage(playerDetailsUpdatedMessage);
@@ -892,9 +904,17 @@ export class SocketManager {
}
}
handleLockGroupMessage(user: User, message: LockGroupMessage) {
console.log(`lock group: ${message.getLock()}`);
user.group?.lock(message.getLock());
handleLockGroupMessage(room: GameRoom, user: User, message: LockGroupMessage) {
console.log("D1 HANDLE LOCK GROUP MESSAGE");
const group = user.group;
if (!group) {
return;
}
group.lock(message.getLock());
const lockGroupMessage = new LockGroupMessage();
lockGroupMessage.setLock(message.getLock());
lockGroupMessage.setGroupid(message.getGroupid());
room.emitLockGroupMessage(user, lockGroupMessage);
}
}
+2
View File
@@ -25,6 +25,7 @@ describe("PositionNotifier", () => {
leaveTriggered = true;
},
() => {},
() => {},
() => {}
);
@@ -132,6 +133,7 @@ describe("PositionNotifier", () => {
leaveTriggered = true;
},
() => {},
() => {},
() => {}
);