diff options
Diffstat (limited to 'test-client')
| -rw-r--r-- | test-client/main.ts | 11 | ||||
| -rw-r--r-- | test-client/visual.ts | 14 |
2 files changed, 23 insertions, 2 deletions
diff --git a/test-client/main.ts b/test-client/main.ts index 091e0535..9267270b 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -321,6 +321,8 @@ function packet(p: PacketC) { break; case "flush_map": break; + case "pause": + break; // TODO case "menu": switch (p.menu) { case "score": @@ -336,7 +338,7 @@ function packet(p: PacketC) { } break; case "debug": - debug_events.set(p.key, { timeout: 0.1, ...p }) + debug_events.set(p.key, { timeout: 0.5, ...p }) break; default: console.warn("unknown packet", p); @@ -498,6 +500,13 @@ function frame_update(dt: number) { } remove.forEach(i => items_removed.delete(i)) + const remove_events: string[] = [] + for (const [key, ev] of debug_events.entries()) { + ev.timeout -= dt + if (ev.timeout < 0) remove_events.push(key) + } + remove_events.forEach(i => debug_events.delete(i)) + for (const [_, h] of server_hints) tick_message(h, dt); diff --git a/test-client/visual.ts b/test-client/visual.ts index 20bd7ae2..c06edff0 100644 --- a/test-client/visual.ts +++ b/test-client/visual.ts @@ -101,16 +101,28 @@ export function draw_ingame() { function draw_debug_events() { for (const ev of debug_events.values()) { + const color = `rgb(${ev.color[0] * 100}%,${ev.color[1] * 100}%,${ev.color[2] * 100}%)` if (ev.display.ty == "path") { ctx.lineWidth = 0.1 ctx.lineCap = "round" - ctx.strokeStyle = `rgb(${ev.color[0] * 100}%,${ev.color[1] * 100}%,${ev.color[2] * 100}%)` + ctx.strokeStyle = color ctx.beginPath() if (ev.display.points.length) ctx.moveTo(...ev.display.points[0]) for (let i = 1; i < ev.display.points.length; i++) ctx.lineTo(...ev.display.points[i]) ctx.stroke() + } else if (ev.display.ty == "label") { + ctx.font = "0.2px sans-serif" + ctx.strokeStyle = "black" + ctx.fillStyle = color + ctx.lineWidth = 0.1 + ctx.textAlign = "center" + ctx.textBaseline = "middle" + ctx.lineJoin = "round" + ctx.lineCap = "round" + ctx.strokeText(ev.display.text, ev.display.pos[0], ev.display.pos[1]) + ctx.fillText(ev.display.text, ev.display.pos[0], ev.display.pos[1]) } } } |