From a8ce3bca115c4311d05c17d52e43e56ecdef2ece Mon Sep 17 00:00:00 2001 From: Timothy Stiles Date: Wed, 14 Oct 2020 21:42:51 +1100 Subject: [PATCH] fix bugs we're back at parity now, it looks like --- js/main.js | 8 ++++++-- js/renderer-canvas.js | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/js/main.js b/js/main.js index 7c3aa8d..77651e9 100644 --- a/js/main.js +++ b/js/main.js @@ -655,6 +655,7 @@ class Player extends PrimaryView { _clear_state() { this.set_state('waiting'); + this.waiting_for_input = false; this.tic_offset = 0; this.last_advance = 0; this.demo_faucet = null; @@ -777,10 +778,12 @@ class Player extends PrimaryView { { if (!this.turn_based || primary_dir != null || input.has('wait')) { + this.waiting_for_input = false; this.level.advance_tic( primary_dir, secondary_dir, 2); + } } else //TODO: or `if (!this.waiting_for_input)` to be snappier @@ -840,7 +843,7 @@ class Player extends PrimaryView { } } - if (this.level.waiting_for_input) + if (this.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; @@ -861,7 +864,7 @@ class Player extends PrimaryView { // TODO this is not gonna be right while pausing lol // 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) { + if (this.waiting_for_input) { //freeze tic_offset in time } else @@ -887,6 +890,7 @@ class Player extends PrimaryView { // Actually redraw. Used to force drawing outside of normal play _redraw() { + this.renderer.waiting_for_input = this.waiting_for_input; this.renderer.draw(this.tic_offset); } diff --git a/js/renderer-canvas.js b/js/renderer-canvas.js index 6bcd447..0339c7b 100644 --- a/js/renderer-canvas.js +++ b/js/renderer-canvas.js @@ -51,6 +51,8 @@ export class CanvasRenderer { sx * tw, sy * th, w * tw, h * th, dx * tw, dy * th, w * tw, h * th); } + + waiting_for_input = false; draw(tic_offset = 0) { if (! this.level) { @@ -58,7 +60,7 @@ export class CanvasRenderer { return; } - let tic = (this.level.tic_counter ?? 0) + tic_offset + (this.level.waiting_for_input ? 1 : 0); + let tic = (this.level.tic_counter ?? 0) + tic_offset + (this.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);