UNPKG

tsgammon-core

Version:

A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui

58 lines (57 loc) 2.57 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.withRL = exports.rollListener = void 0; const DiceSource_1 = require("../utils/DiceSource"); /** * 設定情報からRollListenerオブジェクトを生成する * @param conf RollReqを受け付ける関数、または単純にロール目を生成するDiceSourceオブジェクトを指定する * @returns */ function rollListener(conf = {}) { //rollListnerの指定があればそちらに任せ、そうでなければDiceSourceを適宜補完して処理する const { onRollRequest, diceSource = DiceSource_1.randomDiceSource } = conf; return { onRollRequest: onRollRequest !== undefined ? (rollReq) => { onRollRequest(rollReq); } : (rollReq) => __awaiter(this, void 0, void 0, function* () { const roll = yield Promise.resolve(diceSource.roll()); rollReq(roll); }), }; } exports.rollListener = rollListener; /** * SingleGameDispatcherをロール目を意識しない形に読み替える * @param singleGameDispatcher * @param rollListener * @returns */ function withRL(singleGameDispatcher, rollListener) { return Object.assign(Object.assign({}, singleGameDispatcher), { doRoll: (state) => { return (listener) => { rollListener.onRollRequest((dices) => { const result = singleGameDispatcher.doRoll(state, dices); result(listener); }); }; }, doOpeningRoll: (state) => { return (listener) => { rollListener.onRollRequest((dices) => { const result = singleGameDispatcher.doOpeningRoll(state, dices); result(listener); }); }; } }); } exports.withRL = withRL;