void Output(IEnumerable <KeyCode> keys, KeyCodeEvent output) { if (keys == null) { return; } foreach (var key in keys) { output.Invoke(key); } }
private async Task OnKeyCodeTick() { try { if (!KeyCodeTest) { await BaseScript.Delay(100); return; } var key = new KeyCodeEvent(); var vals = Enum.GetValues(typeof(Control)); var count = 0; foreach (Control ctrl in vals) { if (Game.IsControlJustPressed(2, ctrl)) { key.Controls.Add($"{Enum.GetName( typeof( Control ), ctrl ) ?? "UNK_KEY"}[{count}]"); } count++; } if (key.Controls.Any()) { _keyEvents.Add(key); Log.Info($"[KeyCode] {{ {string.Join( ", ", key.Controls )} }}"); } // Clean up list every 5 seconds if ((DateTime.UtcNow - _lastCollection).TotalSeconds > 1f) { _keyEvents.RemoveAll(e => (DateTime.UtcNow - e.Time).TotalSeconds > 5f); _lastCollection = DateTime.UtcNow; } } catch (Exception ex) { Log.Error(ex); } }