forked from noxious/server
Almost finalised refactoring
This commit is contained in:
@ -15,30 +15,14 @@ export default class CharacterConnectEvent extends BaseEvent {
|
||||
this.socket.on('character:connect', this.handleEvent.bind(this))
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle character connect event
|
||||
* @TODO:
|
||||
* 1. Check if character is already connected
|
||||
* 2. Update character hair if provided
|
||||
* 3. Emit character connect event
|
||||
* 4. Let other clients know of new character
|
||||
* @param data
|
||||
* @param callback
|
||||
* @private
|
||||
*/
|
||||
private async handleEvent(data: CharacterConnectPayload, callback: (response: any) => void): Promise<void> {
|
||||
if (!this.socket.userId) {
|
||||
this.emitError('User not authenticated')
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
if (await this.checkForActiveCharacters()) {
|
||||
this.emitError('You are already connected to another character')
|
||||
return
|
||||
}
|
||||
|
||||
const character = await CharacterRepository.getByUserAndId(this.socket.userId, data.characterId)
|
||||
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId)
|
||||
|
||||
if (!character) {
|
||||
this.emitError('Character not found or does not belong to this user')
|
||||
@ -57,8 +41,8 @@ export default class CharacterConnectEvent extends BaseEvent {
|
||||
// Emit character connect event
|
||||
callback({ character })
|
||||
|
||||
// wait 300 ms, @TODO: Find a better way to do this
|
||||
await new Promise((resolve) => setTimeout(resolve, 100))
|
||||
// wait 300 ms, @TODO: Find a better way to do this, race condition
|
||||
await new Promise((resolve) => setTimeout(resolve, 500))
|
||||
|
||||
await TeleportService.teleportCharacter(character.id, {
|
||||
targetMapId: character.map.id,
|
||||
|
Reference in New Issue
Block a user