Fixed pathfinding teleporting issue due to not cancelling last movement.

This commit is contained in:
Zaxiure 2024-09-08 15:55:20 +02:00
parent a64506d3ee
commit 84ca1f412b
No known key found for this signature in database
2 changed files with 23 additions and 2 deletions

View File

@ -16,6 +16,7 @@ export default class CharacterMoveEvent {
private characterMoveService: CharacterMoveService private characterMoveService: CharacterMoveService
private zoneEventTileService: ZoneEventTileService private zoneEventTileService: ZoneEventTileService
private movementValidator: MovementValidator private movementValidator: MovementValidator
private nextPath: {[index: number]: {character: ExtendedCharacter, path: {x: number, y: number}[]}} = [];
constructor( constructor(
private readonly io: Server, private readonly io: Server,
@ -44,7 +45,15 @@ export default class CharacterMoveEvent {
return return
} }
await this.moveAlongPath(character, path) if(character.isMoving && !character.resetMovement) {
character.resetMovement = true;
this.nextPath[character.id] = {
character,
path
}
} else {
await this.moveAlongPath(character, path)
}
} }
private async moveAlongPath(character: ExtendedCharacter, path: Array<{ x: number; y: number }>): Promise<void> { private async moveAlongPath(character: ExtendedCharacter, path: Array<{ x: number; y: number }>): Promise<void> {
@ -56,7 +65,18 @@ export default class CharacterMoveEvent {
break; break;
} }
character.isMoving = true; if(character.isMoving && character.resetMovement) {
character.isMoving = false;
character.resetMovement = false;
const nextPath = this.nextPath[character.id];
this.moveAlongPath(nextPath.character, nextPath.path);
break;
}
if(!character.isMoving) {
character.isMoving = true;
}
character.rotation = Rotation.calculate(start.x, start.y, end.x, end.y); character.rotation = Rotation.calculate(start.x, start.y, end.x, end.y);
const zoneEventTile = await prisma.zoneEventTile.findFirst({ const zoneEventTile = await prisma.zoneEventTile.findFirst({

View File

@ -18,6 +18,7 @@ export type TSocket = Socket & {
export type ExtendedCharacter = Character & { export type ExtendedCharacter = Character & {
isMoving?: boolean isMoving?: boolean
resetMovement: boolean
} }
export type TAsset = { export type TAsset = {