1
0
forked from noxious/server
noxious_server/src/app/events/CharacterZoneLoad.ts
2024-05-28 21:54:34 +02:00

41 lines
1.2 KiB
TypeScript

import { Socket, Server } from "socket.io";
import ZoneRepository from "../repositories/ZoneRepository";
import ZoneManager from "../ZoneManager";
import {Zone} from "@prisma/client";
interface IZoneLoad {
zoneId?: number;
}
/**
* @TODO: Implement zone loading, check if zone id is given or else load current character zone
*
* Handle character zone load event
* @param socket
* @param io
*/
export default function CharacterZoneLoad(socket: Socket, io: Server) {
socket.on('character:zone:load', async (data: IZoneLoad) => {
console.log(`---User ${socket.id} has requested zone.`);
const zone = await ZoneRepository.getById(1);
if (!zone) {
console.log(`---Zone not found.`);
return;
}
socket.join(zone.name);
const socketConnectionsInRoom = await io.in(zone.name).fetchSockets();
const characters = socketConnectionsInRoom.filter(socket => socket.id !== socket.id);
// update to match with model Character
// send over zone and characters
io.in(zone.name).to(socket.id).emit('character:zone:load', {
zone: zone,
characters: characters,
});
});
}