workadventure/front/tests/Phaser/Game/PlayerMovementTest.ts

102 lines
2.4 KiB
TypeScript
Raw Normal View History

import "jasmine";
import {PlayerMovement} from "../../../src/Phaser/Game/PlayerMovement";
describe("Interpolation / Extrapolation", () => {
it("should interpolate", () => {
2020-06-09 23:13:26 +02:00
const playerMovement = new PlayerMovement({
x: 100, y: 200
}, 42000,
{
2021-10-29 16:44:51 +02:00
x: 200,
y: 100,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
2021-10-29 16:44:51 +02:00
moving: true,
direction: "up"
},
42200
);
expect(playerMovement.isOutdated(42100)).toBe(false);
expect(playerMovement.isOutdated(43000)).toBe(true);
expect(playerMovement.getPosition(42100)).toEqual({
x: 150,
y: 150,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
direction: 'up',
moving: true
});
expect(playerMovement.getPosition(42200)).toEqual({
x: 200,
y: 100,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
direction: 'up',
moving: true
});
expect(playerMovement.getPosition(42300)).toEqual({
x: 250,
y: 50,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
direction: 'up',
moving: true
});
});
it("should not extrapolate if we stop", () => {
2020-06-09 23:13:26 +02:00
const playerMovement = new PlayerMovement({
x: 100, y: 200
}, 42000,
{
2021-10-29 16:44:51 +02:00
x: 200,
y: 100,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
2021-10-29 16:44:51 +02:00
moving: false,
direction: "up"
},
42200
);
expect(playerMovement.getPosition(42300)).toEqual({
x: 200,
y: 100,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
direction: 'up',
moving: false
});
});
it("should should keep moving until it stops", () => {
2020-06-09 23:13:26 +02:00
const playerMovement = new PlayerMovement({
x: 100, y: 200
}, 42000,
{
2021-10-29 16:44:51 +02:00
x: 200,
y: 100,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
2021-10-29 16:44:51 +02:00
moving: false,
direction: "up"
},
42200
);
expect(playerMovement.getPosition(42100)).toEqual({
x: 150,
y: 150,
2021-10-29 23:30:02 +02:00
oldX: 100,
oldY: 200,
direction: 'up',
moving: true
});
});
})