From a9a63ea1649c7fd5305c41bf8f57439a589bfe4e Mon Sep 17 00:00:00 2001 From: "Lin, Hung-Shin" Date: Thu, 23 Nov 2023 21:56:01 +0800 Subject: [PATCH] feat: print hints one by one, fix unexpected breakline --- packages/container/cli.js | 8 +++----- packages/container/print.js | 15 ++++++++++----- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/container/cli.js b/packages/container/cli.js index 0ea70e4..1ca00bc 100644 --- a/packages/container/cli.js +++ b/packages/container/cli.js @@ -3,7 +3,7 @@ const fs = require('fs').promises const { exit } = require('process') const minimist = require('minimist') const axios = require('axios') -const { colorize, printResponses } = require('./print.js') +const { colorize, printResponses, printHints } = require('./print.js') const discoverFiles = require('./discover.js') async function readOrNone(file) { @@ -66,16 +66,14 @@ async function main() { const { responses, hints, end } = res.data if (responses) { await printResponses(responses, 60) - await api.post('/commands/completed') } if (hints) { - for (const hint of hints) { - console.log(colorize(hint, 'yellow')) - } + await printHints(hints, 60) } if (end) { console.log(colorize('Quest completed!', 'blue')) } + await api.post('/commands/completed') } catch (err) { if (err.response) { console.error(err.response.data) diff --git a/packages/container/print.js b/packages/container/print.js index 0cf28f2..6c6a161 100644 --- a/packages/container/print.js +++ b/packages/container/print.js @@ -52,6 +52,7 @@ function printLine(content, delay, color) { waitForEnter().then(() => { clearInterval(timer) + if (i >= printContent.length) return process.stdout.write(printContent.slice(i)) process.stdout.write('\n') resolve() @@ -68,22 +69,26 @@ async function printResponses(responses, delay = 100) { for (const line of content) { await printLine(line, delay, color || 'cyan') } - console.log(colorize('------------------------------', 'green')) - console.log() } if (type === 'dialogue') { console.log(colorize(`${speaker}:`, 'green')) for (const line of content) { await printLine(` ${line}`, delay, color || 'cyan') } - console.log(colorize('------------------------------', 'green')) - console.log() } + console.log(colorize('------------------------------', 'green')) + console.log() + } +} + +async function printHints(hints, delay = 100) { + for (const hint of hints) { + await printLine(hint, delay, 'yellow') } - rl.close() } module.exports = { printResponses, + printHints, colorize, }