dotup-ts-node-skills-game
Version:
Develop alexa typescript games
148 lines (146 loc) • 5.12 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable:newline-before-return
const Enumerations_1 = require("../Constants/Enumerations");
class EventsBuilder {
constructor() {
this.meets = [];
// tslint:disable-next-line:no-any
this.event = {};
this.event.shouldEndInputHandler = false;
this.event.maximumInvocations = 1;
}
static GetButtonDown(recognizerName, shouldEndInputHandler = true) {
const eb = new EventsBuilder();
return eb
.WithEventName(`${Enumerations_1.EventNames.ButtonDown}_${recognizerName}`)
.ForRecognizer(recognizerName)
.MaximumInvocations(1)
.ShouldEndInputHandler(shouldEndInputHandler)
.ReportMode(Enumerations_1.EventReportMode.matches)
.BuildObject();
}
static GetButtonGroupDown(recognizerName, shouldEndInputHandler = true) {
const eb = new EventsBuilder();
return eb
.WithEventName(`${Enumerations_1.EventNames.ButtonGroupPressed}_${recognizerName}`)
.ForRecognizer(recognizerName)
.MaximumInvocations(1)
.ShouldEndInputHandler(shouldEndInputHandler)
.ReportMode(Enumerations_1.EventReportMode.matches)
.BuildObject();
}
static GetContinueEvent() {
return new EventsBuilder()
.WithEventName(Enumerations_1.EventNames.Continue)
.ForRecognizer(Enumerations_1.EventNames.Continue)
.FailsWhen(Enumerations_1.EventNames.Exit)
.ReportMode(Enumerations_1.EventReportMode.nothing)
.ShouldEndInputHandler(true)
.BuildObject();
}
static GetExitEvent() {
return new EventsBuilder()
.WithEventName(Enumerations_1.EventNames.Exit)
.ForRecognizer(Enumerations_1.EventNames.Exit)
.FailsWhen(Enumerations_1.EventNames.Continue)
.ReportMode(Enumerations_1.EventReportMode.nothing)
.ShouldEndInputHandler(true)
.BuildObject();
}
static GetRightAnswerEvent() {
return new EventsBuilder()
.WithEventName(Enumerations_1.EventNames.RightAnswer)
.ForRecognizer(Enumerations_1.EventNames.RightAnswer)
.FailsWhen(Enumerations_1.EventNames.WrongAnswer)
.ReportMode(Enumerations_1.EventReportMode.nothing)
.ShouldEndInputHandler(true)
.BuildObject();
}
static GetWrongAnswerEvent() {
return new EventsBuilder()
.WithEventName(Enumerations_1.EventNames.WrongAnswer)
.ForRecognizer(Enumerations_1.EventNames.WrongAnswer)
.ReportMode(Enumerations_1.EventReportMode.nothing)
.ShouldEndInputHandler(true)
.BuildObject();
}
static GetTimeoutEvent() {
return new EventsBuilder()
.WithEventName(Enumerations_1.EventNames.Timeout)
.ForRecognizer('timed out')
.ReportMode(Enumerations_1.EventReportMode.history)
.ShouldEndInputHandler(true)
.BuildObject();
}
WithEventName(eventName) {
this.eventName = eventName;
return this;
}
ForRecognizer(recognizerName) {
this.meets.push(recognizerName);
return this;
}
ReportMode(value) {
this.event.reports = value;
return this;
}
TriggerTimeMilliseconds(value) {
this.event.triggerTimeMilliseconds = value;
this.event.maximumInvocations = undefined;
return this;
}
MaximumInvocations(value) {
this.event.maximumInvocations = value;
return this;
}
FailsWhen(recognizerName) {
if (this.fails === undefined) {
this.fails = [];
}
this.fails.push(recognizerName);
return this;
}
ShouldEndInputHandler(shouldEndInputHandler) {
this.event.shouldEndInputHandler = shouldEndInputHandler;
return this;
}
BuildObject() {
return {
[this.eventName]: this.Build()
};
}
Build() {
this.event.meets = this.meets;
if (this.fails !== undefined) {
this.event.fails = this.fails;
}
if (this.eventName !== undefined) {
this.eventName = this.meets.join('_');
}
const result = this.event;
// Maybe not the best style
this.meets = [];
delete this.fails;
delete this.eventName;
// tslint:disable-next-line:no-any
this.event = {};
return result;
}
}
exports.EventsBuilder = EventsBuilder;
// const builder = new EventsBuilder();
// const x = builder
// .WithEventName('ButtonAssigned')
// .ForRecognizer('peter')
// .ForRecognizer('lena')
// .Build();
// const y = builder
// .ForRecognizer('peter')
// .ForRecognizer('lena')
// .FailsWhen('timeout')
// .Build();
// console.log(JSON.stringify(x, undefined, 2));
// console.log(JSON.stringify(y, undefined, 2));
// console.log('');
//# sourceMappingURL=EventsBuilder.js.map