This is an abstract implementation of the GlkOte library interface designed to be used with Emglken.
Can be used in Node.js or in a web browser.
This repository includes examples of stdio interface implementation and integration with Emglken.
const { Dialog, GlkOte, send } =
CheapGlkOte(handlers [, { loggers, size }])
send('open door', inputType, targetWindow)
You can obtain inputType
and id
of targetWindow
inside the onUpdateInputs
handler.
You can specify targetWindow
by its id
inside the onUpdateWindows
handler.
As I know, inputType
can be line
or char
.
const handlers = {
onInit: () => {
/**
* It's time to initialize the user interface.
*/
},
onUpdateWindows: windows => {
/**
* Game wants to change the number of windows.
*/
},
onUpdateInputs: data => {
/**
* Game wants to change input type.
* 'data' is a list with info about
* the target window and the input type.
*/
},
onUpdateContent: messages => {
/**
* Process the game output here.
*/
},
onDisable: () => {
/**
* Game wants to disable user interface.
*/
},
onFileNameRequest: (tosave, usage, gameid, callback) => {
/**
* Game wants the user to specify the file name.
* This name will be passed as an argument
* to the "onFileRead" and "onFileWrite" functions.
*/
callback({ filename: 'filename', usage })
},
onFileRead: filename => {
/**
* Game wants to read the contents from the file.
*/
return 'content'
},
onFileWrite: (filename, content) => {
/**
* Game wants to write the contents in the file.
*/
},
onExit: () => {
/**
* Game is over.
*/
}
}
By default, the console
is used for logging, but you can pass custom loggers to the constructor.
Default loggers:
const defaultLoggers = {
log: console.log,
warning: console.warn,
error: console.error,
}
Default sizes:
const defaultSize = {
width: 80,
height: 25,
}