listening to lockGroupMessage on front
This commit is contained in:
@@ -48,6 +48,11 @@ export interface GroupCreatedUpdatedMessageInterface {
|
||||
locked: boolean;
|
||||
}
|
||||
|
||||
export interface LockGroupMessageInterface {
|
||||
groupId: number;
|
||||
locked: boolean;
|
||||
}
|
||||
|
||||
export interface GroupUsersUpdateMessageInterface {
|
||||
groupId: number;
|
||||
userIds: number[];
|
||||
|
||||
@@ -40,6 +40,7 @@ import {
|
||||
PositionMessage_Direction,
|
||||
SetPlayerDetailsMessage as SetPlayerDetailsMessageTsProto,
|
||||
PingMessage as PingMessageTsProto,
|
||||
LockGroupMessage,
|
||||
} from "../Messages/ts-proto-generated/messages";
|
||||
import { Subject } from "rxjs";
|
||||
|
||||
@@ -101,6 +102,9 @@ export class RoomConnection implements RoomConnection {
|
||||
private readonly _groupUsersUpdateMessageStream = new Subject<GroupUsersUpdateMessageInterface>();
|
||||
public readonly groupUsersUpdateMessageStream = this._groupUsersUpdateMessageStream.asObservable();
|
||||
|
||||
private readonly _lockGroupMessageStream = new Subject<LockGroupMessage>();
|
||||
public readonly lockGroupMessageStream = this._lockGroupMessageStream.asObservable();
|
||||
|
||||
private readonly _groupDeleteMessageStream = new Subject<GroupDeleteMessageTsProto>();
|
||||
public readonly groupDeleteMessageStream = this._groupDeleteMessageStream.asObservable();
|
||||
|
||||
@@ -264,6 +268,10 @@ export class RoomConnection implements RoomConnection {
|
||||
this._emoteEventMessageStream.next(subMessage.emoteEventMessage);
|
||||
break;
|
||||
}
|
||||
case "lockGroupMessage": {
|
||||
this._lockGroupMessageStream.next(subMessage.lockGroupMessage);
|
||||
break;
|
||||
}
|
||||
case "playerDetailsUpdatedMessage": {
|
||||
this._playerDetailsUpdatedMessageStream.next(subMessage.playerDetailsUpdatedMessage);
|
||||
break;
|
||||
@@ -403,8 +411,6 @@ export class RoomConnection implements RoomConnection {
|
||||
break;
|
||||
}
|
||||
case "groupUsersUpdateMessage": {
|
||||
console.log("GOT GROUP USERS UPDATE MESSAGE");
|
||||
console.log(message.groupUsersUpdateMessage);
|
||||
this._groupUsersUpdateMessageStream.next(message.groupUsersUpdateMessage);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ import { PathfindingManager } from "../../Utils/PathfindingManager";
|
||||
import { ActivatablesManager } from "./ActivatablesManager";
|
||||
import type {
|
||||
GroupCreatedUpdatedMessageInterface,
|
||||
LockGroupMessageInterface,
|
||||
MessageUserMovedInterface,
|
||||
MessageUserPositionInterface,
|
||||
OnConnectInterface,
|
||||
@@ -132,6 +133,11 @@ interface DeleteGroupEventInterface {
|
||||
groupId: number;
|
||||
}
|
||||
|
||||
interface LockGroupEventInterface {
|
||||
type: "LockGroupEvent";
|
||||
event: LockGroupMessageInterface;
|
||||
}
|
||||
|
||||
interface PlayerDetailsUpdatedInterface {
|
||||
type: "PlayerDetailsUpdated";
|
||||
details: PlayerDetailsUpdatedMessageInterface;
|
||||
@@ -147,6 +153,7 @@ export class GameScene extends DirtyScene {
|
||||
mapFile!: ITiledMap;
|
||||
animatedTiles!: AnimatedTiles;
|
||||
groups: Map<number, Sprite>;
|
||||
currentPlayerGroupId?: number;
|
||||
circleTexture!: CanvasTexture;
|
||||
circleRedTexture!: CanvasTexture;
|
||||
pendingEvents = new Queue<
|
||||
@@ -156,6 +163,7 @@ export class GameScene extends DirtyScene {
|
||||
| UserMovedEventInterface
|
||||
| GroupCreatedUpdatedEventInterface
|
||||
| DeleteGroupEventInterface
|
||||
| LockGroupEventInterface
|
||||
| PlayerDetailsUpdatedInterface
|
||||
>();
|
||||
private initPosition: PositionInterface | null = null;
|
||||
@@ -225,6 +233,7 @@ export class GameScene extends DirtyScene {
|
||||
});
|
||||
this.Terrains = [];
|
||||
this.groups = new Map<number, Sprite>();
|
||||
this.currentPlayerGroupId = undefined;
|
||||
this.instance = room.getInstance();
|
||||
|
||||
this.MapUrlFile = MapUrlFile;
|
||||
@@ -720,13 +729,17 @@ export class GameScene extends DirtyScene {
|
||||
);
|
||||
|
||||
this.input.keyboard.on("keydown-L", (event: Event) => {
|
||||
console.log("group locked");
|
||||
this.connection?.emitLockGroup(1, true);
|
||||
if (this.currentPlayerGroupId !== undefined) {
|
||||
console.log("group locked");
|
||||
this.connection?.emitLockGroup(this.currentPlayerGroupId, true);
|
||||
}
|
||||
});
|
||||
|
||||
this.input.keyboard.on("keydown-U", (event: Event) => {
|
||||
console.log("group unlocked");
|
||||
this.connection?.emitLockGroup(1, false);
|
||||
if (this.currentPlayerGroupId !== undefined) {
|
||||
console.log("group unlocked");
|
||||
this.connection?.emitLockGroup(this.currentPlayerGroupId, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -792,7 +805,6 @@ export class GameScene extends DirtyScene {
|
||||
|
||||
this.connection.groupUpdateMessageStream.subscribe(
|
||||
(groupPositionMessage: GroupCreatedUpdatedMessageInterface) => {
|
||||
console.log(groupPositionMessage);
|
||||
this.shareGroupPosition(groupPositionMessage);
|
||||
}
|
||||
);
|
||||
@@ -805,6 +817,10 @@ export class GameScene extends DirtyScene {
|
||||
}
|
||||
});
|
||||
|
||||
this.connection.lockGroupMessageStream.subscribe((message) => {
|
||||
this.lockGroup(message);
|
||||
});
|
||||
|
||||
this.connection.onServerDisconnected(() => {
|
||||
console.log("Player disconnected from server. Reloading scene.");
|
||||
this.cleanupClosingScene();
|
||||
@@ -838,6 +854,12 @@ export class GameScene extends DirtyScene {
|
||||
});
|
||||
});
|
||||
|
||||
this.connection.groupUsersUpdateMessageStream.subscribe((message) => {
|
||||
this.currentPlayerGroupId = message.groupId;
|
||||
console.log("GOT GROUP USERS UPDATE MESSAGE");
|
||||
console.log(message);
|
||||
});
|
||||
|
||||
/**
|
||||
* Triggered when we receive the JWT token to connect to Jitsi
|
||||
*/
|
||||
@@ -1820,19 +1842,22 @@ ${escapedMessage}
|
||||
break;
|
||||
}
|
||||
case "GroupCreatedUpdatedEvent":
|
||||
console.log("CREATE OR UPDATE GROUP");
|
||||
this.doShareGroupPosition(event.event);
|
||||
break;
|
||||
// TODO: CALL THIS ON GROUP LOCK CHANGE
|
||||
// case "GroupCreatedUpdatedEvent":
|
||||
// this.doShareGroupPosition(event.event);
|
||||
// break;
|
||||
case "DeleteGroupEvent":
|
||||
this.doDeleteGroup(event.groupId);
|
||||
break;
|
||||
case "PlayerDetailsUpdated":
|
||||
this.doUpdatePlayerDetails(event.details);
|
||||
break;
|
||||
case "DeleteGroupEvent": {
|
||||
this.doDeleteGroup(event.groupId);
|
||||
if (this.currentPlayerGroupId === event.groupId) {
|
||||
this.currentPlayerGroupId = undefined;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "LockGroupEvent": {
|
||||
this.doLockGroup(event.event);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
const tmp: never = event;
|
||||
}
|
||||
@@ -2027,6 +2052,21 @@ ${escapedMessage}
|
||||
this.groups.delete(groupId);
|
||||
}
|
||||
|
||||
lockGroup(event: LockGroupMessageInterface): void {
|
||||
this.pendingEvents.enqueue({
|
||||
type: "LockGroupEvent",
|
||||
event,
|
||||
});
|
||||
}
|
||||
|
||||
doLockGroup(event: LockGroupMessageInterface): void {
|
||||
const group = this.groups.get(event.groupId);
|
||||
if (!group) {
|
||||
return;
|
||||
}
|
||||
group.setTexture(event.lock ? "circleSprite-red" : "circleSprite-white");
|
||||
}
|
||||
|
||||
doUpdatePlayerDetails(message: PlayerDetailsUpdatedMessageInterface): void {
|
||||
const character = this.MapPlayersByKey.get(message.userId);
|
||||
if (character === undefined) {
|
||||
|
||||
Reference in New Issue
Block a user