コード例 #1
0
        protected override void GotLobbyStatus(LobbyStatus status)
        {
            lobbyStatus = status;

            if (ChatLobby == null)
            {
                ChatLobby = new GroupChat(RiotChat.GetLobbyRoom(status.InvitationID, status.ChatKey), status.ChatKey);
            }

            foreach (var raw in status.InvitedPlayers)
            {
                if (!Invitees.ContainsKey(raw.SummonerId))
                {
                    var invitee = new LobbyInvitee(raw, this);
                    Invitees.Add(invitee.SummonerID, invitee);
                    OnMemberJoined(invitee);
                }
            }

            if (GroupData != null)
            {
                UpdateSlots();
            }

            if (!loaded)
            {
                OnLoaded();
            }
        }
コード例 #2
0
ファイル: Session.cs プロジェクト: GooogleTHT/LGcl2
 public void ShowInvite(InvitationRequest invite)
 {
     if (invite.InvitationState.Equals("ACTIVE"))
     {
         var user = RiotChat.GetUser(invite.Inviter.summonerId);
         if (ChatManager.Friends.ContainsKey(user))
         {
             ChatManager.Friends[user].Invite = new Invitation(invite);
         }
         else
         {
             OnInvited(invite);
         }
     }
 }
コード例 #3
0
ファイル: QueueLobby.cs プロジェクト: GooogleTHT/LGcl2
        protected virtual void GotLobbyStatus(LobbyStatus status)
        {
            lobbyStatus = status;

            if (ChatLobby == null)
            {
                ChatLobby = new GroupChat(RiotChat.GetLobbyRoom(status.InvitationID, status.ChatKey), status.ChatKey);
            }

            var todo = status.Members.ToDictionary(m => m.SummonerId);

            foreach (var member in Members)
            {
                Member raw;
                if (todo.TryGetValue(member.SummonerID, out raw))
                {
                    member.Update(raw);
                    todo.Remove(member.SummonerID);
                }
                else
                {
                    Members.Remove(member);
                    OnMemberLeft(member);
                }
            }

            foreach (var raw in todo.Values)
            {
                var member = new QueueLobbyMember(raw, this);
                Members.Add(member);
                OnMemberJoined(member);
            }

            foreach (var raw in status.InvitedPlayers)
            {
                if (!Invitees.ContainsKey(raw.SummonerId))
                {
                    var invitee = new LobbyInvitee(raw, this);
                    Invitees.Add(invitee.SummonerID, invitee);
                    OnMemberJoined(invitee);
                }
            }
            if (!loaded)
            {
                OnLoaded();
            }
        }
コード例 #4
0
ファイル: CustomLobby.cs プロジェクト: GooogleTHT/LGcl2
        protected virtual void GotGameData(GameDTO game)
        {
            Data = game;

            if (ChatLobby == null)
            {
                ChatLobby = new GroupChat(RiotChat.GetCustomRoom(game.RoomName, game.Id, game.RoomPassword), game.RoomPassword);
            }

            var participants = game.TeamOne.Concat(game.TeamTwo);
            var left         = new List <CustomLobbyMember>(AllMembers);

            foreach (var thing in participants)
            {
                var player = thing as PlayerParticipant;
                var bot    = thing as BotParticipant;
                int team;
                if (game.TeamOne.Contains(thing))
                {
                    team = 0;
                }
                else
                {
                    team = 1;
                }

                CustomLobbyMember now;

                if (player != null)
                {
                    now = new CustomLobbyMember(player, team, this);
                }
                else if (bot != null)
                {
                    now = new CustomLobbyMember(bot, team, this);
                }
                else
                {
                    throw new Exception("Unknown participant " + thing);
                }

                CustomLobbyMember old = AllMembers.SingleOrDefault(m => m.SummonerID == now.SummonerID);
                if (old != null)
                {
                    TeamOne.Remove(old);
                    TeamTwo.Remove(old);
                    Observers.Remove(old);

                    bool diff = old.Team != now.Team;
                    old.Update(now);
                    if (team == 0)
                    {
                        TeamOne.Add(old);
                    }
                    else
                    {
                        TeamTwo.Add(old);
                    }

                    if (diff)
                    {
                        OnMemberChangeTeam(old);
                    }
                    left.Remove(old);
                }
                else
                {
                    if (team == 0)
                    {
                        TeamOne.Add(now);
                    }
                    else
                    {
                        TeamTwo.Add(now);
                    }

                    OnMemberJoined(now);
                }
            }

            foreach (var thing in game.Observers)
            {
                var now = new CustomLobbyMember(thing, this);

                CustomLobbyMember old = AllMembers.SingleOrDefault(m => m.SummonerID == thing.SummonerId);

                if (old != null)
                {
                    TeamOne.Remove(old);
                    TeamTwo.Remove(old);
                    Observers.Remove(old);

                    bool diff = old.Team != now.Team;
                    old.Update(now);
                    Observers.Add(old);

                    if (diff)
                    {
                        OnMemberChangeTeam(old);
                    }
                    left.Remove(old);
                }
                else
                {
                    Observers.Add(now);

                    OnMemberJoined(now);
                }
            }

            foreach (var member in left)
            {
                TeamOne.Remove(member);
                TeamTwo.Remove(member);
                OnMemberLeft(member);
            }

            if (game.GameState.Contains("CHAMP_SELECT"))
            {
                var champSelect = GameLobby.EnterChampSelect(game);
                OnGameStart(champSelect);
            }

            OnUpdate(game);
            if (!loaded)
            {
                OnLoaded();
            }
        }
コード例 #5
0
        public void Update()
        {
            if (friend.Status == null)
            {
                return;
            }

            long   id = RiotChat.GetSummonerId(friend.User.Jid);
            string name;

            if (Session.Current.Settings.Nicknames.TryGetValue(id, out name))
            {
                NameText.ToolTip = friend.User.Name;
            }
            else
            {
                name = friend.User.Name;
            }
            //TODO Nicknames

            NameText.Content = name;
            MsgText.Content  = friend.Status.Message;
            if (string.IsNullOrWhiteSpace(friend.Status.Message))
            {
                MsgText.Visibility = Visibility.Collapsed;
            }
            else
            {
                MsgText.Visibility = Visibility.Visible;
            }
            ProfileIconDto dto;

            if (DataDragon.IconData.Value.data.TryGetValue(friend.Status.ProfileIcon.ToString(), out dto))
            {
                SummonerIcon.Source = DataDragon.GetProfileIconImage(dto).Load();
            }
            switch (friend.Status.Show)
            {
            case ShowType.chat: StatusText.Foreground = NameText.Foreground = App.ChatBrush; break;

            case ShowType.away: StatusText.Foreground = NameText.Foreground = App.AwayBrush; break;

            case ShowType.dnd: StatusText.Foreground = NameText.Foreground = App.BusyBrush; break;
            }

            TimeText.Visibility = ChampText.Visibility = Visibility.Collapsed;
            if (friend.CurrentGameDTO != null)
            {
                TimeText.Visibility = Visibility.Visible;
                if (friend.CurrentGameInfo == null)
                {
                    long time = friend.Status.TimeStamp - Session.GetMilliseconds();
                    TimeText.Content = "~" + TimeSpan.FromMilliseconds(time).ToString("m\\:ss");
                }
                else if (friend.CurrentGameInfo.gameStartTime == 0)
                {
                    TimeText.Content = "Loading";
                }
                else
                {
                    long time = friend.CurrentGameInfo.gameStartTime - Session.GetMilliseconds();
                    TimeText.Content = TimeSpan.FromMilliseconds(time).ToString("m\\:ss");
                }
                StatusText.Content = QueueType.Values[friend.CurrentGameDTO.QueueTypeName].Value;
                if (!string.IsNullOrEmpty(friend.Status.Champion))
                {
                    ChampText.Visibility = Visibility.Visible;
                    if (friend.Status.Champion == "Random")
                    {
                        ChampText.Content = "Random";
                    }
                    else
                    {
                        ChampText.Content = DataDragon.ChampData.Value.data[friend.Status.Champion].name;
                    }
                }
            }
            else
            {
                StatusText.Content = friend.Status.GameStatus.Value;
            }
            if (friend.Invite != null)
            {
                ChampText.Visibility = Visibility.Visible;
                ChampText.Content    = "Invited you";
            }
        }