From ccfd5c30ce234b4cd0d8858d2ca556c6e21db05a Mon Sep 17 00:00:00 2001 From: Timothy Stiles Date: Sat, 26 Sep 2020 23:45:53 +1000 Subject: [PATCH] fix animation ugliness in turn-based mode Uguhughugh it looks SO SMOOTH NOW. I can go to bed happy. --- js/main.js | 12 ++++++++++-- js/renderer-canvas.js | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/js/main.js b/js/main.js index 430cfe0..a430b17 100644 --- a/js/main.js +++ b/js/main.js @@ -787,8 +787,9 @@ class Player extends PrimaryView { this._advance_handle = null; return; } - + this.last_advance = performance.now(); + if (this.state === 'playing') { this.advance_by(1); } @@ -806,6 +807,13 @@ class Player extends PrimaryView { this.update_ui(); } } + + if (this.level.waiting_for_input) + { + //freeze tic_offset in time so we don't try to interpolate to the next frame too soon + this.tic_offset = 0; + } + let dt = 1000 / TICS_PER_SECOND; if (this.state === 'rewinding') { // Rewind faster than normal time @@ -822,7 +830,7 @@ class Player extends PrimaryView { // TODO i'm not sure it'll be right when rewinding either // TODO or if the game's speed changes. wow! if (this.level.waiting_for_input) { - this.last_advance = performance.now(); + //freeze tic_offset in time } else { diff --git a/js/renderer-canvas.js b/js/renderer-canvas.js index 575bda3..6bcd447 100644 --- a/js/renderer-canvas.js +++ b/js/renderer-canvas.js @@ -58,7 +58,7 @@ export class CanvasRenderer { return; } - let tic = (this.level.tic_counter ?? 0) + tic_offset; + let tic = (this.level.tic_counter ?? 0) + tic_offset + (this.level.waiting_for_input ? 1 : 0); let tw = this.tileset.size_x; let th = this.tileset.size_y; this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);