More movement improvements
This commit is contained in:
@ -1,11 +1,13 @@
|
||||
import { BaseService } from '@/application/base/baseService'
|
||||
import config from '@/application/config'
|
||||
import { SocketEvent } from '@/application/enums'
|
||||
import type { MapEventTileWithTeleport, UUID } from '@/application/types'
|
||||
import { Character } from '@/entities/character'
|
||||
import MapManager from '@/managers/mapManager'
|
||||
import SocketManager from '@/managers/socketManager'
|
||||
import MapEventTileRepository from '@/repositories/mapEventTileRepository'
|
||||
import TeleportService from '@/services/characterTeleportService'
|
||||
import MapCharacter from "@/models/mapCharacter";
|
||||
import type { Server } from 'socket.io'
|
||||
|
||||
type Position = { positionX: number; positionY: number }
|
||||
export type Node = Position & { parent?: Node; g: number; h: number; f: number }
|
||||
@ -75,6 +77,8 @@ class PriorityQueue<T> {
|
||||
}
|
||||
|
||||
class CharacterMoveService extends BaseService {
|
||||
private io: Server = SocketManager.getIO()
|
||||
|
||||
// Rotation lookup table for better performance
|
||||
private readonly ROTATION_MAP = {
|
||||
diagonal: {
|
||||
@ -277,10 +281,14 @@ class CharacterMoveService extends BaseService {
|
||||
return path
|
||||
}
|
||||
|
||||
public cancelCurrentMovement(mapCharacter: MapCharacter): void {
|
||||
if (!mapCharacter.isMoving) return
|
||||
mapCharacter.isMoving = false
|
||||
mapCharacter.currentPath = null
|
||||
public broadcastMovement(character: Character, isMoving: boolean): void {
|
||||
this.io.in(character.map.id).emit(SocketEvent.MAP_CHARACTER_MOVE, {
|
||||
characterId: character.id,
|
||||
positionX: character.getPositionX(),
|
||||
positionY: character.getPositionY(),
|
||||
rotation: character.getRotation(),
|
||||
isMoving
|
||||
})
|
||||
}
|
||||
|
||||
public validateMovementDistance(
|
||||
|
Reference in New Issue
Block a user