Example #1
0
        public async Task <IActionResult> ReportAcceptPlayer(
            [FromBody] ReportAcceptPlayer.Request req, [FromServices] GeneralManager gm)
        {
            var res = new ReportAcceptPlayer.Response
            {
                allowed  = false,
                playerId = -1,
                rating   = 0,
                side     = Battle.Side.Other,
            };

            await gm.EnqueueJob(() =>
            {
                var player = gm.MatchManager.AcceptPlayer(req.battleServerSessionId, req.joinPassword);
                if (player != null)
                {
                    res.allowed  = true;
                    res.playerId = player.PlayerId;
                    res.rating   = player.Rating;
                    res.side     = player.Side;
                }
            });

            return(Ok(res));
        }
        public async Task <IActionResult> ReportAcceptPlayer([FromBody] ReportAcceptPlayer.Request req)
        {
            var requester = new evomatching.ProtocolModels.Matching.ReportAcceptPlayer();

            requester.request.battleServerSessionId = SelfHost.sessionId;
            requester.request.joinPassword          = req.joinPassword;
            var response = await requester.PostAsyncXXX(MatchingServerInfo.AreaUri(SelfHost.matchingArea));

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                return(BuildErrorResponse(Error.LowCode.ServerInternalError));
            }

            var res = new ReportAcceptPlayer.Response
            {
                playerId = response.Payload.playerId,
                allowed  = response.Payload.allowed,
                side     = response.Payload.side,
                rating   = response.Payload.rating,
            };

            if (response.Payload.allowed)
            {
                var player = new Player(response.Payload.playerId);
                await player.FetchAsync();

                res.privilegeLevel = player.Model.privilegeLevel;
                res.sessionId      = player.Model.sessionId;
            }

            return(Ok(res));
        }