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