import { Server } from 'socket.io' import { TSocket } from '../../../../utilities/types' import prisma from '../../../../utilities/prisma' import CharacterManager from '../../../../managers/characterManager' import characterRepository from '../../../../repositories/characterRepository' type Payload = { id: string name: string tags: string[] originX: number originY: number isAnimated: boolean frameSpeed: number frameWidth: number frameHeight: number } /** * Handle game master object update event * @param socket * @param io */ export default function (io: Server, socket: TSocket) { socket.on('gm:object:update', async (data: Payload, callback: (success: boolean) => void) => { const character = await characterRepository.getById(socket.characterId as number) if (!character) return callback(false) if (character.role !== 'gm') { return callback(false) } try { const object = await prisma.object.update({ where: { id: data.id }, data: { name: data.name, tags: data.tags, originX: data.originX, originY: data.originY, isAnimated: data.isAnimated, frameSpeed: data.frameSpeed, frameWidth: data.frameWidth, frameHeight: data.frameHeight } }) callback(true) } catch (error) { console.error(error) callback(false) } }) }