public void UpdateLfgMembers(S_PARTY_MEMBER_INFO p) { if (TryGetLfg(p.Id, "", "", out var lfg)) { lfg.MembersCount = p.Members.Count; } }
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(); }
//for lfg, not used public static void HandlePartyMemberInfo(S_PARTY_MEMBER_INFO p) { ChatWindowViewModel.Instance.UpdateLfgMembers(p); }
private void OnPartyMemberInfo(S_PARTY_MEMBER_INFO m) { UpdateLfgMembers(m.Id, m.Members.Count); }