public IActionResult Leave( [FromBody] Leave.Request req, [FromServices] GeneralManager gm) { gm.EnqueueJob(async() => { if (null != gm.MatchManager.GetAssignedMatch(req.playerId.Value)) { return; } if (gm.BattleEntryManager.Leave(req.playerId.Value, evolib.BattleEntry.Type.Leave)) { await new ConnectionQueue(req.sessionId).EnqueueAsync(new BattleEntryState() { state = BattleEntryState.State.Cancel, }); } var group = gm.PremadeGroupManager.GetBelongs(req.playerId.Value); if (group != null) { List <long> playerIds = new List <long>(); for (int i = 0; i < group.Players.Count; i++) { var member = group.Players[i]; if (member.PlayerId == req.playerId.Value) { continue; } playerIds.Add(member.PlayerId); } Logger.Logging( new LogObj().AddChild(new LogModels.UpdateParty { GroupId = group.GroupId, PlayerId = req.playerId.Value, Date = DateTime.UtcNow, Type = evolib.PremadeGroup.Type.Leave, PlayerIds = playerIds, }) ); } var members = gm.PremadeGroupManager.Leave(req.playerId.Value); for (int i = 0; i < members.Count; i++) { var player = members[i]; await new ConnectionQueue(player.SessionId).EnqueueAsync( gm.CreatePremadeGroupQueueData(player.PlayerId) ); } }); var res = new Leave.Response(); return(Ok(res)); }
public async Task <IActionResult> Leave([FromBody] Leave.Request req) { var requester = new evomatching.ProtocolModels.PremadeGroup.Leave(); requester.request.playerId = SelfHost.playerInfo.playerId; requester.request.sessionId = SelfHost.sessionId; var response = await requester.PostAsyncXXX(MatchingServerInfo.AreaUri(SelfHost.matchingArea)); if (response.StatusCode != System.Net.HttpStatusCode.OK) { return(BuildErrorResponse(Error.LowCode.ServerInternalError)); } var res = new Leave.Response(); return(Ok(res)); }