1
0
forked from noxious/server

Added socketManager and moved logic into it where appropiate

This commit is contained in:
2024-12-29 02:35:50 +01:00
parent cb6fcbcb8e
commit ce073a67af
6 changed files with 97 additions and 70 deletions

View File

@ -44,8 +44,6 @@ export default class CharacterConnectEvent extends BaseEvent {
return
}
await Database.getEntityManager().populate(character, ['zone'])
// Set character id
this.socket.characterId = character.id
@ -56,13 +54,9 @@ export default class CharacterConnectEvent extends BaseEvent {
}
// Emit character connect event
callback({
character,
zone: character.zone,
characters: ZoneManager.getZoneById(character.zone!.id)?.getCharactersInZone()
})
callback({ character })
} catch (error) {
this.handleError('Failed to connect character', error) // @TODO : Make global error handler
this.handleError('Failed to connect character', error)
}
}

View File

@ -11,13 +11,13 @@ export default class CharacterMove extends BaseEvent {
private readonly zoneEventTileService = ZoneEventTileService
public listen(): void {
this.socket.on('character:move', this.handleEvent.bind(this))
this.socket.on('zone:character:move', this.handleEvent.bind(this))
}
private async handleEvent({ positionX, positionY }: { positionX: number; positionY: number }): Promise<void> {
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
if (!zoneCharacter?.character) {
this.logger.error('character:move error: Character not found or not initialized')
this.logger.error('zone:character:move error: Character not found or not initialized')
return
}
@ -29,7 +29,7 @@ export default class CharacterMove extends BaseEvent {
const path = await this.characterService.calculatePath(zoneCharacter.character, positionX, positionY)
if (!path) {
this.io.in(zoneCharacter.character.zone!.id.toString()).emit('character:moveError', 'No valid path found')
this.io.in(zoneCharacter.character.zone!.id.toString()).emit('zone:character:moveError', 'No valid path found')
return
}
@ -63,7 +63,7 @@ export default class CharacterMove extends BaseEvent {
character.positionY = end.y
// Then emit with the same properties
this.io.in(character.zone!.id.toString()).emit('character:move', {
this.io.in(character.zone!.id.toString()).emit('zone:character:move', {
id: character.id,
positionX: character.positionX,
positionY: character.positionY,
@ -82,7 +82,7 @@ export default class CharacterMove extends BaseEvent {
private async handleZoneEventTile(zoneEventTile: ZoneEventTileWithTeleport): Promise<void> {
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
if (!zoneCharacter) {
this.logger.error('character:move error: Character not found')
this.logger.error('zone:character:move error: Character not found')
return
}
@ -93,7 +93,7 @@ export default class CharacterMove extends BaseEvent {
private finalizeMovement(zoneCharacter: ZoneCharacter): void {
zoneCharacter.isMoving = false
this.io.in(zoneCharacter.character.zone!.id.toString()).emit('character:move', {
this.io.in(zoneCharacter.character.zone!.id.toString()).emit('zone:character:move', {
id: zoneCharacter.character.id,
positionX: zoneCharacter.character.positionX,
positionY: zoneCharacter.character.positionY,