UNPKG

dotup-ts-node-skills-game

Version:
106 lines (104 loc) 5.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // tslint:disable const dotup_ts_types_1 = require("dotup-ts-types"); const Enumerations_1 = require("../Constants/Enumerations"); const AnimationBuilder_1 = require("./AnimationBuilder"); const EventsBuilder_1 = require("./EventsBuilder"); const GadgetBuilder_1 = require("./GadgetBuilder"); const RecognizerBuilder_1 = require("./RecognizerBuilder"); class RollCallBuilder { constructor() { this.buttonColors = new Map(); // private recognizerBuilder: RecognizerBuilder; this.proxies = []; } WithProxy(buttonName) { if (Array.isArray(buttonName)) { this.proxies.push(...buttonName); } else { this.proxies.push(buttonName); } return this; } // FindButton(buttonName: string, color: ButtonColors, arg2: string): any { // throw new Error("Method not implemented."); // } WithColor(event, color) { this.buttonColors.set(event, color); return this; } Build(timeout, saveRequestId) { let rb = new RecognizerBuilder_1.RecognizerBuilder(); const allRecognizers = {}; const allEvents = {}; // Build recognizer and events for each button this.proxies.forEach((proxyName, index) => { // Recognizer allRecognizers[proxyName] = rb.WithGadgets(proxyName).WithFuzzy(true).Build(); // Event const event = EventsBuilder_1.EventsBuilder.GetButtonDown(proxyName, index === this.proxies.length - 1); dotup_ts_types_1.ObjectTools.CopyEachSource(event, allEvents); }); // Build button colors // const lights = this.SetButtons(timeout, this.proxies); // Add timeout const timeoutEvent = EventsBuilder_1.EventsBuilder.GetTimeoutEvent(); dotup_ts_types_1.ObjectTools.CopyEachSource(timeoutEvent, allEvents); // Build recognizer for completed // rb = new RecognizerBuilder('compleded', RecognizerBuilderMode.PatternForEachProxy); // rb.WithFuzzy(true); // this.proxies.forEach(item => rb.WithProxy(item)); // Merge recognizer // ObjectTools.CopyEachSource(rb.Build(), allRecognizers); const start = GadgetBuilder_1.GadgetBuilder.startInputHandler(timeout, allEvents, saveRequestId, allRecognizers, this.proxies); // console.log('### ROLLCALL ###'); // console.log(JSON.stringify(start, undefined, 2)); return [start]; } BuildButtonGroup(eventName, timeout, saveRequestId) { let rb = new RecognizerBuilder_1.RecognizerBuilder(); const allRecognizers = {}; const allEvents = {}; // Recognizer allRecognizers[eventName] = RecognizerBuilder_1.RecognizerBuilder.ButtonGroupDown(this.proxies); // const recognizer = this.BuildRecognizer(eventName, this.proxies); // ObjectTools.CopyEachSource(recognizer, allRecognizers); // Event const event = EventsBuilder_1.EventsBuilder.GetButtonGroupDown(eventName, true); dotup_ts_types_1.ObjectTools.CopyEachSource(event, allEvents); // Build button colors const lights = this.SetButtons(timeout, this.proxies); // Add timeout const timeoutEvent = EventsBuilder_1.EventsBuilder.GetTimeoutEvent(); dotup_ts_types_1.ObjectTools.CopyEachSource(timeoutEvent, allEvents); // Build recognizer for completed // rb = new RecognizerBuilder('compleded', RecognizerBuilderMode.PatternForEachProxy); // rb.WithFuzzy(true); // this.proxies.forEach(item => rb.WithProxy(item)); // Merge recognizer // ObjectTools.CopyEachSource(rb.Build(), allRecognizers); const start = GadgetBuilder_1.GadgetBuilder.startInputHandler(timeout, allEvents, saveRequestId, allRecognizers, this.proxies); // console.log('### ROLLCALL ###'); // console.log(JSON.stringify(start, undefined, 2)); return [start, ...lights]; } SetButtons(timeout, targets) { const ids = Array.isArray(targets) ? targets : [targets]; const noneColor = this.buttonColors.get(Enumerations_1.TriggerEvent.none) || Enumerations_1.ButtonColor.off; const noneLight = GadgetBuilder_1.GadgetBuilder.setLight([], AnimationBuilder_1.AnimationBuilder.GetSolidAnimation(1, noneColor), Enumerations_1.TriggerEvent.none); const downColor = this.buttonColors.get(Enumerations_1.TriggerEvent.buttonDown) || Enumerations_1.ButtonColor.green; const downLight = GadgetBuilder_1.GadgetBuilder.setLight([], AnimationBuilder_1.AnimationBuilder.GetSolidAnimation(1, downColor, 500), Enumerations_1.TriggerEvent.buttonDown); return [downLight, noneLight]; } } exports.RollCallBuilder = RollCallBuilder; ; // const builder = new RollCallBuilder('MyRollcall'); // builder // .WithProxy('peter') // .WithProxy('lena'); // const result = builder.Build(); // console.log(JSON.stringify(result, undefined, 2)); //# sourceMappingURL=RollcallBuilder.js.map