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); }
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); } }
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); }
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()); }
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); }