Пример #1
0
 public void UpdateLfgMembers(S_PARTY_MEMBER_INFO p)
 {
     if (TryGetLfg(p.Id, "", "", out var lfg))
     {
         lfg.MembersCount = p.Members.Count;
     }
 }
Пример #2
0
        public static void HandlePartyMemberInfo(S_PARTY_MEMBER_INFO packet)
        {
            ChatWindowManager.Instance.UpdateLfgMembers(packet);
            if (!Settings.SettingsHolder.LfgEnabled) return;

            var lfg = WindowManager.LfgListWindow.VM.Listings.FirstOrDefault(listing => listing.LeaderId == packet.Id || packet.Members.Any(member => member.PlayerId == listing.LeaderId));
            if (lfg == null) return;
            //lfg.Players.Clear();
            packet.Members.ForEach(member =>
            {
                if (lfg.Players.Any(toFind => toFind.PlayerId == member.PlayerId))
                {
                    var target = lfg.Players.FirstOrDefault(player => player.PlayerId == member.PlayerId);
                    if (target == null) return;
                    target.IsLeader = member.IsLeader;
                    target.Online = member.Online;
                }
                else lfg.Players.Add(member);
            });
            var toDelete = new List<uint>();
            lfg.Players.ToList().ForEach(player =>
            {
                if (packet.Members.All(newMember => newMember.PlayerId != player.PlayerId)) toDelete.Add(player.PlayerId);
                toDelete.ForEach(targetId => lfg.Players.Remove(lfg.Players.FirstOrDefault(playerToRemove => playerToRemove.PlayerId == targetId)));
            });
            lfg.LeaderId = packet.Id;
            var leader = lfg.Players.FirstOrDefault(u => u.IsLeader);
            if (leader != null) lfg.LeaderName = leader.Name;
            if (WindowManager.LfgListWindow.VM.LastClicked != null && WindowManager.LfgListWindow.VM.LastClicked.LeaderId == lfg.LeaderId) lfg.IsExpanded = true;
            lfg.PlayerCount = packet.Members.Count;
            WindowManager.LfgListWindow.VM.NotifyMyLfg();
        }
Пример #3
0
 //for lfg, not used
 public static void HandlePartyMemberInfo(S_PARTY_MEMBER_INFO p)
 {
     ChatWindowViewModel.Instance.UpdateLfgMembers(p);
 }
Пример #4
0
 private void OnPartyMemberInfo(S_PARTY_MEMBER_INFO m)
 {
     UpdateLfgMembers(m.Id, m.Members.Count);
 }