public async Task <IActionResult> Kick([FromBody] Kick.Request req) { var requester = new evomatching.ProtocolModels.PremadeGroup.Kick(); 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.Kick.Response.ResultCode.Ok: return(Ok(new Kick.Response())); default: return(BuildErrorResponse(Error.LowCode.BadRequest)); } }
public async Task <IActionResult> Kick( [FromBody] Kick.Request req, [FromServices] GeneralManager gm) { var res = new Kick.Response(); await gm.EnqueueJob(async() => { if (gm.BattleEntryManager.Entried(req.playerIdSrc.Value)) { res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.AlreadyEntry; return; } if (null != gm.MatchManager.GetAssignedMatch(req.playerIdSrc.Value)) { res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.AlreadyBattle; return; } var group = gm.PremadeGroupManager.GetBelongs(req.playerIdSrc.Value); if (group == null) { res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.NotGroup; return; } if (group.LeaderPlayerId != req.playerIdSrc) { res.resultCode = ProtocolModels.PremadeGroup.Kick.Response.ResultCode.NotLeader; return; } List <long> playerIds = new List <long>(); for (int i = 0; i < group.Players.Count; i++) { var member = group.Players[i]; if (member.PlayerId == req.playerIdDst.Value) { continue; } playerIds.Add(member.PlayerId); } Logger.Logging( new LogObj().AddChild(new LogModels.UpdateParty { GroupId = group.GroupId, PlayerId = req.playerIdDst.Value, Date = DateTime.UtcNow, Type = evolib.PremadeGroup.Type.Kick, PlayerIds = playerIds, }) ); var members = gm.PremadeGroupManager.Kick(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.Kick.Response.ResultCode.Ok; }); return(Ok(res)); }