public void MatchAMultiPlayerParty() { // Create a party with multiple players within it. var partyId = _partyClient.CreateParty(new CreatePartyRequest(), _leaderMetadata) .PartyId; var pitAnotherMember = CreatePlayerIdentityTokenForPlayer(MemberPlayerId); var inviteAnotherPlayer = _inviteClient.CreateInvite(new CreateInviteRequest { ReceiverPlayerId = MemberPlayerId }, _leaderMetadata).InviteId; Assert.NotNull(inviteAnotherPlayer); _partyClient.JoinParty(new JoinPartyRequest { PartyId = partyId }, new Metadata { { PitRequestHeaderName, pitAnotherMember } }); // Join matchmaking. _gatewayClient.Join(new JoinRequest { MatchmakingType = "match1" }, _leaderMetadata); AssertWithinSeconds(10, () => { var leaderStatus = _gatewayClient.GetJoinStatus(new GetJoinStatusRequest { PlayerId = LeaderPlayerId }, _leaderMetadata); if (!leaderStatus.Complete) { return(false); } Assert.AreEqual("test_deployment_1", leaderStatus.DeploymentName); Assert.False(string.IsNullOrEmpty(leaderStatus.LoginToken)); // Verify that the other member has been matched into the same deployment as the leader. var otherMemberStatus = _gatewayClient.GetJoinStatus(new GetJoinStatusRequest { PlayerId = MemberPlayerId }, new Metadata { { PitRequestHeaderName, pitAnotherMember } }); Assert.True(otherMemberStatus.Complete); Assert.AreEqual("test_deployment_1", otherMemberStatus.DeploymentName); Assert.False(string.IsNullOrEmpty(otherMemberStatus.LoginToken)); return(true); }); // Clean-up. _partyClient.DeleteParty(new DeletePartyRequest(), _leaderMetadata); _inviteClient.DeleteInvite(new DeleteInviteRequest { InviteId = inviteAnotherPlayer }, _leaderMetadata); }
public void MatchAMultiPlayerParty() { // Create a party with multiple players within it. var partyId = _partyClient.CreateParty(new CreatePartyRequest(), _leaderMetadata) .PartyId; var pitAnotherMember = CreatePlayerIdentityTokenForPlayer(MemberPlayerId); var inviteAnotherPlayer = _inviteClient.CreateInvite(new CreateInviteRequest { ReceiverPlayerId = MemberPlayerId }, _leaderMetadata).InviteId; Assert.NotNull(inviteAnotherPlayer); _partyClient.JoinParty(new JoinPartyRequest { PartyId = partyId }, new Metadata { { PitRequestHeaderName, pitAnotherMember } }); // Join matchmaking. _gatewayClient.Join(new JoinRequest { MatchmakingType = "match1" }, _leaderMetadata); AssertWithinSeconds(10, () => { var leaderOp = _operationsClient.GetOperation(LeaderPlayerId, CallSettings.FromHeader(PitRequestHeaderName, _leaderPit)); if (!leaderOp.Done) { return(false); } var assignment = leaderOp.Response.Unpack <JoinResponse>(); Assert.AreEqual("test_deployment_1", assignment.DeploymentName); Assert.False(string.IsNullOrEmpty(assignment.LoginToken)); // Verify that the other member has been matched into the same deployment as the leader. var otherMemberOp = _operationsClient.GetOperation(MemberPlayerId, CallSettings.FromHeader(PitRequestHeaderName, CreatePlayerIdentityTokenForPlayer(MemberPlayerId))); Assert.True(otherMemberOp.Done); var memberAssignment = otherMemberOp.Response.Unpack <JoinResponse>(); Assert.AreEqual("test_deployment_1", memberAssignment.DeploymentName); Assert.False(string.IsNullOrEmpty(memberAssignment.LoginToken)); return(true); }); // Clean-up. _partyClient.DeleteParty(new DeletePartyRequest(), _leaderMetadata); _inviteClient.DeleteInvite(new DeleteInviteRequest { InviteId = inviteAnotherPlayer }, _leaderMetadata); }
public void AllowPlayersToSendInvites() { // Create a party. var senderPit = CreatePlayerIdentityTokenForPlayer(LeaderPlayerId); var partyId = _partyClient .CreateParty(new CreatePartyRequest(), new Metadata { { PitRequestHeaderName, senderPit } }).PartyId; // Send invites to other players. var createInviteRequest = new CreateInviteRequest { ReceiverPlayerId = PlayerId1 }; var inviteId1 = _inviteClient .CreateInvite(createInviteRequest, new Metadata { { PitRequestHeaderName, senderPit } }) .InviteId; Assert.NotNull(inviteId1); createInviteRequest = new CreateInviteRequest { ReceiverPlayerId = PlayerId2 }; var inviteId2 = _inviteClient .CreateInvite(createInviteRequest, new Metadata { { PitRequestHeaderName, senderPit } }) .InviteId; Assert.NotNull(inviteId2); // Verify that the invites were successfully stored. var invite1 = _inviteClient.GetInvite(new GetInviteRequest { InviteId = inviteId1 }, new Metadata { { PitRequestHeaderName, senderPit } }).Invite; Assert.AreEqual(inviteId1, invite1.Id); Assert.AreEqual(LeaderPlayerId, invite1.SenderPlayerId); Assert.AreEqual(PlayerId1, invite1.ReceiverPlayerId); Assert.AreEqual(partyId, invite1.PartyId); Assert.AreEqual(Invite.Types.Status.Pending, invite1.CurrentStatus); var invite2 = _inviteClient.GetInvite(new GetInviteRequest { InviteId = inviteId2 }, new Metadata { { PitRequestHeaderName, senderPit } }).Invite; Assert.AreEqual(inviteId2, invite2.Id); Assert.AreEqual(LeaderPlayerId, invite2.SenderPlayerId); Assert.AreEqual(PlayerId2, invite2.ReceiverPlayerId); Assert.AreEqual(partyId, invite2.PartyId); Assert.AreEqual(Invite.Types.Status.Pending, invite2.CurrentStatus); // Verify that the sender has the invites in its outbound invites. var senderPlayerInvites = _inviteClient.ListAllInvites(new ListAllInvitesRequest(), new Metadata { { PitRequestHeaderName, senderPit } }); Assert.AreEqual(2, senderPlayerInvites.OutboundInvites.Count); Assert.AreEqual(invite1, senderPlayerInvites.OutboundInvites[0]); Assert.AreEqual(invite2, senderPlayerInvites.OutboundInvites[1]); // Verify that both receivers have the invite in their inbound invites. var receiverPit1 = CreatePlayerIdentityTokenForPlayer(PlayerId1); var receiverPlayerInvites1 = _inviteClient.ListAllInvites(new ListAllInvitesRequest(), new Metadata { { PitRequestHeaderName, receiverPit1 } }); Assert.AreEqual(1, receiverPlayerInvites1.InboundInvites.Count); Assert.AreEqual(invite1, receiverPlayerInvites1.InboundInvites[0]); var receiverPit2 = CreatePlayerIdentityTokenForPlayer(PlayerId2); var receiverPlayerInvites2 = _inviteClient.ListAllInvites(new ListAllInvitesRequest(), new Metadata { { PitRequestHeaderName, receiverPit2 } }); Assert.AreEqual(1, receiverPlayerInvites2.InboundInvites.Count); Assert.AreEqual(invite2, receiverPlayerInvites2.InboundInvites[0]); // Cleanup. _inviteClient.DeleteInvite(new DeleteInviteRequest { InviteId = inviteId1 }, new Metadata { { PitRequestHeaderName, senderPit } }); _inviteClient.DeleteInvite(new DeleteInviteRequest { InviteId = inviteId2 }, new Metadata { { PitRequestHeaderName, senderPit } }); _partyClient.DeleteParty(new DeletePartyRequest(), new Metadata { { PitRequestHeaderName, senderPit } }); }