forked from noxious/server
bit of cleaning, npm updated, working on character moving, typescript improvements
This commit is contained in:
parent
87d4313843
commit
f791f1d5d8
66
package-lock.json
generated
66
package-lock.json
generated
@ -64,9 +64,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/client": {
|
"node_modules/@prisma/client": {
|
||||||
"version": "5.14.0",
|
"version": "5.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.15.0.tgz",
|
||||||
"integrity": "sha512-akMSuyvLKeoU4LeyBAUdThP/uhVP3GuLygFE3MlYzaCb3/J8SfsYBE5PkaFuLuVpLyA6sFoW+16z/aPhNAESqg==",
|
"integrity": "sha512-wPTeTjbd2Q0abOeffN7zCDCbkp9C9cF+e9HPiI64lmpehyq2TepgXE+sY7FXr7Rhbb21prLMnhXX27/E11V09w==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -82,48 +82,48 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/debug": {
|
"node_modules/@prisma/debug": {
|
||||||
"version": "5.14.0",
|
"version": "5.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.15.0.tgz",
|
||||||
"integrity": "sha512-iq56qBZuFfX3fCxoxT8gBX33lQzomBU0qIUaEj1RebsKVz1ob/BVH1XSBwwwvRVtZEV1b7Fxx2eVu34Ge/mg3w==",
|
"integrity": "sha512-QpEAOjieLPc/4sMny/WrWqtpIAmBYsgqwWlWwIctqZO0AbhQ9QcT6x2Ut3ojbDo/pFRCCA1Z1+xm2MUy7fAkZA==",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/engines": {
|
"node_modules/@prisma/engines": {
|
||||||
"version": "5.14.0",
|
"version": "5.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.15.0.tgz",
|
||||||
"integrity": "sha512-lgxkKZ6IEygVcw6IZZUlPIfLQ9hjSYAtHjZ5r64sCLDgVzsPFCi2XBBJgzPMkOQ5RHzUD4E/dVdpn9+ez8tk1A==",
|
"integrity": "sha512-hXL5Sn9hh/ZpRKWiyPA5GbvF3laqBHKt6Vo70hYqqOhh5e0ZXDzHcdmxNvOefEFeqxra2DMz2hNbFoPvqrVe1w==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/debug": "5.14.0",
|
"@prisma/debug": "5.15.0",
|
||||||
"@prisma/engines-version": "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48",
|
"@prisma/engines-version": "5.15.0-29.12e25d8d06f6ea5a0252864dd9a03b1bb51f3022",
|
||||||
"@prisma/fetch-engine": "5.14.0",
|
"@prisma/fetch-engine": "5.15.0",
|
||||||
"@prisma/get-platform": "5.14.0"
|
"@prisma/get-platform": "5.15.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/engines-version": {
|
"node_modules/@prisma/engines-version": {
|
||||||
"version": "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48",
|
"version": "5.15.0-29.12e25d8d06f6ea5a0252864dd9a03b1bb51f3022",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.15.0-29.12e25d8d06f6ea5a0252864dd9a03b1bb51f3022.tgz",
|
||||||
"integrity": "sha512-ip6pNkRo1UxWv+6toxNcYvItNYaqQjXdFNGJ+Nuk2eYtRoEdoF13wxo7/jsClJFFenMPVNVqXQDV0oveXnR1cA==",
|
"integrity": "sha512-3BEgZ41Qb4oWHz9kZNofToRvNeS4LZYaT9pienR1gWkjhky6t6K1NyeWNBkqSj2llgraUNbgMOCQPY4f7Qp5wA==",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/fetch-engine": {
|
"node_modules/@prisma/fetch-engine": {
|
||||||
"version": "5.14.0",
|
"version": "5.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.15.0.tgz",
|
||||||
"integrity": "sha512-VrheA9y9DMURK5vu8OJoOgQpxOhas3qF0IBHJ8G/0X44k82kc8E0w98HCn2nhnbOOMwbWsJWXfLC2/F8n5u0gQ==",
|
"integrity": "sha512-z6AY5yyXxc20Klj7wwnfGP0iIUkVKzybqapT02zLYR/nf9ynaeN8bq73WRmi1TkLYn+DJ5Qy+JGu7hBf1pE78A==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/debug": "5.14.0",
|
"@prisma/debug": "5.15.0",
|
||||||
"@prisma/engines-version": "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48",
|
"@prisma/engines-version": "5.15.0-29.12e25d8d06f6ea5a0252864dd9a03b1bb51f3022",
|
||||||
"@prisma/get-platform": "5.14.0"
|
"@prisma/get-platform": "5.15.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/get-platform": {
|
"node_modules/@prisma/get-platform": {
|
||||||
"version": "5.14.0",
|
"version": "5.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.15.0.tgz",
|
||||||
"integrity": "sha512-/yAyBvcEjRv41ynZrhdrPtHgk47xLRRq/o5eWGcUpBJ1YrUZTYB8EoPiopnP7iQrMATK8stXQdPOoVlrzuTQZw==",
|
"integrity": "sha512-1GULDkW4+/VQb73vihxCBSc4Chc2x88MA+O40tcZFjmBzG4/fF44PaXFxUqKSFltxU9L9GIMLhh0Gfkk/pUbtg==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/debug": "5.14.0"
|
"@prisma/debug": "5.15.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@socket.io/component-emitter": {
|
"node_modules/@socket.io/component-emitter": {
|
||||||
@ -250,9 +250,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.14.0",
|
"version": "20.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.1.tgz",
|
||||||
"integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==",
|
"integrity": "sha512-T2MzSGEu+ysB/FkWfqmhV3PLyQlowdptmmgD20C6QxsS8Fmv5SjpZ1ayXaEC0S21/h5UJ9iA6W/5vSNU5l00OA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~5.26.4"
|
"undici-types": "~5.26.4"
|
||||||
@ -1376,13 +1376,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prisma": {
|
"node_modules/prisma": {
|
||||||
"version": "5.14.0",
|
"version": "5.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/prisma/-/prisma-5.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/prisma/-/prisma-5.15.0.tgz",
|
||||||
"integrity": "sha512-gCNZco7y5XtjrnQYeDJTiVZmT/ncqCr5RY1/Cf8X2wgLRmyh9ayPAGBNziI4qEE4S6SxCH5omQLVo9lmURaJ/Q==",
|
"integrity": "sha512-JA81ACQSCi3a7NUOgonOIkdx8PAVkO+HbUOxmd00Yb8DgIIEpr2V9+Qe/j6MLxIgWtE/OtVQ54rVjfYRbZsCfw==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/engines": "5.14.0"
|
"@prisma/engines": "5.15.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"prisma": "build/index.js"
|
"prisma": "build/index.js"
|
||||||
|
@ -11,7 +11,20 @@ type SocketResponseT = {
|
|||||||
export default function (socket: TSocket, io: Server) {
|
export default function (socket: TSocket, io: Server) {
|
||||||
socket.on('character:move', async (data: SocketResponseT) => {
|
socket.on('character:move', async (data: SocketResponseT) => {
|
||||||
try {
|
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) {
|
} catch (error: any) {
|
||||||
console.log('character:move error', error);
|
console.log('character:move error', error);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import ZoneManager from "../ZoneManager";
|
|||||||
import {Character, Zone} from "@prisma/client";
|
import {Character, Zone} from "@prisma/client";
|
||||||
|
|
||||||
interface IZoneLoad {
|
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) => {
|
socket.on('character:zone:load', async (data: IZoneLoad) => {
|
||||||
console.log(`---User ${socket.character?.id} has requested zone.`);
|
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) {
|
if (!zone) {
|
||||||
console.log(`---Zone not found.`);
|
console.log(`---Zone not found.`);
|
||||||
@ -28,18 +33,21 @@ export default function (socket: TSocket, io: Server) {
|
|||||||
|
|
||||||
socket.join(zone.name);
|
socket.join(zone.name);
|
||||||
|
|
||||||
ZoneManager.addCharacterToZone(zone.id, socket.character as Character);
|
// send over zone and characters to socket
|
||||||
|
socket.emit('character:zone:load', {
|
||||||
// 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', {
|
|
||||||
zone: zone,
|
zone: zone,
|
||||||
characters: ZoneManager.getCharactersInZone(zone.id),
|
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) => {
|
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);
|
||||||
});
|
});
|
||||||
}
|
}
|
@ -61,6 +61,20 @@ class CharacterRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async update(character: Character): Promise<Character | null> {
|
||||||
|
try {
|
||||||
|
return await prisma.character.update({
|
||||||
|
where: {
|
||||||
|
id: character.id,
|
||||||
|
},
|
||||||
|
data: character
|
||||||
|
});
|
||||||
|
} catch (error: any) {
|
||||||
|
// Handle error
|
||||||
|
throw new Error(`Failed to update character: ${error.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async delete(id: number): Promise<Character | null> {
|
async delete(id: number): Promise<Character | null> {
|
||||||
try {
|
try {
|
||||||
return await prisma.character.delete({
|
return await prisma.character.delete({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user