Show the correct replay input when rewinding
This commit is contained in:
parent
430fa5c354
commit
1cb92a454d
21
js/main.js
21
js/main.js
@ -1524,6 +1524,7 @@ class Player extends PrimaryView {
|
|||||||
|
|
||||||
this.turn_based_mode_waiting = false;
|
this.turn_based_mode_waiting = false;
|
||||||
this.last_advance = 0;
|
this.last_advance = 0;
|
||||||
|
this.last_input = 0;
|
||||||
this.current_keyring = {};
|
this.current_keyring = {};
|
||||||
this.current_toolbelt = [];
|
this.current_toolbelt = [];
|
||||||
this.previous_hint_tile = null;
|
this.previous_hint_tile = null;
|
||||||
@ -1613,12 +1614,6 @@ class Player extends PrimaryView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.debug.enabled) {
|
|
||||||
for (let [action, el] of Object.entries(this.debug.input_els)) {
|
|
||||||
el.classList.toggle('--held', (input & INPUT_BITS[action]) !== 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1627,6 +1622,7 @@ class Player extends PrimaryView {
|
|||||||
for (let i = 0; i < tics; i++) {
|
for (let i = 0; i < tics; i++) {
|
||||||
// FIXME turn-based mode should be disabled during a replay
|
// FIXME turn-based mode should be disabled during a replay
|
||||||
let input = this.get_input();
|
let input = this.get_input();
|
||||||
|
this.last_input = input;
|
||||||
// Extract the fake 'wait' bit, if any
|
// Extract the fake 'wait' bit, if any
|
||||||
let wait = input & INPUT_BITS['wait'];
|
let wait = input & INPUT_BITS['wait'];
|
||||||
input &= ~wait;
|
input &= ~wait;
|
||||||
@ -1727,6 +1723,15 @@ class Player extends PrimaryView {
|
|||||||
|
|
||||||
undo() {
|
undo() {
|
||||||
this.level.undo();
|
this.level.undo();
|
||||||
|
|
||||||
|
if (this.debug.enabled && this.debug.replay) {
|
||||||
|
// Forward, we show the input from tic N and the result from tic N + 1.
|
||||||
|
// So backward, we just rewound to the result from tic N; show the input from tic N - 1.
|
||||||
|
this.last_input = this.debug.replay.get(this.level.tic_counter - 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.last_input = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
undo_last_move() {
|
undo_last_move() {
|
||||||
@ -1936,6 +1941,10 @@ class Player extends PrimaryView {
|
|||||||
this.debug.time_moves_el.textContent = `${Math.floor(t/4)}`;
|
this.debug.time_moves_el.textContent = `${Math.floor(t/4)}`;
|
||||||
this.debug.time_secs_el.textContent = (t / 20).toFixed(2);
|
this.debug.time_secs_el.textContent = (t / 20).toFixed(2);
|
||||||
|
|
||||||
|
for (let [action, el] of Object.entries(this.debug.input_els)) {
|
||||||
|
el.classList.toggle('--held', (this.last_input & INPUT_BITS[action]) !== 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (this.debug.replay) {
|
if (this.debug.replay) {
|
||||||
this.debug.replay_progress_el.setAttribute('value', t);
|
this.debug.replay_progress_el.setAttribute('value', t);
|
||||||
this.debug.replay_percent_el.textContent = `${Math.floor((t + 1) / this.debug.replay.duration * 100)}%`;
|
this.debug.replay_percent_el.textContent = `${Math.floor((t + 1) / this.debug.replay.duration * 100)}%`;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user