diff --git a/src/events/map/characterMove.ts b/src/events/map/characterMove.ts index ea73494..4c2862e 100644 --- a/src/events/map/characterMove.ts +++ b/src/events/map/characterMove.ts @@ -2,14 +2,12 @@ import { BaseEvent } from '#application/base/baseEvent' import { MapEventTileWithTeleport } from '#application/types' import MapManager from '#managers/mapManager' import MapCharacter from '#models/mapCharacter' -import mapEventTileRepository from '#repositories/mapEventTileRepository' import MapEventTileRepository from '#repositories/mapEventTileRepository' import CharacterService from '#services/characterService' -import MapEventTileService from '#services/mapEventTileService' +import TeleportService from '#services/teleportService' export default class CharacterMove extends BaseEvent { private readonly characterService = CharacterService - private readonly mapEventTileService = MapEventTileService public listen(): void { this.socket.on('map:character:move', this.handleEvent.bind(this)) @@ -88,9 +86,13 @@ export default class CharacterMove extends BaseEvent { return } - // @TODO: Replace with TeleportService if (mapEventTile.teleport) { - await this.mapEventTileService.handleTeleport(this.io, this.socket, mapCharacter.character, mapEventTile.teleport) + await TeleportService.teleportCharacter(mapCharacter.character.id, { + targetMapId: mapEventTile.teleport.toMap.id, + targetX: mapEventTile.teleport.toPositionX, + targetY: mapEventTile.teleport.toPositionY, + rotation: mapCharacter.character.rotation + }) } } diff --git a/src/services/mapEventTileService.ts b/src/services/mapEventTileService.ts deleted file mode 100644 index 06b45ac..0000000 --- a/src/services/mapEventTileService.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Server } from 'socket.io' - -import { BaseService } from '#application/base/baseService' -import { ExtendedCharacter, TSocket } from '#application/types' -import { MapEventTileTeleport } from '#entities/mapEventTileTeleport' -import MapManager from '#managers/mapManager' - -class MapEventTileService extends BaseService { - public async handleTeleport(io: Server, socket: TSocket, character: ExtendedCharacter, teleport: MapEventTileTeleport): Promise { - if (teleport.toMap.id === character.map.id) return - - const loadedMap = MapManager.getMapById(teleport.toMap.id) - if (!loadedMap) { - this.logger.error('map:character:join error: Loaded map not found') - return - } - - const map = loadedMap.getMap() - - const oldMapId = character.map.id - const newMapId = teleport.toMap.id - - character.isMoving = false - // Update local character object - character.setMap(teleport.toMap).setRotation(teleport.toRotation).setPositionX(teleport.toPositionX).setPositionY(teleport.toPositionY) - - await character.save() - - // Remove and add character to new map - await loadedMap.removeCharacter(character.id) - loadedMap.addCharacter(character) - - // Emit events - io.to(oldMapId).emit('map:character:leave', character.id) - io.to(newMapId).emit('map:character:join', character) - - // Update socket rooms - socket.leave(oldMapId) - socket.join(newMapId) - - // Send teleport information to the client - socket.emit('map:character:teleport', { - map, - characters: loadedMap.getCharactersInMap() - }) - } -} - -export default new MapEventTileService()