1
0
forked from noxious/server

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 zoneEventTileService: ZoneEventTileService
private movementValidator: MovementValidator
private nextPath: {[index: number]: {character: ExtendedCharacter, path: {x: number, y: number}[]}} = [];
constructor(
private readonly io: Server,
@ -44,8 +45,16 @@ export default class CharacterMoveEvent {
return
}
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> {
for (let i = 0; i < path.length - 1; i++) {
@ -56,7 +65,18 @@ export default class CharacterMoveEvent {
break;
}
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);
const zoneEventTile = await prisma.zoneEventTile.findFirst({

View File

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