This commit is contained in:
legop3
2025-11-17 14:29:15 -05:00
parent 922f0b1188
commit fb04103593
9 changed files with 102 additions and 13 deletions
+23
View File
@@ -115,6 +115,7 @@ function removeSocket(socket) {
record.drivers.delete(socket.id);
}
turnService.driverRemoved(roverId, socket.id);
managerEvents.emit('driver', { socketId: socket.id, roverId, action: 'remove' });
}
socketToRovers.delete(socket.id);
disableSpectator(socket);
@@ -147,6 +148,7 @@ function requestControl(roverId, socket, options = {}) {
socket.join(record.room);
turnService.driverAdded(roverId, socket.id, force && isAdmin(socket));
socket.emit('controlGranted', { roverId });
managerEvents.emit('driver', { socketId: socket.id, roverId, action: 'add' });
sendAlert({
color: COLORS.success,
title: 'Control Granted',
@@ -168,6 +170,7 @@ function releaseControl(roverId, socket) {
}
socket.leave(record.room);
turnService.driverRemoved(roverId, socket.id);
managerEvents.emit('driver', { socketId: socket.id, roverId, action: 'remove' });
}
function isDriver(roverId, socket) {
@@ -180,6 +183,24 @@ function canDrive(roverId, socket) {
return turnService.canDrive(roverId, socket) || isAdmin(socket);
}
function getRoversForSocket(socketId) {
const joined = socketToRovers.get(socketId);
if (!joined || joined.size === 0) {
return [];
}
return Array.from(joined);
}
function getPrimaryRoverForSocket(socketId) {
const joined = socketToRovers.get(socketId);
if (!joined || joined.size === 0) {
return null;
}
const iterator = joined.values();
const first = iterator.next();
return first.done ? null : first.value;
}
module.exports = {
upsertRover,
removeRover,
@@ -196,6 +217,8 @@ module.exports = {
disableSpectator,
rovers,
managerEvents,
getRoversForSocket,
getPrimaryRoverForSocket,
};
roleEvents.on('change', ({ socket, role }) => {