forked from noxious/server
Added socketManager and moved logic into it where appropiate
This commit is contained in:
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user