diff --git a/src/events/gameMaster/assetManager/characterHair/list.ts b/src/events/gameMaster/assetManager/characterHair/list.ts index 2aa19be..81588d3 100644 --- a/src/events/gameMaster/assetManager/characterHair/list.ts +++ b/src/events/gameMaster/assetManager/characterHair/list.ts @@ -15,6 +15,7 @@ export default class characterHairListEvent extends BaseEvent { const characterHairRepository = new CharacterHairRepository() const items = await characterHairRepository.getAll() + await characterHairRepository.getEntityManager().populate(items, ['sprite']) return callback(items) } catch (error) { diff --git a/src/events/gameMaster/assetManager/characterHair/update.ts b/src/events/gameMaster/assetManager/characterHair/update.ts index 88253b7..64bdf8d 100644 --- a/src/events/gameMaster/assetManager/characterHair/update.ts +++ b/src/events/gameMaster/assetManager/characterHair/update.ts @@ -22,12 +22,13 @@ export default class CharacterHairUpdateEvent extends BaseEvent { try { if (!(await this.isCharacterGM())) return - const sprite = await SpriteRepository.getById(data.spriteId) - const characterHair = await CharacterHairRepository.getById(data.id) + const spriteRepository = new SpriteRepository() + const sprite = await spriteRepository.getById(data.spriteId) + if (!sprite) return callback(false) - if (!characterHair) { - return callback(false) - } + const characterHairRepository = new CharacterHairRepository() + const characterHair = await characterHairRepository.getById(data.id) + if (!characterHair) return callback(false) await characterHair.setName(data.name).setGender(data.gender).setIsSelectable(data.isSelectable).setSprite(sprite).save() return callback(true) diff --git a/src/events/gameMaster/assetManager/characterType/list.ts b/src/events/gameMaster/assetManager/characterType/list.ts index a3fc116..c99c5c4 100644 --- a/src/events/gameMaster/assetManager/characterType/list.ts +++ b/src/events/gameMaster/assetManager/characterType/list.ts @@ -15,6 +15,7 @@ export default class CharacterTypeListEvent extends BaseEvent { const characterTypeRepository = new CharacterTypeRepository() const items = await characterTypeRepository.getAll() + await characterTypeRepository.getEntityManager().populate(items, ['sprite']) return callback(items) } catch (error) { diff --git a/src/events/gameMaster/assetManager/characterType/update.ts b/src/events/gameMaster/assetManager/characterType/update.ts index 5016ffa..4f048ee 100644 --- a/src/events/gameMaster/assetManager/characterType/update.ts +++ b/src/events/gameMaster/assetManager/characterType/update.ts @@ -1,53 +1,49 @@ -import { CharacterGender, CharacterRace } from '@prisma/client' -import { Server } from 'socket.io' - -import prisma from '#application/prisma' -import { TSocket } from '#application/types' -import characterRepository from '#repositories/characterRepository' +import CharacterRepository from '#repositories/characterRepository' +import { UUID } from '#application/types' +import { BaseEvent } from '#application/base/baseEvent' +import CharacterTypeRepository from '#repositories/characterTypeRepository' +import { CharacterGender, CharacterRace } from '#application/enums' +import SpriteRepository from '#repositories/spriteRepository' type Payload = { - id: number + id: UUID name: string gender: CharacterGender race: CharacterRace isSelectable: boolean - spriteId: string + spriteId: UUID } -export default class CharacterTypeUpdateEvent { - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} - +export default class CharacterTypeUpdateEvent extends BaseEvent { public listen(): void { this.socket.on('gm:characterType:update', this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { - const character = await characterRepository.getById(this.socket.characterId!) - if (!character) return callback(false) - - if (character.role !== 'gm') { - return callback(false) - } try { - await prisma.characterType.update({ - where: { id: data.id }, - data: { - name: data.name, - gender: data.gender, - race: data.race, - isSelectable: data.isSelectable, - spriteId: data.spriteId - } - }) + if (!(await this.isCharacterGM())) return - callback(true) + const characterTypeRepository = new CharacterTypeRepository() + const characterType = await characterTypeRepository.getById(data.id) + if (!characterType) return callback(false) + + const spriteRepository = new SpriteRepository() + const sprite = await spriteRepository.getById(data.spriteId) + if (!sprite) return callback(false) + + await characterType + .setName(data.name) + .setGender(data.gender) + .setRace(data.race) + .setIsSelectable(data.isSelectable) + .setSprite(sprite) + .save() + + return callback(true) } catch (error) { console.error(error) - callback(false) + return callback(false) } } }