Use emglken 0.5.2

This commit is contained in:
He4eT 2023-05-20 23:39:01 +03:00
commit cb7d6e51f9
6 changed files with 49 additions and 41 deletions

View file

@ -4,11 +4,12 @@
* @see: https://github.com/curiousdannii/emglken/blob/master/bin/emglken.js
*/
const fs = require('fs')
const minimist = require('minimist')
import { readFileSync } from 'fs'
import minimist from 'minimist'
const CheapGlkOte = require('../src/')
const { handlers } = require('./stdio')
import CheapGlkOte from '../src/index.js'
import { handlers } from './stdio.js'
const formats = [
{
@ -50,13 +51,19 @@ if (!format) {
process.exit(0)
}
const { glkInterface, sendFn } = CheapGlkOte(handlers)
handlers.setSend(sendFn)
import(`emglken/src/${format.id}.js`)
.then(({default: engine}) => engine)
.then((engine) => new engine())
.then((vm) => {
const cheapGlkOte = CheapGlkOte(handlers)
const engine = require('emglken/src/' + format.engine)
const vm = new engine()
handlers.setSend(cheapGlkOte.send)
vm.prepare(
fs.readFileSync(storyfile),
glkInterface)
vm.start()
vm.init(readFileSync(storyfile), {
Dialog: cheapGlkOte.Dialog,
GlkOte: cheapGlkOte.GlkOte,
Glk: {},
wasmBinary: readFileSync(new URL(`../node_modules/emglken/build/${format.id}-core.wasm`, import.meta.url))
})
vm.start()
})

View file

@ -2,14 +2,14 @@
* @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js
*/
const readline = require('readline')
const MuteStream = require('mute-stream')
const ansiEscapes = require('ansi-escapes')
import { createInterface, emitKeypressEvents } from 'readline'
import MuteStream from 'mute-stream'
import ansiEsc from 'ansi-escapes'
const stdin = process.stdin
const stdout = new MuteStream()
stdout.pipe(process.stdout)
const rl = readline.createInterface({
const rl = createInterface({
input: stdin,
output: stdout,
prompt: ''
@ -29,7 +29,7 @@ const onInit = () => {
if (stdin.isTTY) {
stdin.setRawMode(true)
}
readline.emitKeypressEvents(stdin)
emitKeypressEvents(stdin)
rl.resume()
clearScreen()
}
@ -71,7 +71,7 @@ const drawBuffer = messages => {
if (x.style === 'input') {
if (stdout.isTTY) {
stdout.write(ansiEscapes.eraseLines(2))
stdout.write(ansiEsc.eraseLines(2))
stdout.write('> ')
}
}
@ -173,13 +173,13 @@ const detach_handlers = () => {
const handle_line_input = line => {
if (stdout.isTTY) {
stdout.write(ansiEscapes.eraseLines(1))
stdout.write(ansiEsc.eraseLines(1))
}
send(line, currentInputType, currentWindow)
detach_handlers()
}
module.exports.handlers = {
export const handlers = {
onInit,
onUpdateWindows,
onUpdateInputs,