diff --git a/src/events/character/connect.ts b/src/events/character/connect.ts index 09c062d..3c54e4e 100644 --- a/src/events/character/connect.ts +++ b/src/events/character/connect.ts @@ -13,7 +13,18 @@ export default class CharacterConnectEvent extends BaseEvent { this.socket.on('character:connect', this.handleEvent.bind(this)) } - private async handleEvent(data: CharacterConnectPayload, callback: (response: boolean) => void): Promise { + /** + * 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 { if (!this.socket.userId) { this.emitError('User not authenticated') return @@ -36,11 +47,16 @@ export default class CharacterConnectEvent extends BaseEvent { this.socket.characterId = character.id // Set character hair - const characterHair = await CharacterHairRepository.getById(data.characterHairId ?? 0) - await character.setCharacterHair(characterHair).update() + if (data.characterHairId !== undefined && data.characterHairId !== null) { + const characterHair = await CharacterHairRepository.getById(data.characterHairId) + await character.setCharacterHair(characterHair).update() + } // Emit character connect event - this.socket.emit('character:connect', character) + callback({ + character, + zone: character.zone + }) } catch (error) { this.handleError('Failed to connect character', error) // @TODO : Make global error handler }