From f8feed080d2788ad00643c5d4def7662d7ebeeab Mon Sep 17 00:00:00 2001 From: He4eT Date: Tue, 23 Feb 2021 16:31:46 +0500 Subject: [PATCH] Update README.md --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 21066c5..193f147 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,89 @@ This is an abstract implementation of the [GlkOte](https://github.com/erkyrath/glkote) library interface designed to be used with [Emglken](https://github.com/curiousdannii/emglken).
Can be used in Node.js or in a web browser. -This repository includes examples of [stdio implementation](https://github.com/He4eT/cheap-glkote/blob/master/src/stdio.js) and [integration with Emglken](https://github.com/He4eT/cheap-glkote/blob/master/tests/player.stdio.js). -## Inspired or powered by +## Usage + +This repository includes examples of [stdio interface implementation](https://github.com/He4eT/cheap-glkote/blob/master/src/stdio.js) and [integration with Emglken](https://github.com/He4eT/cheap-glkote/blob/master/tests/player.stdio.js). + +### Initialization +```js +const { glkInterface, sendFn } = CheapGlkOte(handlers [, loggers]) +``` + +### Input +```js +sendFn('open door') +``` +You should respect input type setted by `onUpdateInputs` + +### Output and lifecycle +```js +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: +```js +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. + +## Inspired and powered by - [glkote-term](https://github.com/curiousdannii/glkote-term) - [GlkOte](https://github.com/erkyrath/glkote)