コード例 #1
0
        public static bool TryRollCallOptionalResult(this InputHandlerEventRequest request, out Dictionary <string, string> results, params string[] gadgetNames)
        {
            var rollcallEvent = request.Events.FirstOrDefault();

            if (rollcallEvent == null)
            {
                results = null;
                return(false);
            }

            if (rollcallEvent.Name == RollCallCompleteName)
            {
                return(TryRollCallResult(request, out results, gadgetNames));
            }

            if (rollcallEvent.Name != TimedOutName)
            {
                results = null;
                return(false);
            }

            var gadgetIds = rollcallEvent.InputEvents.Where(e => e.Action == PatternAction.Down).Select(e => e.GadgetId).Distinct().ToArray();
            var maxZip    = Math.Min(gadgetIds.Length, gadgetNames.Length);

            results = gadgetNames.Take(maxZip).Zip(gadgetIds.Take(maxZip), Tuple.Create).ToDictionary(a => a.Item1, a => a.Item2);
            return(true);
        }
コード例 #2
0
ファイル: InCaseOfDraw.cs プロジェクト: stoiveyp/VoiceAndMore
        public static void HandleEventGame(InputHandlerEventRequest request)
        {
            var raisedEvent = request.Events.First();

            if (raisedEvent.Name == "lose")
            {
                var totalRaised = raisedEvent.InputEvents.Count(e => e.Color == "FFF00");
                //TODO: Store percentage as part of move for comparison
                Console.WriteLine(totalRaised);
            }
        }
コード例 #3
0
        public static bool TryMapEventGadget(this InputHandlerEventRequest request, string eventName, out string gadgetId)
        {
            var gadgetEvent = request.Events.FirstOrDefault(e => e.Name == eventName);

            if (gadgetEvent == null)
            {
                gadgetId = null;
                return(false);
            }

            gadgetId = GadgetIds(gadgetEvent).FirstOrDefault();
            return(gadgetId != null);
        }
コード例 #4
0
        public static bool TryMapEventGadgets(this InputHandlerEventRequest request, string eventName,
                                              out Dictionary <string, string> results, params string[] gadgetNames)
        {
            var gadgetEvent = request.Events.FirstOrDefault(e => e.Name == eventName);

            if (gadgetEvent == null)
            {
                results = null;
                return(false);
            }

            var maxZip = Math.Min(GadgetIds(gadgetEvent).Count(), gadgetNames.Length);

            results = gadgetNames.Take(maxZip).Zip(GadgetIds(gadgetEvent).Take(maxZip), Tuple.Create).ToDictionary(a => a.Item1, a => a.Item2);
            return(results.Any());
        }
コード例 #5
0
        public static bool TryRollCallResult(this InputHandlerEventRequest request, out Dictionary <string, string> results, params string[] gadgetNames)
        {
            results = null;
            var rollcallEvent = request.Events.FirstOrDefault(ge => ge.Name == RollCallCompleteName);

            if (rollcallEvent == null)
            {
                return(false);
            }

            if (gadgetNames.Length != rollcallEvent.InputEvents.Length)
            {
                throw new InvalidOperationException($"Gadget Mismatch - roll call event has returned {rollcallEvent.InputEvents.Length} events and there are {gadgetNames.Length} names");
            }

            results = gadgetNames.Zip(rollcallEvent.InputEvents, (name, inputEvent) => new { name, id = inputEvent.GadgetId }).ToDictionary(a => a.name, a => a.id);
            return(true);
        }