1
0
forked from noxious/server

Refractored MVP for teleport

This commit is contained in:
2024-08-26 21:56:10 +02:00
parent 1aa3d1a208
commit 89cca1d0f8
2 changed files with 13 additions and 4 deletions

View File

@ -2,15 +2,19 @@ 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'
import { Character, ZoneEventTile, ZoneEventTileTeleport } from '@prisma/client'
import { Server } from 'socket.io'
export class ZoneEventTileService {
public async handleTeleport(socket: TSocket, character: ExtendedCharacter, teleport: ZoneEventTileTeleport): Promise<void> {
public async handleTeleport(io: Server, socket: TSocket, character: ExtendedCharacter, teleport: ZoneEventTileTeleport): Promise<void> {
if (teleport.toZoneId === character.zoneId) return
const zone = await ZoneRepository.getById(teleport.toZoneId)
if (!zone) return
const oldZoneId = character.zoneId
const newZoneId = teleport.toZoneId
character.zoneId = teleport.toZoneId
character.positionX = teleport.toPositionX
character.positionY = teleport.toPositionY
@ -18,6 +22,11 @@ export class ZoneEventTileService {
socket.leave(character.zoneId.toString())
socket.join(teleport.toZoneId.toString())
io.to(oldZoneId.toString()).emit('zone:character:leave', character);
io.to(newZoneId.toString()).emit('zone:character:join', character);
ZoneManager.removeCharacterFromZone(oldZoneId, character as Character);
ZoneManager.addCharacterToZone(newZoneId, character as Character);
socket.emit('zone:teleport', {
zone,
characters: ZoneManager.getCharactersInZone(zone.id)