Fix for creating new characters, added teleport function to zone character model
This commit is contained in:
@ -56,7 +56,24 @@ export default class CharacterConnectEvent extends BaseEvent {
|
||||
// Emit character connect event
|
||||
callback({ character })
|
||||
|
||||
// @TODO: Teleport character into zone
|
||||
// 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)
|
||||
} catch (error) {
|
||||
this.handleError('Failed to connect character', error)
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import { ZCharacterCreate } from '#application/zodTypes'
|
||||
import { Character } from '#entities/character'
|
||||
import CharacterRepository from '#repositories/characterRepository'
|
||||
import UserRepository from '#repositories/userRepository'
|
||||
import ZoneRepository from '#repositories/zoneRepository'
|
||||
|
||||
export default class CharacterCreateEvent extends BaseEvent {
|
||||
public listen(): void {
|
||||
@ -35,10 +36,19 @@ export default class CharacterCreateEvent extends BaseEvent {
|
||||
return this.socket.emit('notification', { message: 'You can only have 4 characters' })
|
||||
}
|
||||
|
||||
const newCharacter = new Character()
|
||||
await newCharacter.setName(data.name).setUser(user).save()
|
||||
// @TODO: Change to default location
|
||||
const zone = await ZoneRepository.getFirst()
|
||||
|
||||
if (!newCharacter) return this.socket.emit('notification', { message: 'Failed to create character. Please try again (later).' })
|
||||
const newCharacter = new Character()
|
||||
await newCharacter
|
||||
.setName(data.name)
|
||||
.setUser(user)
|
||||
.setZone(zone!)
|
||||
.save()
|
||||
|
||||
if (!newCharacter) {
|
||||
return this.socket.emit('notification', { message: 'Failed to create character. Please try again (later).' })
|
||||
}
|
||||
|
||||
characters = [...characters, newCharacter]
|
||||
|
||||
|
Reference in New Issue
Block a user