mirror of
https://github.com/He4eT/cheap-glkote.git
synced 2026-05-05 00:47:28 +00:00
Update README.md
This commit is contained in:
parent
d9ded0c3d6
commit
f8feed080d
1 changed files with 82 additions and 2 deletions
84
README.md
84
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).<br>
|
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).<br>
|
||||||
Can be used in Node.js or in a web browser.
|
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-term](https://github.com/curiousdannii/glkote-term)
|
||||||
- [GlkOte](https://github.com/erkyrath/glkote)
|
- [GlkOte](https://github.com/erkyrath/glkote)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue