UNPKG

dotup-ts-node-skills-game

Version:
148 lines (146 loc) 5.12 kB
"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