1
0
forked from noxious/server

#143 : Fix switching back to zone from zoneEditor

This commit is contained in:
Dennis Postma 2024-09-28 02:52:16 +02:00
parent 21a75f6cbe
commit dec6b36699
2 changed files with 13 additions and 10 deletions

View File

@ -22,9 +22,8 @@ export default class CharacterConnectEvent {
try {
const character = await CharacterRepository.getByUserAndId(this.socket?.user?.id as number, data.character_id)
if (!character) return
this.socket.characterId = character.id
CharacterManager.initCharacter(character as ExtendedCharacter)
this.socket.characterId = character.id
this.socket.emit('character:connect', character)
} catch (error: any) {
console.log('character:connect error', error)

View File

@ -1,9 +1,10 @@
import { Server } from 'socket.io'
import { TSocket } from '../../utilities/types'
import { ExtendedCharacter, TSocket } from '../../utilities/types'
import ZoneRepository from '../../repositories/zoneRepository'
import { Character, Zone } from '@prisma/client'
import CharacterManager from '../../managers/characterManager'
import { gameLogger } from '../../utilities/logger'
import CharacterRepository from '../../repositories/characterRepository'
interface IResponse {
zone: Zone
@ -22,10 +23,16 @@ export default class CharacterJoinEvent {
private async handleCharacterJoin(callback: (response: IResponse) => void): Promise<void> {
try {
if (!this.socket.characterId) return
if (!this.socket.characterId) {
gameLogger.error('zone:character:join error', 'Zone requested but no character id set')
return
}
const character = CharacterManager.getCharacterFromSocket(this.socket)
if (!character) return
const character = await CharacterRepository.getById(this.socket.characterId as number)
if (!character) {
gameLogger.error('zone:character:join error', 'Character not found')
return
}
const zone = await ZoneRepository.getById(character.zoneId)
if (!zone) {
@ -33,10 +40,7 @@ export default class CharacterJoinEvent {
return
}
if (character.zoneId) {
this.socket.leave(character.zoneId.toString())
this.io.to(character.zoneId.toString()).emit('zone:character:leave', character)
}
CharacterManager.initCharacter(character as ExtendedCharacter)
this.socket.join(zone.id.toString())