public async Task <IActionResult> TransferHost( [FromBody] TransferHost.Request req, [FromServices] GeneralManager gm) { var res = new TransferHost.Response(); await gm.EnqueueJob(async() => { var group = gm.PremadeGroupManager.GetBelongs(req.playerIdSrc.Value); if (group == null) { res.resultCode = ProtocolModels.PremadeGroup.TransferHost.Response.ResultCode.NotGroup; return; } if (group.LeaderPlayerId != req.playerIdSrc) { res.resultCode = ProtocolModels.PremadeGroup.TransferHost.Response.ResultCode.NotLeader; return; } var members = gm.PremadeGroupManager.TransferLeader(req.playerIdSrc.Value, req.playerIdDst.Value); for (int i = 0; i < members.Count; i++) { var player = members[i]; await new ConnectionQueue(player.SessionId).EnqueueAsync( gm.CreatePremadeGroupQueueData(player.PlayerId) ); } res.resultCode = ProtocolModels.PremadeGroup.TransferHost.Response.ResultCode.Ok; }); return(Ok(res)); }
public async Task <IActionResult> TransferHost([FromBody] TransferHost.Request req) { var requester = new evomatching.ProtocolModels.PremadeGroup.TransferHost(); requester.request.playerIdSrc = SelfHost.playerInfo.playerId; requester.request.playerIdDst = req.playerId; var response = await requester.PostAsyncXXX(MatchingServerInfo.AreaUri(SelfHost.matchingArea)); if (response.StatusCode != System.Net.HttpStatusCode.OK) { return(BuildErrorResponse(Error.LowCode.ServerInternalError)); } switch (response.Payload.resultCode) { case evomatching.ProtocolModels.PremadeGroup.TransferHost.Response.ResultCode.Ok: return(Ok(new TransferHost.Response())); default: return(BuildErrorResponse(Error.LowCode.BadRequest)); } }