private static void on_answer_group_invite(AnswerGroupInviteResult r) { if (r.InGroup) { if (group != null) { Debug.LogError("Server told us we just answered a group invite and the group still exists. But according to the data store a group was formed before."); } if (r.Leader == null) { Debug.LogError("The group leader is null!!"); return; } if (r.PlayersInGroup == null) { Debug.LogError("There are no players in the group."); } group = new Group(); group.leader = r.Leader; group.normal_members.AddRange(r.PlayersInGroup); } }
public override Task <AnswerGroupInviteResult> AnswerGroupInvite(AnswerGroupInviteAttempt request, ServerCallContext context) { var result = new AnswerGroupInviteResult { InGroup = false }; Player player; try { player = auth.GetPlayer(context); if (player == null) { return(Task.FromResult(result)); } } catch (Exception e) { Log.Exception(e); return(Task.FromResult(result)); } return(in_memory_worker.Schedule(() => { try { var group = player.group; if (group == null) { return result; } if (!request.Accepted) { if (!group.RemoveInvitedMember(player)) { return result; } return result; } else { if (!group.UpdatePlayerToMember(player)) { return result; } if (player.arena_state == ArenaState.Queued) { match_maker.RemovePlayer(player); } result.InGroup = true; result.Leader = group.leader.BasicPlayerInfo(); foreach (var group_member in group.players) { if (group_member == player || group_member == group.leader) { continue; } result.PlayersInGroup.Add(group_member.BasicPlayerInfo()); } return result; } } catch (Exception e) { Log.Exception(e); return result; } })); }