Implemented ZoneManager logics in teleport to make sure chars. are removed / added correctly
This commit is contained in:
parent
3185c478a6
commit
27f8bc8784
6
package-lock.json
generated
6
package-lock.json
generated
@ -949,9 +949,9 @@
|
|||||||
"license": "BSD-3-Clause"
|
"license": "BSD-3-Clause"
|
||||||
},
|
},
|
||||||
"node_modules/bullmq": {
|
"node_modules/bullmq": {
|
||||||
"version": "5.26.1",
|
"version": "5.26.2",
|
||||||
"resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.26.1.tgz",
|
"resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.26.2.tgz",
|
||||||
"integrity": "sha512-XuxCGFlC1PQ2i1JHQiB9dqkqKQILMwQpU7ipi+cT/dzJaoXVcS0/IByUz6SsZ3xyOQY3twPt6G7J2d5GrsJuEA==",
|
"integrity": "sha512-UdHBrJoRkpXoF8b/FVEkuRBnaUZoA7+qHQNyTx1n2oNVZ4iWxqGqss+M9xAwXOpBmSNvOSlaBdHpf+5QJTU8GQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cron-parser": "^4.6.0",
|
"cron-parser": "^4.6.0",
|
||||||
|
@ -1,16 +1,21 @@
|
|||||||
import { ExtendedCharacter, TSocket } from '../utilities/types'
|
import { ExtendedCharacter, TSocket } from '../utilities/types'
|
||||||
import prisma from '../utilities/prisma'
|
import prisma from '../utilities/prisma'
|
||||||
import ZoneRepository from '../repositories/zoneRepository'
|
|
||||||
import { ZoneEventTileTeleport } from '@prisma/client'
|
import { ZoneEventTileTeleport } from '@prisma/client'
|
||||||
import { Server } from 'socket.io'
|
import { Server } from 'socket.io'
|
||||||
import ZoneManager from '../managers/zoneManager'
|
import ZoneManager from '../managers/zoneManager'
|
||||||
|
import { gameLogger } from '../utilities/logger'
|
||||||
|
|
||||||
export class ZoneEventTileService {
|
export class ZoneEventTileService {
|
||||||
public async handleTeleport(io: Server, 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
|
if (teleport.toZoneId === character.zoneId) return
|
||||||
|
|
||||||
const zone = await ZoneRepository.getById(teleport.toZoneId)
|
const loadedZone = ZoneManager.getZoneById(teleport.toZoneId)
|
||||||
if (!zone) return
|
if (!loadedZone) {
|
||||||
|
gameLogger.error('zone:character:join error', 'Loaded zone not found')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const zone = loadedZone.getZone()
|
||||||
|
|
||||||
const oldZoneId = character.zoneId
|
const oldZoneId = character.zoneId
|
||||||
const newZoneId = teleport.toZoneId
|
const newZoneId = teleport.toZoneId
|
||||||
@ -33,6 +38,10 @@ export class ZoneEventTileService {
|
|||||||
character.positionY = teleport.toPositionY
|
character.positionY = teleport.toPositionY
|
||||||
character.isMoving = false
|
character.isMoving = false
|
||||||
|
|
||||||
|
// Remove and add character to new zone
|
||||||
|
await loadedZone.removeCharacter(character.id)
|
||||||
|
loadedZone.addCharacter(character)
|
||||||
|
|
||||||
// Emit events
|
// Emit events
|
||||||
io.to(oldZoneId.toString()).emit('zone:character:leave', character.id)
|
io.to(oldZoneId.toString()).emit('zone:character:leave', character.id)
|
||||||
io.to(newZoneId.toString()).emit('zone:character:join', character)
|
io.to(newZoneId.toString()).emit('zone:character:join', character)
|
||||||
@ -44,7 +53,7 @@ export class ZoneEventTileService {
|
|||||||
// Send teleport information to the client
|
// Send teleport information to the client
|
||||||
socket.emit('zone:character:teleport', {
|
socket.emit('zone:character:teleport', {
|
||||||
zone,
|
zone,
|
||||||
characters: ZoneManager.getZoneById(zone.id)?.getCharactersInZone()
|
characters: loadedZone.getCharactersInZone()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,8 +43,6 @@ export default class ZoneLeaveEvent {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('awee')
|
|
||||||
|
|
||||||
this.socket.leave(zone.id.toString())
|
this.socket.leave(zone.id.toString())
|
||||||
|
|
||||||
// let other clients know of character leaving
|
// let other clients know of character leaving
|
||||||
|
Loading…
x
Reference in New Issue
Block a user