Skip to content

Commit 7c67317

Browse files
fix(gta): clear blocked-exit warning when driving resumes
Restore route guidance when the driver moves on after an obstructed exit. / 驾驶恢复后清除下车受阻提示并恢复路线指引。
1 parent ad2fcd4 commit 7c67317

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

‎packages/app/src/components/gta/gta-engine.test.ts‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ const advance = (s: ReturnType<typeof newCity>, c = EMPTY_CONTROLS, seconds = 1)
2525
for (let i = 0; i < Math.round(seconds * 60); i++) stepCity(s, c, 1 / 60);
2626
};
2727
describe('GTA 3D simulation', () => {
28+
it.each([null, 6])('clears a failed exit warning when driving resumes in mode %s', (tour) => {
29+
const s = driving();
30+
s.tour = tour;
31+
s.message = 'blocked';
32+
s.traffic = [];
33+
advance(s, EMPTY_CONTROLS, 0.1);
34+
expect(s.message).toBe('blocked');
35+
advance(s, { ...EMPTY_CONTROLS, forward: true }, 0.1);
36+
expect(s.message).toBe('drive');
37+
});
2838
it('offers a driveable, untimed NVIDIA tour without silently teleporting', () => {
2939
const s = driving();
3040
const before = { ...s.player };

‎packages/app/src/components/gta/gta-engine.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,9 @@ export function stepCity(s: CityState, c: Controls, seconds: number) {
207207
s.immunity = Math.max(0, s.immunity - dt);
208208
const throttle = Number(c.forward) - Number(c.reverse),
209209
turn = Number(c.right) - Number(c.left);
210+
if (s.message === 'blocked' && (throttle !== 0 || Math.abs(s.car.speed) > 0.5)) {
211+
s.message = 'drive';
212+
}
210213
if (s.onFoot) {
211214
s.player.angle -= turn * 2.4 * dt; // Camera faces the actor's forward direction.
212215
s.player.speed = throttle * (c.sprint ? 8 : 3.5);

0 commit comments

Comments
 (0)