Switched group position to protobuf
This commit is contained in:
parent
76d3779438
commit
b4f971c501
5 changed files with 38 additions and 22 deletions
|
@ -27,7 +27,7 @@ import {
|
||||||
SetPlayerDetailsMessage,
|
SetPlayerDetailsMessage,
|
||||||
SubMessage,
|
SubMessage,
|
||||||
UserMovedMessage,
|
UserMovedMessage,
|
||||||
BatchMessage, GroupUpdateMessage, PointMessage
|
BatchMessage, GroupUpdateMessage, PointMessage, GroupDeleteMessage
|
||||||
} from "../../../messages/generated/messages_pb";
|
} from "../../../messages/generated/messages_pb";
|
||||||
import {UserMovesMessage} from "../../../messages/generated/messages_pb";
|
import {UserMovesMessage} from "../../../messages/generated/messages_pb";
|
||||||
import Direction = PositionMessage.Direction;
|
import Direction = PositionMessage.Direction;
|
||||||
|
@ -573,7 +573,7 @@ export class IoSocketController {
|
||||||
clientListener.emit(SocketIoEvent.USER_LEFT, clientUser.userId);
|
clientListener.emit(SocketIoEvent.USER_LEFT, clientUser.userId);
|
||||||
//console.log("Sending USER_LEFT event");
|
//console.log("Sending USER_LEFT event");
|
||||||
} else if (thing instanceof Group) {
|
} else if (thing instanceof Group) {
|
||||||
clientListener.emit(SocketIoEvent.GROUP_DELETE, thing.getId());
|
this.emitDeleteGroupEvent(clientListener, thing.getId());
|
||||||
} else {
|
} else {
|
||||||
console.error('Unexpected type for Movable.');
|
console.error('Unexpected type for Movable.');
|
||||||
}
|
}
|
||||||
|
@ -584,10 +584,7 @@ export class IoSocketController {
|
||||||
|
|
||||||
// Dispatch groups position to newly connected user
|
// Dispatch groups position to newly connected user
|
||||||
world.getGroups().forEach((group: Group) => {
|
world.getGroups().forEach((group: Group) => {
|
||||||
Client.emit(SocketIoEvent.GROUP_CREATE_UPDATE, {
|
this.emitCreateUpdateGroupEvent(Client, group);
|
||||||
position: group.getPosition(),
|
|
||||||
groupId: group.getId()
|
|
||||||
} as GroupUpdateInterface);
|
|
||||||
});
|
});
|
||||||
//join world
|
//join world
|
||||||
world.join(Client, Client.position);
|
world.join(Client, Client.position);
|
||||||
|
@ -603,7 +600,23 @@ export class IoSocketController {
|
||||||
groupUpdateMessage.setGroupid(group.getId());
|
groupUpdateMessage.setGroupid(group.getId());
|
||||||
groupUpdateMessage.setPosition(pointMessage);
|
groupUpdateMessage.setPosition(pointMessage);
|
||||||
|
|
||||||
socket.emit(SocketIoEvent.GROUP_CREATE_UPDATE, groupUpdateMessage.serializeBinary().buffer);
|
const subMessage = new SubMessage();
|
||||||
|
subMessage.setGroupupdatemessage(groupUpdateMessage);
|
||||||
|
|
||||||
|
const client : ExSocketInterface = socket as ExSocketInterface;
|
||||||
|
emitInBatch(client, SocketIoEvent.GROUP_CREATE_UPDATE, subMessage);
|
||||||
|
//socket.emit(SocketIoEvent.GROUP_CREATE_UPDATE, groupUpdateMessage.serializeBinary().buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
private emitDeleteGroupEvent(socket: Socket, groupId: number): void {
|
||||||
|
const groupDeleteMessage = new GroupDeleteMessage();
|
||||||
|
groupDeleteMessage.setGroupid(groupId);
|
||||||
|
|
||||||
|
const subMessage = new SubMessage();
|
||||||
|
subMessage.setGroupdeletemessage(groupDeleteMessage);
|
||||||
|
|
||||||
|
const client : ExSocketInterface = socket as ExSocketInterface;
|
||||||
|
emitInBatch(client, SocketIoEvent.GROUP_DELETE, subMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -90,9 +90,9 @@ export class World {
|
||||||
this.positionNotifier.updatePosition(user, userPosition, user.position);
|
this.positionNotifier.updatePosition(user, userPosition, user.position);
|
||||||
|
|
||||||
const oldGroupPosition = user.group?.getPosition();
|
const oldGroupPosition = user.group?.getPosition();
|
||||||
user.group?.updatePosition();
|
|
||||||
|
|
||||||
user.position = userPosition;
|
user.position = userPosition;
|
||||||
|
user.group?.updatePosition();
|
||||||
|
|
||||||
if (user.silent) {
|
if (user.silent) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -2,7 +2,7 @@ import Axios from "axios";
|
||||||
import {API_URL} from "./Enum/EnvironmentVariable";
|
import {API_URL} from "./Enum/EnvironmentVariable";
|
||||||
import {MessageUI} from "./Logger/MessageUI";
|
import {MessageUI} from "./Logger/MessageUI";
|
||||||
import {
|
import {
|
||||||
BatchMessage, GroupUpdateMessage,
|
BatchMessage, GroupDeleteMessage, GroupUpdateMessage,
|
||||||
PositionMessage,
|
PositionMessage,
|
||||||
SetPlayerDetailsMessage, UserMovedMessage,
|
SetPlayerDetailsMessage, UserMovedMessage,
|
||||||
UserMovesMessage,
|
UserMovesMessage,
|
||||||
|
@ -160,6 +160,12 @@ export class Connection implements Connection {
|
||||||
if (message.hasUsermovedmessage()) {
|
if (message.hasUsermovedmessage()) {
|
||||||
event = EventMessage.USER_MOVED;
|
event = EventMessage.USER_MOVED;
|
||||||
payload = message.getUsermovedmessage();
|
payload = message.getUsermovedmessage();
|
||||||
|
} else if (message.hasGroupupdatemessage()) {
|
||||||
|
event = EventMessage.GROUP_CREATE_UPDATE;
|
||||||
|
payload = message.getGroupupdatemessage();
|
||||||
|
} else if (message.hasGroupdeletemessage()) {
|
||||||
|
event = EventMessage.GROUP_DELETE;
|
||||||
|
payload = message.getGroupdeletemessage();
|
||||||
} else {
|
} else {
|
||||||
throw new Error('Unexpected batch message type');
|
throw new Error('Unexpected batch message type');
|
||||||
}
|
}
|
||||||
|
@ -230,7 +236,6 @@ export class Connection implements Connection {
|
||||||
if(!this.socket){
|
if(!this.socket){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const point = new Point(x, y, direction, moving);
|
|
||||||
const positionMessage = new PositionMessage();
|
const positionMessage = new PositionMessage();
|
||||||
positionMessage.setX(Math.floor(x));
|
positionMessage.setX(Math.floor(x));
|
||||||
positionMessage.setY(Math.floor(y));
|
positionMessage.setY(Math.floor(y));
|
||||||
|
@ -264,6 +269,8 @@ export class Connection implements Connection {
|
||||||
userMovesMessage.setPosition(positionMessage);
|
userMovesMessage.setPosition(positionMessage);
|
||||||
userMovesMessage.setViewport(viewportMessage);
|
userMovesMessage.setViewport(viewportMessage);
|
||||||
|
|
||||||
|
//console.log('Sending position ', positionMessage.getX(), positionMessage.getY());
|
||||||
|
|
||||||
this.socket.emit(EventMessage.USER_POSITION, userMovesMessage.serializeBinary().buffer);
|
this.socket.emit(EventMessage.USER_POSITION, userMovesMessage.serializeBinary().buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,16 +308,7 @@ export class Connection implements Connection {
|
||||||
}
|
}
|
||||||
|
|
||||||
public onGroupUpdatedOrCreated(callback: (groupCreateUpdateMessage: GroupCreatedUpdatedMessageInterface) => void): void {
|
public onGroupUpdatedOrCreated(callback: (groupCreateUpdateMessage: GroupCreatedUpdatedMessageInterface) => void): void {
|
||||||
// TODO: READ THIS FROM BINARY FORMAT
|
this.onBatchMessage(EventMessage.GROUP_CREATE_UPDATE, (message: GroupUpdateMessage) => {
|
||||||
// TODO: READ THIS FROM BINARY FORMAT
|
|
||||||
// TODO: READ THIS FROM BINARY FORMAT
|
|
||||||
// TODO: CHANGE THIS EVENT TO BE PART OF THE BATCHES
|
|
||||||
// TODO: CHANGE THIS EVENT TO BE PART OF THE BATCHES
|
|
||||||
// TODO: CHANGE THIS EVENT TO BE PART OF THE BATCHES
|
|
||||||
// TODO: CHANGE THIS EVENT TO BE PART OF THE BATCHES
|
|
||||||
// TODO: CHANGE THIS EVENT TO BE PART OF THE BATCHES
|
|
||||||
this.socket.on(EventMessage.GROUP_CREATE_UPDATE, (buffer: ArrayBuffer) => {
|
|
||||||
const message = GroupUpdateMessage.deserializeBinary(new Uint8Array(buffer));
|
|
||||||
const position = message.getPosition();
|
const position = message.getPosition();
|
||||||
if (position === undefined) {
|
if (position === undefined) {
|
||||||
throw new Error('Missing position in GROUP_CREATE_UPDATE');
|
throw new Error('Missing position in GROUP_CREATE_UPDATE');
|
||||||
|
@ -321,12 +319,15 @@ export class Connection implements Connection {
|
||||||
position: position.toObject()
|
position: position.toObject()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//console.log('Group position: ', position.toObject());
|
||||||
callback(groupCreateUpdateMessage);
|
callback(groupCreateUpdateMessage);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public onGroupDeleted(callback: (groupId: number) => void): void {
|
public onGroupDeleted(callback: (groupId: number) => void): void {
|
||||||
this.socket.on(EventMessage.GROUP_DELETE, callback)
|
this.onBatchMessage(EventMessage.GROUP_DELETE, (message: GroupDeleteMessage) => {
|
||||||
|
callback(message.getGroupid());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public onConnectError(callback: (error: object) => void): void {
|
public onConnectError(callback: (error: object) => void): void {
|
||||||
|
|
|
@ -50,6 +50,8 @@ message UserMovedMessage {
|
||||||
message SubMessage {
|
message SubMessage {
|
||||||
oneof message {
|
oneof message {
|
||||||
UserMovedMessage userMovedMessage = 1;
|
UserMovedMessage userMovedMessage = 1;
|
||||||
|
GroupUpdateMessage groupUpdateMessage = 2;
|
||||||
|
GroupDeleteMessage groupDeleteMessage = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"main": "generated/src/proto/messages_pb.js",
|
"main": "generated/src/proto/messages_pb.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"proto": "protoc --plugin=\"protoc-gen-ts=./node_modules/.bin/protoc-gen-ts\" --js_out=\"import_style=commonjs,binary:generated\" --ts_out=\"generated\" messages.proto",
|
"proto": "protoc --plugin=\"protoc-gen-ts=./node_modules/.bin/protoc-gen-ts\" --js_out=\"import_style=commonjs,binary:generated\" --ts_out=\"generated\" messages.proto",
|
||||||
"proto:watch": "inotifywait -q -m -e close_write messages.proto | while read -r filename event; do yarn run proto; done"
|
"proto:watch": "yarn run proto || inotifywait -q -m -e close_write messages.proto | while read -r filename event; do yarn run proto; done"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue