void CancelOnlineStatusRequest() { CancelInvoke("CreateOnlineStatusRequest"); if (m_OnlineStatusRequest != null) { m_OnlineStatusRequest.Cancel(); m_OnlineStatusRequest = null; } }
// ========================================================================================================================= // === online status ======================================================================================================= void CreateOnlineStatusRequest() { CancelOnlineStatusRequest(); string[] friends = new string[m_Friends.Count]; for (int idx = 0; idx < m_Friends.Count; ++idx) { friends[idx] = m_Friends[idx].PrimaryKey; } m_OnlineStatusRequest = LobbyClient.CreatePlayerStatusRequest(friends, OnOnlineStatusRequest); }
void OnOnlineStatusRequest(LobbyClient.PlayerStatusMultiRequest request) { if (request.HasSucceeded == true) { foreach (var friend in m_Friends) { LobbyClient.PlayerStatus status = request.GetPlayerStatus(friend.PrimaryKey); if (status == null || status.IsOnline == false) { friend.OnlineStatus = E_OnlineStatus.Offline; } else { friend.OnlineStatus = status.IsInGame == true ? E_OnlineStatus.InGame : E_OnlineStatus.InLobby; friend.LastOnlineDate = GuiBaseUtils.DateToEpoch(CloudDateTime.UtcNow); } } OnFriendListChanged(); } Invoke("CreateOnlineStatusRequest", ONLINE_STATUS_FREQUENCY); }