dotup-ts-node-skills-game
Version:
Develop alexa typescript games
106 lines (104 loc) • 5.1 kB
JavaScript
"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