From 1191e6bf55f6e04cc8a58bb2e43f79ddc5dfcf86 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Sun, 16 Feb 2025 18:47:44 +0100 Subject: [PATCH] Small improvement teleports --- src/managers/mapManager.ts | 4 ---- src/models/mapCharacter.ts | 6 +++++- src/services/characterTeleportService.ts | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/managers/mapManager.ts b/src/managers/mapManager.ts index 23705fa..4853ceb 100644 --- a/src/managers/mapManager.ts +++ b/src/managers/mapManager.ts @@ -44,10 +44,6 @@ class MapManager { .find((char) => char.character.id === characterId) ?? null ) } - - public removeCharacter(characterId: UUID): void { - Object.values(this.maps).forEach((map) => map.removeCharacter(characterId)) - } } export default new MapManager() diff --git a/src/models/mapCharacter.ts b/src/models/mapCharacter.ts index 8fec98b..560fa89 100644 --- a/src/models/mapCharacter.ts +++ b/src/models/mapCharacter.ts @@ -39,7 +39,11 @@ class MapCharacter { // Leave map and remove from manager socket.leave(this.character.map.id) - MapManager.removeCharacter(this.character.id) + + const map = MapManager.getMapById(this.character.map.id) + if (map) { + await map.removeCharacter(this.character.id) + } // Notify map players io.in(this.character.map.id).emit(SocketEvent.MAP_CHARACTER_LEAVE, this.character.id) diff --git a/src/services/characterTeleportService.ts b/src/services/characterTeleportService.ts index d332485..e3cf0e2 100644 --- a/src/services/characterTeleportService.ts +++ b/src/services/characterTeleportService.ts @@ -48,6 +48,7 @@ class CharacterTeleportService { try { const currentMapId = mapCharacter.character.map?.id + const currentMap = MapManager.getMapById(currentMapId!) const io = SocketManager.getIO() // Update character position and map @@ -67,9 +68,9 @@ class CharacterTeleportService { } // Handle current map cleanup - if (currentMapId) { + if (currentMapId && currentMap) { socket.leave(currentMapId) - MapManager.removeCharacter(characterId) + await currentMap.removeCharacter(characterId) io.in(currentMapId).emit(SocketEvent.MAP_CHARACTER_LEAVE, characterId) }