using LCUSharp; using LCUSharp.Websocket; public class Program { public event EventHandler GameFlowChanged; private readonly TaskCompletionSource _work = new TaskCompletionSource(false); public static async Task Main(string[] args) { Console.WriteLine("Running..."); await new Program().EventExampleAsync(); } public async Task EventExampleAsync() { // Initialize a connection to the league client. var api = await LeagueClientApi.ConnectAsync(); Console.WriteLine("Connected!"); // Register game flow event. GameFlowChanged += OnGameFlowChanged; api.EventHandler.Subscribe("/lol-gameflow/v1/gameflow-phase", GameFlowChanged); // Wait until work is complete. await _work.Task; Console.WriteLine("Done."); } private void OnGameFlowChanged(object sender, LeagueEvent e) { var result = e.Data.ToString(); var state = string.Empty; switch (result) { case "None": state = "main menu"; break; case "Lobby": state = "lobby"; break; case "ChampSelect": state = "champ select"; break; case "GameStart": state = "game started"; break; case "InProgress": state = "game"; break; case "WaitingForStats": state = "waiting for stats"; break; default: state = $"unknown state: {result}"; break; } // Print new state and set work to complete. Console.WriteLine($"Status update: Entered {state}."); _work.SetResult(true); } }