mirror of
https://github.com/He4eT/cheap-glkote.git
synced 2026-05-04 16:37:23 +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>
|
||||
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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue