/// <summary> /// Updates the list of members of a clan. /// Instantiates UI containing found user data. /// If local user is a part of this clan, updates their <see cref="MyUserState"/> /// using <see cref="SetMyState(ClanUserState)"/>. /// </summary> private void OnClanUserListReceived(IEnumerable <IGroupUserListGroupUser> userList) { _clanMembers.Clear(); // Removing previous results foreach (Transform child in _clanUserList) { Destroy(child.gameObject); } // Searching through results in order to find local user. // If local user belongs to this clan, set their MyUserState // Knowing the role of local user in searched clan allows for better UI handling foreach (IGroupUserListGroupUser user in userList) { if (user.User.Id == _connection.Account.User.Id) { _state.UserClanRank = user.State; break; } } // Adding entries for each user found foreach (IGroupUserListGroupUser user in userList) { ClanUserEntry userEntry = Instantiate(_clanUserEntryPrefab, _clanUserList); userEntry.Init(_connection.Session.UserId); userEntry.SetUser(user.User, user.State, _state.UserClanRank.Value, OnUserSelected, OnUserKick, OnUserPromote, OnUserShowProfile); _clanMembers.Add(userEntry); } RefreshUI(_state); }
/// <summary> /// Invoked upon selecting user from clan member list. /// Shows user interaction panel. /// </summary> private void OnUserSelected(ClanUserEntry sender) { if (_selectedMember == sender) { _selectedMember.HideInteractionPanel(); _selectedMember = null; } else { if (_selectedMember != null) { _selectedMember.HideInteractionPanel(); } _selectedMember = sender; _selectedMember.ShowInteractionPanel(); } }