forked from noxious/server
bit of cleaning, npm updated, working on character moving, typescript improvements
This commit is contained in:
@ -11,7 +11,20 @@ type SocketResponseT = {
|
||||
export default function (socket: TSocket, io: Server) {
|
||||
socket.on('character:move', async (data: SocketResponseT) => {
|
||||
try {
|
||||
console.log('character:move requested', data);
|
||||
|
||||
if (!socket.character) {
|
||||
console.log('character:move error', 'Character not found');
|
||||
return;
|
||||
}
|
||||
|
||||
socket.character.position_x = data.position_x;
|
||||
socket.character.position_y = data.position_y;
|
||||
|
||||
await CharacterRepository.update(socket.character);
|
||||
console.log(socket.character);
|
||||
|
||||
socket.emit('character:moved', socket.character);
|
||||
} catch (error: any) {
|
||||
console.log('character:move error', error);
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import ZoneManager from "../ZoneManager";
|
||||
import {Character, Zone} from "@prisma/client";
|
||||
|
||||
interface IZoneLoad {
|
||||
zoneId?: number;
|
||||
zoneId: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -19,7 +19,12 @@ export default function (socket: TSocket, io: Server) {
|
||||
socket.on('character:zone:load', async (data: IZoneLoad) => {
|
||||
console.log(`---User ${socket.character?.id} has requested zone.`);
|
||||
|
||||
const zone = await ZoneRepository.getById(1);
|
||||
if (!data.zoneId) {
|
||||
console.log(`---Zone id not provided.`);
|
||||
return;
|
||||
}
|
||||
|
||||
const zone = await ZoneRepository.getById(data.zoneId);
|
||||
|
||||
if (!zone) {
|
||||
console.log(`---Zone not found.`);
|
||||
@ -28,18 +33,21 @@ export default function (socket: TSocket, io: Server) {
|
||||
|
||||
socket.join(zone.name);
|
||||
|
||||
ZoneManager.addCharacterToZone(zone.id, socket.character as Character);
|
||||
|
||||
// const socketConnectionsInRoom = await io.in(zone.name).fetchSockets();
|
||||
// const characters = socketConnectionsInRoom.filter(socket => socket.id !== socket.id);
|
||||
|
||||
// let other clients know of new character
|
||||
socket.to(zone.name).emit('zone:new_join', socket.character);
|
||||
|
||||
// send over zone and characters
|
||||
io.in(zone.name).to(socket.id).emit('character:zone:load', {
|
||||
// send over zone and characters to socket
|
||||
socket.emit('character:zone:load', {
|
||||
zone: zone,
|
||||
characters: ZoneManager.getCharactersInZone(zone.id),
|
||||
});
|
||||
|
||||
// let other clients know of new character
|
||||
io.to(zone.name).emit('zone:character:join', socket.character);
|
||||
|
||||
// add character to zone manager
|
||||
ZoneManager.addCharacterToZone(zone.id, socket.character as Character);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resources:
|
||||
* https://stackoverflow.com/questions/6873607/socket-io-rooms-difference-between-broadcast-to-and-sockets-in
|
||||
*/
|
@ -1,7 +1,18 @@
|
||||
import { Socket, Server } from "socket.io";
|
||||
import { Server } from "socket.io";
|
||||
import {TSocket} from "../utilities/Types";
|
||||
import ZoneManager from "../ZoneManager";
|
||||
|
||||
export default function (socket: Socket, io: Server) {
|
||||
export default function (socket: TSocket, io: Server) {
|
||||
socket.on('disconnect', (data: any) => {
|
||||
console.log(`---User ${socket.id} has disconnected.`);
|
||||
|
||||
|
||||
if (!socket.character) {
|
||||
console.log('User disconnected but had no character set');
|
||||
return;
|
||||
}
|
||||
|
||||
ZoneManager.removeCharacterFromZone(socket.character.id, socket.character.zoneId);
|
||||
|
||||
io.emit('user:disconnect', socket.character);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user