1
0
forked from noxious/server

Joining, leaving rooms and teleporting works again + refactor

This commit is contained in:
2025-01-01 04:46:00 +01:00
parent 30b2028bd8
commit 495e9f192e
5 changed files with 175 additions and 97 deletions

View File

@ -3,6 +3,7 @@ import Database from '#application/database'
import ZoneManager from '#managers/zoneManager'
import CharacterHairRepository from '#repositories/characterHairRepository'
import CharacterRepository from '#repositories/characterRepository'
import TeleportService from '#services/teleportService'
interface CharacterConnectPayload {
characterId: number
@ -59,21 +60,14 @@ export default class CharacterConnectEvent extends BaseEvent {
// wait 300 ms, @TODO: Find a better way to do this
await new Promise(resolve => setTimeout(resolve, 100))
const zone = ZoneManager.getZoneById(character.zone!.id)
if (!zone) {
this.logger.error('zone:character:join error: Zone not found')
return
}
zone.addCharacter(character)
const zoneCharacter = ZoneManager.getCharacterById(character.id)
if (!zoneCharacter) {
this.logger.error('zone:character:join error: Zone character not found')
return
}
await zoneCharacter.teleport(character.zone!.id, character.positionX, character.positionY)
await TeleportService.teleportCharacter(character.id, {
targetZoneId: character.zone!.id,
targetX: character.positionX,
targetY: character.positionY,
rotation: character.rotation,
isInitialJoin: true,
character
})
} catch (error) {
this.handleError('Failed to connect character', error)
}