mirror of
https://github.com/He4eT/cheap-glkote.git
synced 2026-05-05 00:47:28 +00:00
Abstract JavaScript implementation of GlkOte
- JavaScript 100%
| bin | ||
| src | ||
| tests | ||
| .gitignore | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
cheap-glkote
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.
Usage
This repository includes examples of stdio interface implementation and integration with Emglken.
Initialization
const { glkInterface, sendFn } = CheapGlkOte(handlers [, loggers])
Input
sendFn('open door')
You should respect input type setted by onUpdateInputs.
Output and lifecycle
const handlers = {
onInit: () => {
/**
* It's time to prepare the user interface.
*/
},
onExit: () => {
/**
* Game is over.
*/
},
onUpdateContent: messages => {
/**
* Process the game output here.
*/
},
onUpdateInputs: type => {
/**
* Game wants to change input type.
* Supported types: 'char', 'line'.
*/
},
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.
*/
}
}
Logging
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
}
Limitations
This implementation on GlkOte only allows you to create one window at a time, and that must be a TextBuffer.