Skip to content
forked from bcdice/bcdice-js

BCDice ported package for TypeScript and JavaScript by Opal.

License

Notifications You must be signed in to change notification settings

TK11235/bcdice-js

 
 

Repository files navigation

bcdice-js

npm CI Snyk Vulnerabilities for npm package GitHub issues GitHub forks GitHub stars GitHub license Discord

BCDice ported package for TypeScript/JavaScript by Opal.

Installation

$ npm install --save bcdice

Usage

JavaScript (CommonJS)

const { DynamicLoader, Version } = require('bcdice');

async function main() {
  console.log('BCDice Version:', Version);

  const loader = new DynamicLoader();

  console.log(loader.listAvailableGameSystems().map(info => info.id));

  const GameSystem = await loader.dynamicLoad('Cthulhu7th');

  console.log(GameSystem.NAME);
  console.log(GameSystem.HELP_MESSAGE);

  const result = GameSystem.eval('CC<=54');

  console.log(result && result.text);
}

main();

TypeScript

import { DynamicLoader, Version } from 'bcdice';

async function main(): Promise<void> {
  console.log('BCDice Version:', Version);

  const loader = new DynamicLoader();

  console.log(loader.listAvailableGameSystems().map(info => info.id));

  const GameSystem = await loader.dynamicLoad('Cthulhu7th');

  console.log(GameSystem.NAME);
  console.log(GameSystem.HELP_MESSAGE);

  const result = GameSystem.eval('CC<=54');

  console.log(result?.text);
}

main();

UserDefinedDiceTable

JavaScript (CommonJS)

const { UserDefinedDiceTable } = require('bcdice');

const table = new UserDefinedDiceTable(`テスト表
1D6
1:いち
2:に
3:さん
4:し
5:ご
6:ろく`);

const result = table.roll();
console.log(result && result.text);

TypeScript

import { UserDefinedDiceTable } from 'bcdice';

const table = new UserDefinedDiceTable(`テスト表
1D6
1:いち
2:に
3:さん
4:し
5:ご
6:ろく`);

console.log(table.roll()?.text);

Loaders

  • StaticLoader: import StaticLoader from 'bcdice/lib/loader/static_loader';
    • Load all GameSystems on startup.
  • DynamicLoader: import { DynamicLoader } from 'bcdice';

or extend Loader (import Loader from 'bcdice/lib/loader/loader') and make your custom loader.

Internal BCDice Versions

Since v2.x, you can get the version of internal BCDice by importing Version from 'bcdice'.

bcdice-js BCDice
3.1.0 Ver3.1.1
3.0.0 Ver3.0.0
2.0.0 Ver3.0.0
1.x.x Ver2.xx.xx

Development

  • Node.js >= v14
  • Ruby >= 2.7
$ git clone https://github.com/bcdice/bcdice-js.git
$ cd bcdice-js
$ git submodule update --init
$ bundle install
$ npm install
$ npm run build
$ npm test

Migration from 2.x to 3.x

Loader.dynamicImport(className: string) now accepts a className instead of a path. Custom loaders need to search for GameSystem from known path. See also DynamicLoader.

About

BCDice ported package for TypeScript and JavaScript by Opal.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 72.8%
  • Ruby 25.6%
  • Shell 1.6%