forked from noxious/server
More TP work
This commit is contained in:
26
src/services/zoneEventTileService.ts
Normal file
26
src/services/zoneEventTileService.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import { ExtendedCharacter, TSocket } from '../utilities/types'
|
||||
import prisma from '../utilities/prisma'
|
||||
import ZoneRepository from '../repositories/zoneRepository'
|
||||
import ZoneManager from '../managers/zoneManager'
|
||||
import { ZoneEventTile, ZoneEventTileTeleport } from '@prisma/client'
|
||||
|
||||
export class ZoneEventTileService {
|
||||
public async handleTeleport(socket: TSocket, character: ExtendedCharacter, teleport: ZoneEventTileTeleport): Promise<void> {
|
||||
if (teleport.toZoneId === character.zoneId) return
|
||||
|
||||
const zone = await ZoneRepository.getById(teleport.toZoneId)
|
||||
if (!zone) return
|
||||
|
||||
character.zoneId = teleport.toZoneId
|
||||
character.positionX = teleport.toPositionX
|
||||
character.positionY = teleport.toPositionY
|
||||
|
||||
socket.leave(character.zoneId.toString())
|
||||
socket.join(teleport.toZoneId.toString())
|
||||
|
||||
socket.emit('zone:teleport', {
|
||||
zone,
|
||||
characters: ZoneManager.getCharactersInZone(zone.id)
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user