forked from noxious/server
Fixed pathfinding teleporting issue due to not cancelling last movement.
This commit is contained in:
parent
a64506d3ee
commit
84ca1f412b
@ -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,7 +45,15 @@ export default class CharacterMoveEvent {
|
||||
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> {
|
||||
@ -56,7 +65,18 @@ export default class CharacterMoveEvent {
|
||||
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);
|
||||
|
||||
const zoneEventTile = await prisma.zoneEventTile.findFirst({
|
||||
|
@ -18,6 +18,7 @@ export type TSocket = Socket & {
|
||||
|
||||
export type ExtendedCharacter = Character & {
|
||||
isMoving?: boolean
|
||||
resetMovement: boolean
|
||||
}
|
||||
|
||||
export type TAsset = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user