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 {
|
try {
|
||||||
const character = await CharacterRepository.getByUserAndId(this.socket?.user?.id as number, data.character_id)
|
const character = await CharacterRepository.getByUserAndId(this.socket?.user?.id as number, data.character_id)
|
||||||
if (!character) return
|
if (!character) return
|
||||||
this.socket.characterId = character.id
|
|
||||||
|
|
||||||
CharacterManager.initCharacter(character as ExtendedCharacter)
|
this.socket.characterId = character.id
|
||||||
this.socket.emit('character:connect', character)
|
this.socket.emit('character:connect', character)
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.log('character:connect error', error)
|
console.log('character:connect error', error)
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import { Server } from 'socket.io'
|
import { Server } from 'socket.io'
|
||||||
import { TSocket } from '../../utilities/types'
|
import { ExtendedCharacter, TSocket } from '../../utilities/types'
|
||||||
import ZoneRepository from '../../repositories/zoneRepository'
|
import ZoneRepository from '../../repositories/zoneRepository'
|
||||||
import { Character, Zone } from '@prisma/client'
|
import { Character, Zone } from '@prisma/client'
|
||||||
import CharacterManager from '../../managers/characterManager'
|
import CharacterManager from '../../managers/characterManager'
|
||||||
import { gameLogger } from '../../utilities/logger'
|
import { gameLogger } from '../../utilities/logger'
|
||||||
|
import CharacterRepository from '../../repositories/characterRepository'
|
||||||
|
|
||||||
interface IResponse {
|
interface IResponse {
|
||||||
zone: Zone
|
zone: Zone
|
||||||
@ -22,10 +23,16 @@ export default class CharacterJoinEvent {
|
|||||||
|
|
||||||
private async handleCharacterJoin(callback: (response: IResponse) => void): Promise<void> {
|
private async handleCharacterJoin(callback: (response: IResponse) => void): Promise<void> {
|
||||||
try {
|
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)
|
const character = await CharacterRepository.getById(this.socket.characterId as number)
|
||||||
if (!character) return
|
if (!character) {
|
||||||
|
gameLogger.error('zone:character:join error', 'Character not found')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const zone = await ZoneRepository.getById(character.zoneId)
|
const zone = await ZoneRepository.getById(character.zoneId)
|
||||||
if (!zone) {
|
if (!zone) {
|
||||||
@ -33,10 +40,7 @@ export default class CharacterJoinEvent {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.zoneId) {
|
CharacterManager.initCharacter(character as ExtendedCharacter)
|
||||||
this.socket.leave(character.zoneId.toString())
|
|
||||||
this.io.to(character.zoneId.toString()).emit('zone:character:leave', character)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.socket.join(zone.id.toString())
|
this.socket.join(zone.id.toString())
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user