示例#1
0
        private async void ChampSelectSessionChanged(object sender, LeagueEvent e)
        {
            var session = e?.Data?.ToObject <Session>();

            if (session == null)
            {
                return;
            }

            var actions        = session.actions.SelectMany(inner => inner);
            var myActions      = actions.Where(action => action.actorCellId == session.localPlayerCellId);
            var myActiveAction = myActions.FirstOrDefault(action => action.isInProgress && session.timer.phase == "BAN_PICK");

            if (myActiveAction == null)
            {
                return;
            }

            if (myActiveAction.type == "ban")
            {
                // Get first available champ in banlist!
                var bans = session.bans.myTeamBans.Concat(session.bans.theirTeamBans);
                //var hovers = session.actions // TODO: Check for hovered champions!

                foreach (var championId in championBanList)
                {
                    if (bans.Contains(championId))
                    {
                        continue;
                    }

                    await ChampionSelectService.BanChampionAsync(myActiveAction, championId);
                }
            }
        }
示例#2
0
 private void ChampSelectSFXChanged(object sender, LeagueEvent e)
 {
     if (CurrentSettings.PickBan)
     {
         Logging.Verbose($"SFX Change: {e.Data}");
     }
 }
示例#3
0
 private void ChampSelectChanged(object sender, LeagueEvent e)
 {
     if (CurrentSettings.PickBan)
     {
         BroadcastHub.clientController.ApplyNewState(e);
     }
 }
示例#4
0
        private void ClientStateChanged(object sender, LeagueEvent e)
        {
            string eventType = e.Data.ToString();

            Logging.Verbose($"New League State: {eventType}");
            switch (eventType)
            {
            case "ChampSelect":
                ChampSelectStart?.Invoke(this, EventArgs.Empty);
                break;

            case "InProgress":
                GameStart?.Invoke(this, EventArgs.Empty);
                break;

            default:
                break;
            }
            if (!eventType.Equals("InProgress") && BroadcastHubController.CurrentLeagueState.Equals("InProgress"))
            {
                GameStop?.Invoke(this, EventArgs.Empty);
            }
            if (!eventType.Equals("ChampSelect") && BroadcastHubController.CurrentLeagueState.Equals("ChampSelect"))
            {
                ChampSelectStop?.Invoke(this, EventArgs.Empty);
            }
            BroadcastHubController.CurrentLeagueState = eventType;
        }
示例#5
0
        private void OnChampSelectSessionTriggered(object sender, LeagueEvent e)
        {
            var session = e.Data.ToObject <Session>();

            if (session == null || (SentActions.Count > 0 && string.IsNullOrEmpty(session.timer.phase)))
            {
                SentActions = new List <Models.ChampSelect.Action>();
            }
        }
示例#6
0
        private async void ChampSelectSessionChanged(object sender, LeagueEvent e)
        {
            var session = e?.Data?.ToObject <Session>();

            if (session == null)
            {
                Console.WriteLine("Data is null!");
                return;
            }

            var currentAction = session?.actions?.LastOrDefault()?.LastOrDefault();

            if (currentAction == null || currentAction.actorCellId != session.localPlayerCellId)
            {
                return;
            }

            // TODO: Fails bc bans are global (multiple active actorCells) => Use RiftExplorer to check state when everyone is able to ban
            if (currentAction.actorCellId == session.localPlayerCellId && currentAction.type == "ban")
            {
                // Get first available champ in banlist!

                var bans = session.bans.myTeamBans.Concat(session.bans.theirTeamBans);

                foreach (var championId in championBanList)
                {
                    if (bans.Contains(championId))
                    {
                        continue;
                    }

                    await ChampionSelectService.BanChampionAsync(currentAction, championId);
                }

                Console.WriteLine($"Action {currentAction.id} ({currentAction.type}): {(currentAction.completed ? "completed" : "in Progress")}");
            }
        }
示例#7
0
        private async void OnReadyCheck(object sender, LeagueEvent e)
        {
            ReadyCheckResponse?res;

            try
            {
                res = e?.Data?.ToObject <ReadyCheckResponse>();
            }
            catch
            {
                return;
            }

            if (autoAccept && res?.playerResponse == PlayerResponse.None)
            {
                Console.WriteLine("Game found!");

                var api = await LeagueClientApi.ConnectAsync();

                await api.RequestHandler.GetJsonResponseAsync(HttpMethod.Post, "/lol-matchmaking/v1/ready-check/accept");

                Console.WriteLine("Accepted Readycheck!");
            }
        }
示例#8
0
        private void OnGameFlowChanged(object sender, LeagueEvent e)
        {
            var result = e.Data.ToString();

            if (result == "None")
            {
                State = State.MainMenu;
            }
            else if (result == "ChampSelect")
            {
                State = State.ChampSelect;
            }
            else if (result == "Lobby")
            {
                State = State.Lobby;
            }
            else if (result == "InProgress")
            {
                State = State.InProgress;
            }

            // Print new state and set work to complete.
            this.Dispatcher.Invoke(() =>
            {
                Status.Content = $"Status update: Entered {State}.";

                if (State == State.ChampSelect && !Timer.IsEnabled)
                {
                    Timer.Start();
                }
                else if (State != State.ChampSelect && Timer.IsEnabled)
                {
                    Timer.Stop();
                }
            });
        }
示例#9
0
 private void OnChampSelectSessionTriggered(object sender, LeagueEvent e)
 {
 }
示例#10
0
        private void ProcessRequest(LeagueEvent leagueEvent)
        {
            if (leagueEvent.Completed != null)
                return;

            _gameActions[leagueEvent.Action].Invoke(leagueEvent.Options);

            leagueEvent.Completed = DateTime.UtcNow;

            _services.AdminSvc.Put(leagueEvent.ConvertTo<UpdateLeagueEvent>());
        }
示例#11
0
 private static void LolClient_OnChampSelect(object sender, LeagueEvent e)
 {
     Trace.WriteLine("EHLLO WORLD");
 }
 public void SendEventAsync(IWebSocketContext context, LeagueEvent leagueEvent)
 {
     SendAsync(context, JsonConvert.SerializeObject(leagueEvent));
 }
 public void SendEventToAllAsync(LeagueEvent leagueEvent)
 {
     BroadcastAsync(JsonConvert.SerializeObject(leagueEvent));
 }