From 0562a817117223784c99b630d70a5f9a303c3728 Mon Sep 17 00:00:00 2001 From: echicken <> Date: Fri, 17 Nov 2017 14:17:31 +0000 Subject: [PATCH] Use a Frame for all output. Call bbs.node_sync in loop. Prevent node messages from being delivered. --- xtrn/chat_pager/page_sysop.js | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/xtrn/chat_pager/page_sysop.js b/xtrn/chat_pager/page_sysop.js index 0184b7c609..083466c84a 100644 --- a/xtrn/chat_pager/page_sysop.js +++ b/xtrn/chat_pager/page_sysop.js @@ -1,6 +1,7 @@ load('sbbsdefs.js'); -load(js.exec_dir + 'lib.js'); +load('frame.js'); load('progress-bar.js'); +load(js.exec_dir + 'lib.js'); function get_last_queued_value(queue, valname) { var val, temp_val; @@ -10,17 +11,17 @@ function get_last_queued_value(queue, valname) { return val; } -function await_page_response(settings) { +function await_page_response(settings, frame) { var queue = new Queue(settings.queue.queue_name); var valname = "chat_" + bbs.node_num; var answered = false; var stime = system.timer; var utime = system.timer; - var progress_bar = new ProgressBar(1, 2); + var progress_bar = new ProgressBar(1, 2, frame.width, frame); progress_bar.init(); while ( (system.timer - stime) * 1000 < settings.terminal.wait_time && - console.inkey(K_NONE) == '' && + console.inkey(K_NONE, 5) == '' && !answered ) { var now = system.timer; @@ -33,6 +34,8 @@ function await_page_response(settings) { } var val = get_last_queued_value(queue, valname); if (typeof val == 'number' && val > stime) answered = true; + frame.cycle(); + bbs.node_sync(); yield(); } progress_bar.set_progress(100); @@ -42,14 +45,16 @@ function await_page_response(settings) { } function main() { + console.clear(); + var sys_stat = bbs.sys_status; + bbs.sys_status|=SS_MOFF; var settings = load_settings(js.exec_dir + 'settings.ini'); - console.clear(WHITE); - console.home(0, 0); - console.center(format(settings.terminal.wait_message, system.operator)); - console.crlf(); - console.center(settings.terminal.cancel_message); - var xy = console.getxy(); - if (settings !== null && await_page_response(settings)) { + var frame = new Frame(1, 1, console.screen_columns, 4, WHITE); + frame.center(format(settings.terminal.wait_message, system.operator)); + frame.gotoxy(1, 3); + frame.center(settings.terminal.cancel_message); + frame.open(); + if (settings !== null && await_page_response(settings, frame)) { if (settings.terminal.irc_pull) { bbs.exec( format( @@ -61,11 +66,12 @@ function main() { ); } } else { - console.gotoxy(xy); - console.clearline(); - console.center(format(bbs.text(522).trim(), system.operator)); + frame.gotoxy(1, 3); + frame.center(format(bbs.text(522).trim(), system.operator)); console.pause(); + frame.close(); } + bbs.sys_status = sys_stat; } main(); -- GitLab