More movement improvements

This commit is contained in:
2025-02-16 01:29:24 +01:00
parent cbd6e2c307
commit 17fa2a8f6e
2 changed files with 64 additions and 58 deletions

View File

@ -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(