forked from noxious/server
#143 : Fix switching back to zone from zoneEditor
This commit is contained in:
parent
21a75f6cbe
commit
dec6b36699
@ -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)
|
||||
|
@ -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())
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user