import { BaseEvent } from '#application/base/baseEvent' import MapManager from '#managers/mapManager' export default class DisconnectEvent extends BaseEvent { public listen(): void { this.socket.on('disconnect', this.handleEvent.bind(this)) } private async handleEvent(): Promise { try { if (!this.socket.userId) { this.logger.info('User disconnected but had no user set') return } this.io.emit('user:disconnect', this.socket.userId) const mapCharacter = MapManager.getCharacterById(this.socket.characterId!) if (!mapCharacter) { this.logger.info('User disconnected but had no character set') return } await mapCharacter.disconnect(this.socket, this.io) this.logger.info('User disconnected along with their character') } catch (error: any) { this.logger.error('disconnect error: ' + error.message) } } }