Abstract JavaScript implementation of GlkOte
  • JavaScript 100%
Find a file
2021-07-19 00:44:41 +05:00
bin stdio: Add basic grid windows support 2021-07-19 00:21:48 +05:00
src cheapGlkOte: passing the full input data to onUpdateInputs 2021-07-18 23:31:57 +05:00
tests Move player.stdio 2021-02-24 17:56:55 +05:00
.gitignore Dirty initial commit 2021-02-23 12:31:02 +05:00
LICENSE Dirty initial commit 2021-02-23 12:31:02 +05:00
package-lock.json 0.4.0 2021-07-19 00:44:41 +05:00
package.json 0.4.0 2021-07-19 00:44:41 +05:00
README.md Update README.md 2021-07-19 00:44:13 +05:00

cheap-glkote

NPM Version

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, size }])

Input

sendFn('open door', inputType, targetWindow)

You can receive inputType and id of targetWindow in onUpdateInputs handler.
You can receive targetWindow by its is in onUpdateWindows handler.
As I know, inputType can be line or char.

Output and lifecycle

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.
      */
  }
}

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
}

Size

Default sizes:

const defaultSize = {
  width: 80,
  height: 25
}

Inspired and powered by