IEnumerator SetFriendNote(string friendName, string groupName, string note, LobbyMessageInfo info) { LobbyPlayer player = LobbyServer.GetLobbyPlayer(info); LogManager.General.Log(string.Format("'{0}' sets friends list note for '{1}' to '{2}'", player.name, friendName, note)); // Find friends group var selectedGroup = player.friends.GetGroupByName(groupName); // Get account ID string friendAccountId = null; yield return(LobbyGameDB.GetAccountIdByPlayerName(friendName, data => { friendAccountId = data; })); // Error getting account ID? if (friendAccountId == null) { Lobby.RPC("SetFriendNotePlayerDoesntExistError", info.sender, friendName); yield break; } // Remove player from the group selectedGroup.friends.Find(friend => friend.accountId == friendAccountId).note = note; // Save friends list in database yield return(FriendsDB.SetFriends( player.accountId, player.friends, null )); }
IEnumerator AddFriend(string friendName, string groupName, LobbyMessageInfo info) { LobbyPlayer player = LobbyServer.GetLobbyPlayer(info); LogManager.General.Log(string.Format("'{0}' added '{1}' to friend list group '{2}'", player.name, friendName, groupName)); // Find friends group var selectedGroup = player.friends.GetGroupByName(groupName); // Get account ID string friendAccountId = null; yield return(LobbyGameDB.GetAccountIdByPlayerName(friendName, data => { friendAccountId = data; })); // Error getting account ID? if (friendAccountId == null) { Lobby.RPC("FriendAddPlayerDoesntExistError", info.sender, friendName); yield break; } // Trying to add yourself? if (friendAccountId == player.accountId) { Lobby.RPC("FriendAddCantAddYourselfError", info.sender, friendName); yield break; } // Already in friends list? if (!player.friends.CanAdd(friendAccountId)) { Lobby.RPC("FriendAddAlreadyExistsError", info.sender, friendName); yield break; } // Add player to the group selectedGroup.friends.Add(new Friend(friendAccountId)); // Send new friends list player.OnFriendsListLoaded(); // Save friends list in database yield return(FriendsDB.SetFriends( player.accountId, player.friends, null )); }
IEnumerator RemoveFriendsGroup(string groupName, LobbyMessageInfo info) { LobbyPlayer player = LobbyServer.GetLobbyPlayer(info); LogManager.General.Log(string.Format("'{0}' removed friends group called '{1}'", player.name, groupName)); // Remove it player.friends.RemoveGroup(groupName); // Save friends list in database yield return(FriendsDB.SetFriends( player.accountId, player.friends, null )); }
// Account login void OnAccountLoggedIn(Account account) { // Save the reference in a dictionary var player = new LobbyPlayer(account); // Disconnected already? // This can happen if the database takes too much time to respond. if (player.disconnected) { LogManager.General.LogWarning("Peer disconnected already, interrupting login process for: " + player.peer); return; } LogManager.General.Log("Account '" + account.name + "' logged in."); // Set online status player.onlineStatus = OnlineStatus.Online; // Async: Retrieve the player information SendPublicAccountInfo( player.accountId, // Account ID player // Receiver ); // Others SettingsDB.GetInputSettings(player); AccessLevelsDB.GetAccessLevel(player); FriendsDB.GetFriends(player); FriendsDB.GetFollowers(player); // Async: Set last login date LobbyGameDB.SetLastLoginDate(player, System.DateTime.UtcNow); // Register access to this account by this IP IPInfoDB.RegisterAccountAccess(player.ip, player.accountId); // Save country player.UpdateCountry(); }
IEnumerator RemoveFriend(string friendName, string groupName, LobbyMessageInfo info) { LobbyPlayer player = LobbyServer.GetLobbyPlayer(info); LogManager.General.Log(string.Format("'{0}' removed '{1}' from friend list group '{2}'", player.name, friendName, groupName)); // Find friends group var selectedGroup = player.friends.GetGroupByName(groupName); // Get account ID string friendAccountId = null; yield return(LobbyGameDB.GetAccountIdByPlayerName(friendName, data => { friendAccountId = data; })); // Error getting account ID? if (friendAccountId == null) { Lobby.RPC("FriendRemovePlayerDoesntExistError", info.sender, friendName); yield break; } // Remove player from the group selectedGroup.friends.RemoveAll(friend => friend.accountId == friendAccountId); // Send new friends list player.OnFriendsListLoaded(); // Save friends list in database yield return(FriendsDB.SetFriends( player.accountId, player.friends, null )); }