From c9292c019909d765fa0bb41b4793fe32b404e08a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Wed, 19 May 2021 15:00:52 +0200 Subject: [PATCH] Add refresh loop --- mod.ts | 11 +++++++++++ ui.ts | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 mod.ts diff --git a/mod.ts b/mod.ts new file mode 100644 index 0000000..45f20b6 --- /dev/null +++ b/mod.ts @@ -0,0 +1,11 @@ +import { AnsiTerminalDisplay } from "./ansi.ts"; +import { TextUI } from "./ui.ts"; +export { TextUI } from "./ui.ts"; + +export async function createTextUI(): Promise { + // TODO detect platform + var display = new AnsiTerminalDisplay(); + var ui = new TextUI(display); + await ui.init(); + return ui; +} diff --git a/ui.ts b/ui.ts index 6b5f7f8..706c926 100644 --- a/ui.ts +++ b/ui.ts @@ -1,4 +1,4 @@ -import { BufferDrawing, CharBuffer } from "./base.ts"; +import { BufferDrawing, BufferSize, CharBuffer } from "./base.ts"; import { Display } from "./display.ts"; /** @@ -23,6 +23,13 @@ export class TextUI { await this.display.clear(); } + /** + * Get the current display size + */ + getSize(): BufferSize { + return this.screen.getSize(); + } + /** * Flush the internal buffer to the display */ @@ -35,4 +42,14 @@ export class TextUI { } } } + + /** + * Start the event loop, waiting for input + */ + async loop(refresh = 1000): Promise { + while (true) { + await this.flush(); + await new Promise((resolve) => setTimeout(resolve, refresh)); + } + } }